#ifndef B3_COLLIDABLE_H #define B3_COLLIDABLE_H #include "Bullet3Common/shared/b3Float4.h" #include "Bullet3Common/shared/b3Quat.h" enum b3ShapeTypes { SHAPE_HEIGHT_FIELD=1, SHAPE_CONVEX_HULL=3, SHAPE_PLANE=4, SHAPE_CONCAVE_TRIMESH=5, SHAPE_COMPOUND_OF_CONVEX_HULLS=6, SHAPE_SPHERE=7, MAX_NUM_SHAPE_TYPES, }; typedef struct b3Collidable b3Collidable_t; struct b3Collidable { union { int m_numChildShapes; int m_bvhIndex; }; union { float m_radius; int m_compoundBvhIndex; }; int m_shapeType; union { int m_shapeIndex; float m_height; }; }; typedef struct b3GpuChildShape b3GpuChildShape_t; struct b3GpuChildShape { b3Float4 m_childPosition; b3Quat m_childOrientation; union { int m_shapeIndex;//used for SHAPE_COMPOUND_OF_CONVEX_HULLS int m_capsuleAxis; }; union { float m_radius;//used for childshape of SHAPE_COMPOUND_OF_SPHERES or SHAPE_COMPOUND_OF_CAPSULES int m_numChildShapes;//used for compound shape }; union { float m_height;//used for childshape of SHAPE_COMPOUND_OF_CAPSULES int m_collidableShapeIndex; }; int m_shapeType; }; struct b3CompoundOverlappingPair { int m_bodyIndexA; int m_bodyIndexB; // int m_pairType; int m_childShapeIndexA; int m_childShapeIndexB; }; #endif //B3_COLLIDABLE_H