5using namespace Tempest;
11 bbox[0] = cen-Vec3(sizeSz,sizeSz,sizeSz);
12 bbox[1] = cen+Vec3(sizeSz,sizeSz,sizeSz);
55 bbox[0].x = vbo[0].pos[0];
56 bbox[0].y = vbo[0].pos[1];
57 bbox[0].z = vbo[0].pos[2];
60 bbox[0].x = std::min(
bbox[0].x,i.pos[0]);
61 bbox[0].y = std::min(
bbox[0].y,i.pos[1]);
62 bbox[0].z = std::min(
bbox[0].z,i.pos[2]);
63 bbox[1].x = std::max(
bbox[1].x,i.pos[0]);
64 bbox[1].y = std::max(
bbox[1].y,i.pos[1]);
65 bbox[1].z = std::max(
bbox[1].z,i.pos[2]);
72void Bounds::assign(
const std::vector<Resources::Vertex>& vbo,
const std::vector<uint32_t>& ibo,
73 size_t iboOffset,
size_t iboLenght) {
83 bbox[0].x = vbo[ibo[0]].pos[0];
84 bbox[0].y = vbo[ibo[0]].pos[1];
85 bbox[0].z = vbo[ibo[0]].pos[2];
87 for(
size_t id=0;
id<iboLenght; ++id) {
88 auto& i = vbo[ibo[iboOffset+id]];
89 bbox[0].x = std::min(
bbox[0].x,i.pos[0]);
90 bbox[0].y = std::min(
bbox[0].y,i.pos[1]);
91 bbox[0].z = std::min(
bbox[0].z,i.pos[2]);
92 bbox[1].x = std::max(
bbox[1].x,i.pos[0]);
93 bbox[1].y = std::max(
bbox[1].y,i.pos[1]);
94 bbox[1].z = std::max(
bbox[1].z,i.pos[2]);
107void Bounds::transformBbox(
const Matrix4x4& m) {
110 {b[0].x,b[0].y,b[0].z},
111 {b[1].x,b[0].y,b[0].z},
112 {b[1].x,b[1].y,b[0].z},
113 {b[0].x,b[1].y,b[0].z},
115 {b[0].x,b[0].y,b[1].z},
116 {b[1].x,b[0].y,b[1].z},
117 {b[1].x,b[1].y,b[1].z},
118 {b[0].x,b[1].y,b[1].z},
122 m.project(i.x,i.y,i.z);
128void Bounds::calcR() {
129 float dx = std::fabs(
bbox[0].x-
bbox[1].x);
130 float dy = std::fabs(
bbox[0].y-
bbox[1].y);
131 float dz = std::fabs(
bbox[0].z-
bbox[1].z);
132 r = std::sqrt(dx*dx+dy*dy+dz*dz)*0.5f;
134 float x = std::max(std::abs(
bbox[0].x),std::abs(
bbox[1].x));
135 float y = std::max(std::abs(
bbox[0].y),std::abs(
bbox[1].y));
136 float z = std::max(std::abs(
bbox[0].z),std::abs(
bbox[1].z));
void assign(const Tempest::Vec3 &cen, float sizeSz)
void setObjMatrix(const Tempest::Matrix4x4 &m)