#ifndef BULLET_DATA_EXTRACTOR_H #define BULLET_DATA_EXTRACTOR_H #include "Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h" #include "Bullet3Common/b3AlignedObjectArray.h" #include "Bullet3Common/b3Vector3.h" class GLInstancingRenderer; class b3GpuRigidBodyPipeline; class b3GpuNarrowPhase; void createScene(GLInstancingRenderer& renderer,b3GpuNarrowPhase& np, b3GpuRigidBodyPipeline& rbWorld, const char* fileName); namespace bParse { class btBulletFile; }; class btBulletDataExtractor { GLInstancingRenderer& m_renderer; b3GpuNarrowPhase& m_np; b3GpuRigidBodyPipeline& m_rbPipeline; public: b3AlignedObjectArray m_instanceGroups; b3AlignedObjectArray m_graphicsShapes; btBulletDataExtractor(GLInstancingRenderer& renderer, b3GpuNarrowPhase& np, b3GpuRigidBodyPipeline& rbPipeline); virtual ~btBulletDataExtractor(); virtual void convertAllObjects(bParse::btBulletFile* bulletFile); //return -1 for invalid virtual int convertCollisionShape( Bullet::btCollisionShapeData* shapeData ); virtual int createPlaneShape( const Bullet::btVector3FloatData& planeNormal, float planeConstant, const Bullet::btVector3FloatData& localScaling); virtual int createBoxShape( const Bullet::btVector3FloatData& halfDimensions, const Bullet::btVector3FloatData& localScaling, float collisionMargin); virtual int createSphereShape( float radius, const Bullet::btVector3FloatData& localScaling, float collisionMargin); static GraphicsShape* createGraphicsShapeFromConvexHull(const b3Vector3* tmpPoints, int numPoints); static GraphicsShape* createGraphicsShapeFromWavefrontObj(class objLoader* obj); }; #endif //BULLET_DATA_EXTRACTOR_H