Botcraft 1.21.4
Loading...
Searching...
No Matches
Entity.cpp
Go to the documentation of this file.
1#include <glad/glad.h>
2
4
5namespace Botcraft
6{
7 namespace Renderer
8 {
9 Entity::Entity(const std::vector<Face>& faces_)
10 {
11 faces = std::deque<Face>(faces_.begin(), faces_.end());
12 face_number = static_cast<unsigned int>(faces.size());
13 }
14
16 {
17
18 }
19
21 {
22 std::lock_guard<std::mutex> lock_faces(mutex_faces);
23 switch (buffer_status)
24 {
26 {
28 std::vector<Face> faces_data(faces.begin(), faces.end());
29 face_number = static_cast<unsigned int>(faces_data.size());
30 glBindBuffer(GL_ARRAY_BUFFER, data_VBO);
31 glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Face) * face_number, faces_data.data());
32 glBindBuffer(GL_ARRAY_BUFFER, 0);
34 break;
35 }
37 {
38 std::vector<Face> faces_data(faces.begin(), faces.end());
39 face_number = static_cast<unsigned int>(faces_data.size());
40 glBindBuffer(GL_ARRAY_BUFFER, data_VBO);
41 glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Face) * face_number, faces_data.data());
42 glBindBuffer(GL_ARRAY_BUFFER, 0);
43 if (face_number == 0)
44 {
47 }
48 else
49 {
51 }
52 break;
53 }
55 break;
56 default:
57 break;
58 }
59 }
60
61 void Entity::UpdateFaces(const std::vector<Face>& faces_)
62 {
63 std::lock_guard<std::mutex> lock_faces(mutex_faces);
65 {
67 }
68
69 faces = std::deque<Face>(faces_.begin(), faces_.end());
70 }
71
73 {
74 std::lock_guard<std::mutex> lock_faces(mutex_faces);
75 if (faces.size() == 0)
76 {
77 return Vector3<float>();
78 }
79
80 return Vector3<float>(
81 faces[0].GetMatrix()[12],
82 faces[0].GetMatrix()[13],
83 faces[0].GetMatrix()[14]
84 );
85 }
86 } // Renderer
87} // Botcraft
Vector3< float > GetApproxPos()
Get an approximate position for this model.
Definition Entity.cpp:72
void UpdateFaces(const std::vector< Face > &faces_)
Definition Entity.cpp:61