#ifndef CONVEX_POLYHEDRON_CL #define CONVEX_POLYHEDRON_CL #include "BulletCommon/b3Transform.h" struct btGpuFace { btVector4 m_plane; int m_indexOffset; int m_numIndices; }; ATTRIBUTE_ALIGNED16(struct) b3ConvexPolyhedronCL { b3Vector3 m_localCenter; b3Vector3 m_extents; b3Vector3 mC; b3Vector3 mE; b3Scalar m_radius; int m_faceOffset; int m_numFaces; int m_numVertices; int m_vertexOffset; int m_uniqueEdgesOffset; int m_numUniqueEdges; int m_unused; inline void project(const b3Transform& trans, const b3Vector3& dir, const b3AlignedObjectArray& vertices, b3Scalar& min, b3Scalar& max) const { min = FLT_MAX; max = -FLT_MAX; int numVerts = m_numVertices; const b3Vector3 localDir = trans.getBasis().transpose()*dir; const b3Vector3 localDi2 = quatRotate(trans.getRotation().inverse(),dir); b3Scalar offset = trans.getOrigin().dot(dir); for(int i=0;i max) max = dp; } if(min>max) { b3Scalar tmp = min; min = max; max = tmp; } min += offset; max += offset; } }; #endif //CONVEX_POLYHEDRON_CL