#include "GL_BBoxDrawArray.h" using namespace std; namespace X3DTK { namespace GL { BBoxDrawArray::BBoxDrawArray() : h(0.1f) { MFVec3f vertexArray(8); vertexArray[0] = SFVec3f(-1.0f, -1.0f, -1.0f); vertexArray[1] = SFVec3f(1.0f, -1.0f, -1.0f); vertexArray[2] = SFVec3f(1.0f, 1.0f, -1.0f); vertexArray[3] = SFVec3f(-1.0f, 1.0f, -1.0f); vertexArray[4] = SFVec3f(-1.0f, -1.0f, 1.0f); vertexArray[5] = SFVec3f(1.0f, -1.0f, 1.0f); vertexArray[6] = SFVec3f(1.0f, 1.0f, 1.0f); vertexArray[7] = SFVec3f(-1.0f, 1.0f, 1.0f); unsigned int k = 0; for (MFVec3f::const_iterator it = vertexArray.begin(); it != vertexArray.end(); ++it) { SFVec3f vx, vy, vz; SFVec3f dx(1.0f, 0.0f, 0.0f), dy(0.0f, 1.0f, 0.0f), dz(0.0f, 0.0f, 1.0f); SFVec3f v = *it; _BBoxVertexArray.push_back(v); unsigned int ko = k; if (v.x < 0.0f) vx = v + h*dx; else vx = v - h*dx; _BBoxVertexArray.push_back(vx); _BBoxIndexArray.push_back(ko); ++k; _BBoxIndexArray.push_back(k); if (v.y < 0.0f) vy = v + h*dy; else vy = v - h*dy; _BBoxVertexArray.push_back(vy); _BBoxIndexArray.push_back(ko); ++k; _BBoxIndexArray.push_back(k); if (v.z < 0.0f) vz = v + h*dz; else vz = v - h*dz; _BBoxVertexArray.push_back(vz); _BBoxIndexArray.push_back(ko); ++k; _BBoxIndexArray.push_back(k); ++k; } } unsigned int BBoxDrawArray::getBBoxSize() const { return _BBoxIndexArray.size(); } const void *BBoxDrawArray::getBBoxVertexArrayAddress() const { return &_BBoxVertexArray.front(); } const unsigned int *BBoxDrawArray::getBBoxIndexArrayAddress() const { return &_BBoxIndexArray.front(); } } }