コード例 #1
0
ファイル: Mesh.cpp プロジェクト: aevum/libgdx-cpp
void Mesh::calculateBoundingBox (BoundingBox& bbox) {
    int numVertices = getNumVertices();
    if (numVertices == 0) gdx_log_error("gdx","No vertices defined");

    float_buffer verts = vertices->getBuffer();
    bbox.inf();
    VertexAttribute& posAttrib = *getVertexAttribute(VertexAttributes::Usage::Position);
    int offset = posAttrib.offset / 4;
    int vertexSize = vertices->getAttributes().vertexSize / 4;
    int idx = offset;

    switch (posAttrib.numComponents) {
    case 1:
        for (int i = 0; i < numVertices; i++) {
            bbox.ext(verts.get(idx), 0, 0);
            idx += vertexSize;
        }
        break;
    case 2:
        for (int i = 0; i < numVertices; i++) {
            bbox.ext(verts.get(idx), verts.get(idx + 1), 0);
            idx += vertexSize;
        }
        break;
    case 3:
        for (int i = 0; i < numVertices; i++) {
            bbox.ext(verts.get(idx), verts.get(idx + 1), verts.get(idx + 2));
            idx += vertexSize;
        }
        break;
    }
}
コード例 #2
0
ファイル: StillModel.cpp プロジェクト: MrGlamur/libgdx-cpp
void StillModel::getBoundingBox ( BoundingBox& bbox )
{
    bbox.inf();
    for ( size_t i = 0; i < subMeshes.size(); i++ ) {
        subMeshes[i]->mesh->calculateBoundingBox ( tmpbox );
        bbox.ext ( tmpbox );
    }
}
コード例 #3
0
ファイル: Mesh.cpp プロジェクト: pcman75/libgdx-cpp
void Mesh::calculateBoundingBox(BoundingBox& bbox) 
{
    int numVertices = getNumVertices();
    if (numVertices == 0) 
        throw GdxRuntimeException("No vertices defined");
    
    float* verts = m_vertices->getBuffer();
    bbox.inf();
    VertexAttribute posAttrib;
    getVertexAttribute(VertexAttributes::Position, posAttrib);
    int offset = posAttrib.offset / 4;
    int vertexSize = m_vertices->getAttributes().vertexSize() / 4;
    int idx = offset;
    
    switch (posAttrib.numComponents) {
        case 1:
            for (int i = 0; i < numVertices; i++) 
            {
                bbox.ext(verts[idx], 0, 0);
                idx += vertexSize;
            }
            break;
        case 2:
            for (int i = 0; i < numVertices; i++) 
            {
                bbox.ext(verts[idx], verts[idx + 1], 0);
                idx += vertexSize;
            }
            break;
        case 3:
            for (int i = 0; i < numVertices; i++) 
            {
                bbox.ext(verts[idx], verts[idx + 1], verts[idx + 2]);
                idx += vertexSize;
            }
            break;
    }
}