hkpExtendedMeshShape* FlatLand::createExtendedMeshShape() { setupVertexAndTriangleData(); { for (int vertexIdx = 0; vertexIdx < m_vertices.getSize(); vertexIdx+=4) { m_vertices[vertexIdx+0] *= m_scaling(0); m_vertices[vertexIdx+1] *= m_scaling(1); m_vertices[vertexIdx+2] *= m_scaling(2); m_vertices[vertexIdx+3] *= m_scaling(3); } } hkpExtendedMeshShape* extendedMeshShape = new hkpExtendedMeshShape(); { hkpExtendedMeshShape::TrianglesSubpart part; part.m_numTriangleShapes = m_numTriangles; part.m_numVertices = m_numVertices; part.m_vertexBase = &m_vertices[0]; part.m_stridingType = hkpExtendedMeshShape::INDICES_INT16; part.m_vertexStriding = sizeof(float) * 4; part.m_indexBase = &m_indices[0]; part.m_indexStriding = sizeof( hkUint16 ) * 4; extendedMeshShape->addTrianglesSubpart( part ); } int numTriangles = extendedMeshShape->getNumChildShapes(); numTriangles ++; return extendedMeshShape; }
hkpExtendedMeshShape* TowerLand::createMeshShape() { setupVertexAndTriangleData(); hkpExtendedMeshShape* meshShape = new hkpExtendedMeshShape(); meshShape->setRadius( m_triangleRadius ); meshShape->setScaling( m_scaling ); { hkpExtendedMeshShape::TrianglesSubpart part; part.m_vertexBase = &m_vertices[0]; part.m_vertexStriding = sizeof(float) * 4; part.m_numVertices = m_numVertices; part.m_indexBase = &m_indices[0]; part.m_indexStriding = sizeof( hkUint16 ) * 4; part.m_numTriangleShapes = m_numTriangles; part.m_stridingType = hkpExtendedMeshShape::INDICES_INT16; meshShape->addTrianglesSubpart( part ); } return meshShape; }