Bullet Collision Detection & Physics Library
btWorldImporter.h
Go to the documentation of this file.
1/*
2Bullet Continuous Collision Detection and Physics Library
3Copyright (c) 2003-2012 Erwin Coumans http://bulletphysics.org
4
5This software is provided 'as-is', without any express or implied warranty.
6In no event will the authors be held liable for any damages arising from the use of this software.
7Permission is granted to anyone to use this software for any purpose,
8including commercial applications, and to alter it and redistribute it freely,
9subject to the following restrictions:
10
111. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
122. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
133. This notice may not be removed or altered from any source distribution.
14*/
15
16
17#ifndef BT_WORLD_IMPORTER_H
18#define BT_WORLD_IMPORTER_H
19
24
27class btRigidBody;
29class btDynamicsWorld;
30struct ConstraintInput;
31class btRigidBodyColladaInfo;
37class btOptimizedBvh;
52
55
56#ifdef BT_USE_DOUBLE_PRECISION
57#define btRigidBodyData btRigidBodyDoubleData
58#else
59#define btRigidBodyData btRigidBodyFloatData
60#endif//BT_USE_DOUBLE_PRECISION
61
62
64{
65protected:
67
69
77
79
83
86
87
90
95
98
99
100 //methods
101
102 static btRigidBody& getFixedBody();
103
104 char* duplicateName(const char* name);
105
107
108 void convertConstraintBackwardsCompatible281(btTypedConstraintData* constraintData, btRigidBody* rbA, btRigidBody* rbB, int fileVersion);
109 void convertConstraintFloat(btTypedConstraintFloatData* constraintData, btRigidBody* rbA, btRigidBody* rbB, int fileVersion);
110 void convertConstraintDouble(btTypedConstraintDoubleData* constraintData, btRigidBody* rbA, btRigidBody* rbB, int fileVersion);
113
114public:
115
117
118 virtual ~btWorldImporter();
119
122 virtual void deleteAllData();
123
124 void setVerboseMode(int verboseMode)
125 {
126 m_verboseMode = verboseMode;
127 }
128
129 int getVerboseMode() const
130 {
131 return m_verboseMode;
132 }
133
134 // query for data
135 int getNumCollisionShapes() const;
137 int getNumRigidBodies() const;
138 btCollisionObject* getRigidBodyByIndex(int index) const;
139 int getNumConstraints() const;
140 btTypedConstraint* getConstraintByIndex(int index) const;
141 int getNumBvhs() const;
142 btOptimizedBvh* getBvhByIndex(int index) const;
143 int getNumTriangleInfoMaps() const;
145
146 // queris involving named objects
147 btCollisionShape* getCollisionShapeByName(const char* name);
148 btRigidBody* getRigidBodyByName(const char* name);
149 btTypedConstraint* getConstraintByName(const char* name);
150 const char* getNameForPointer(const void* ptr) const;
151
153
154 virtual void setDynamicsWorldInfo(const btVector3& gravity, const btContactSolverInfo& solverInfo);
155
156 //bodies
157 virtual btRigidBody* createRigidBody(bool isDynamic, btScalar mass, const btTransform& startTransform, btCollisionShape* shape,const char* bodyName);
158 virtual btCollisionObject* createCollisionObject( const btTransform& startTransform, btCollisionShape* shape,const char* bodyName);
159
161
162 virtual btCollisionShape* createPlaneShape(const btVector3& planeNormal,btScalar planeConstant);
163 virtual btCollisionShape* createBoxShape(const btVector3& halfExtents);
165 virtual btCollisionShape* createCapsuleShapeX(btScalar radius, btScalar height);
166 virtual btCollisionShape* createCapsuleShapeY(btScalar radius, btScalar height);
167 virtual btCollisionShape* createCapsuleShapeZ(btScalar radius, btScalar height);
168
172 virtual btCollisionShape* createConeShapeX(btScalar radius,btScalar height);
173 virtual btCollisionShape* createConeShapeY(btScalar radius,btScalar height);
174 virtual btCollisionShape* createConeShapeZ(btScalar radius,btScalar height);
180
182 virtual class btCompoundShape* createCompoundShape();
183 virtual class btScaledBvhTriangleMeshShape* createScaledTrangleMeshShape(btBvhTriangleMeshShape* meshShape,const btVector3& localScalingbtBvhTriangleMeshShape);
184
185 virtual class btMultiSphereShape* createMultiSphereShape(const btVector3* positions,const btScalar* radi,int numSpheres);
186
188
192
194 virtual btPoint2PointConstraint* createPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB);
196 virtual btHingeConstraint* createHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA=false);
197 virtual btHingeConstraint* createHingeConstraint(btRigidBody& rbA,const btTransform& rbAFrame, bool useReferenceFrameA=false);
198 virtual btConeTwistConstraint* createConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB,const btTransform& rbAFrame, const btTransform& rbBFrame);
200 virtual btGeneric6DofConstraint* createGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);
201 virtual btGeneric6DofConstraint* createGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB);
202 virtual btGeneric6DofSpringConstraint* createGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);
203 virtual btGeneric6DofSpring2Constraint* createGeneric6DofSpring2Constraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, int rotateOrder );
204
205 virtual btSliderConstraint* createSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);
206 virtual btSliderConstraint* createSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA);
207 virtual btGearConstraint* createGearConstraint(btRigidBody& rbA, btRigidBody& rbB, const btVector3& axisInA,const btVector3& axisInB, btScalar ratio);
208
209
210
211
212};
213
214
215#endif //BT_WORLD_IMPORTER_H
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:292
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
The btBvhTriangleMeshShape is a static-triangle mesh shape, it can only be used for fixed/non-moving ...
btCollisionObject can be used to manage collision detection objects.
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
The btCompoundShape allows to store multiple other btCollisionShapes This allows for moving concave c...
btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc)
The btConvexHullShape implements an implicit convex hull of an array of vertices.
The btDynamicsWorld is the interface class for several dynamics implementation, basic,...
This class manages a mesh supplied by the btStridingMeshInterface interface.
The btGeatConstraint will couple the angular velocity for two bodies around given local axis and rati...
btGeneric6DofConstraint between two rigidbodies each with a pivotpoint that descibes the axis locatio...
Generic 6 DOF constraint that allows to set spring motors to any translational and rotational DOF.
The btHashMap template class implements a generic and lightweight hashmap.
Definition: btHashMap.h:226
hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in lo...
The btMultiSphereShape represents the convex hull of a collection of spheres.
The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes,...
point to point constraint between two rigidbodies each with a pivotpoint that descibes the 'ballsocke...
The btRigidBody is the main class for rigid body objects.
Definition: btRigidBody.h:63
The btScaledBvhTriangleMeshShape allows to instance a scaled version of an existing btBvhTriangleMesh...
The btStridingMeshInterface is the interface class for high performance generic access to triangle me...
The btTransform class supports rigid transforms with only translation and rotation and no scaling/she...
Definition: btTransform.h:34
The btTriangleIndexVertexArray allows to access multiple triangle meshes, by indexing into existing t...
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:84
char * duplicateName(const char *name)
btAlignedObjectArray< btTriangleIndexVertexArray * > m_allocatedTriangleIndexArrays
btAlignedObjectArray< char * > m_allocatedNames
virtual btCollisionObject * createCollisionObject(const btTransform &startTransform, btCollisionShape *shape, const char *bodyName)
btTypedConstraint * getConstraintByName(const char *name)
static btRigidBody & getFixedBody()
virtual btCollisionShape * createConeShapeY(btScalar radius, btScalar height)
btAlignedObjectArray< btCollisionObject * > m_allocatedRigidBodies
int getNumBvhs() const
virtual btCollisionShape * createCapsuleShapeY(btScalar radius, btScalar height)
btTypedConstraint * getConstraintByIndex(int index) const
virtual btOptimizedBvh * createOptimizedBvh()
acceleration and connectivity structures
virtual class btScaledBvhTriangleMeshShape * createScaledTrangleMeshShape(btBvhTriangleMeshShape *meshShape, const btVector3 &localScalingbtBvhTriangleMeshShape)
virtual btRigidBody * createRigidBody(bool isDynamic, btScalar mass, const btTransform &startTransform, btCollisionShape *shape, const char *bodyName)
void convertConstraintBackwardsCompatible281(btTypedConstraintData *constraintData, btRigidBody *rbA, btRigidBody *rbB, int fileVersion)
btRigidBody * getRigidBodyByName(const char *name)
virtual class btConvexHullShape * createConvexHullShape()
virtual btCollisionShape * createConvexTriangleMeshShape(btStridingMeshInterface *trimesh)
const char * getNameForPointer(const void *ptr) const
btHashMap< btHashPtr, btOptimizedBvh * > m_bvhMap
virtual btCollisionShape * createCapsuleShapeX(btScalar radius, btScalar height)
btHashMap< btHashPtr, btCollisionObject * > m_bodyMap
virtual btCollisionShape * createPlaneShape(const btVector3 &planeNormal, btScalar planeConstant)
shapes
btAlignedObjectArray< btOptimizedBvh * > m_allocatedBvhs
btCollisionObject * getRigidBodyByIndex(int index) const
btCollisionShape * getCollisionShapeByIndex(int index)
virtual btConeTwistConstraint * createConeTwistConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &rbAFrame, const btTransform &rbBFrame)
virtual class btMultiSphereShape * createMultiSphereShape(const btVector3 *positions, const btScalar *radi, int numSpheres)
virtual ~btWorldImporter()
virtual btStridingMeshInterfaceData * createStridingMeshInterfaceData(btStridingMeshInterfaceData *interfaceData)
btAlignedObjectArray< btTypedConstraint * > m_allocatedConstraints
btHashMap< btHashString, btRigidBody * > m_nameBodyMap
btHashMap< btHashPtr, const char * > m_objectNameMap
void convertConstraintDouble(btTypedConstraintDoubleData *constraintData, btRigidBody *rbA, btRigidBody *rbB, int fileVersion)
virtual btGeneric6DofSpring2Constraint * createGeneric6DofSpring2Constraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, int rotateOrder)
btAlignedObjectArray< unsigned char * > m_charIndexArrays
virtual btCollisionShape * createBoxShape(const btVector3 &halfExtents)
virtual void setDynamicsWorldInfo(const btVector3 &gravity, const btContactSolverInfo &solverInfo)
those virtuals are called by load and can be overridden by the user
int getNumRigidBodies() const
int getNumTriangleInfoMaps() const
btHashMap< btHashPtr, btTriangleInfoMap * > m_timMap
virtual btTriangleIndexVertexArray * createMeshInterface(btStridingMeshInterfaceData &meshData)
btAlignedObjectArray< int * > m_indexArrays
virtual btGeneric6DofConstraint * createGeneric6DofConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA)
int getNumCollisionShapes() const
btAlignedObjectArray< btTriangleInfoMap * > m_allocatedTriangleInfoMaps
virtual btCollisionShape * createCylinderShapeY(btScalar radius, btScalar height)
virtual void deleteAllData()
delete all memory collision shapes, rigid bodies, constraints etc.
virtual btGeneric6DofSpringConstraint * createGeneric6DofSpringConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA)
virtual btCollisionShape * createConeShapeX(btScalar radius, btScalar height)
btDynamicsWorld * m_dynamicsWorld
virtual btCollisionShape * createCylinderShapeX(btScalar radius, btScalar height)
void convertConstraintFloat(btTypedConstraintFloatData *constraintData, btRigidBody *rbA, btRigidBody *rbB, int fileVersion)
virtual class btCompoundShape * createCompoundShape()
btWorldImporter(btDynamicsWorld *world)
btTriangleInfoMap * getTriangleInfoMapByIndex(int index) const
btAlignedObjectArray< btCollisionShape * > m_allocatedCollisionShapes
virtual btGearConstraint * createGearConstraint(btRigidBody &rbA, btRigidBody &rbB, const btVector3 &axisInA, const btVector3 &axisInB, btScalar ratio)
btHashMap< btHashString, btCollisionShape * > m_nameShapeMap
int getNumConstraints() const
int getVerboseMode() const
virtual btCollisionShape * createConeShapeZ(btScalar radius, btScalar height)
void setVerboseMode(int verboseMode)
virtual btHingeConstraint * createHingeConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &rbAFrame, const btTransform &rbBFrame, bool useReferenceFrameA=false)
btAlignedObjectArray< btVector3DoubleData * > m_doubleVertexArrays
btCollisionShape * convertCollisionShape(btCollisionShapeData *shapeData)
virtual btCollisionShape * createSphereShape(btScalar radius)
btCollisionShape * getCollisionShapeByName(const char *name)
btHashMap< btHashPtr, btCollisionShape * > m_shapeMap
void convertRigidBodyDouble(btRigidBodyDoubleData *colObjData)
btAlignedObjectArray< btVector3FloatData * > m_floatVertexArrays
btHashMap< btHashString, btTypedConstraint * > m_nameConstraintMap
virtual class btTriangleIndexVertexArray * createTriangleMeshContainer()
virtual btBvhTriangleMeshShape * createBvhTriangleMeshShape(btStridingMeshInterface *trimesh, btOptimizedBvh *bvh)
btAlignedObjectArray< btStridingMeshInterfaceData * > m_allocatedbtStridingMeshInterfaceDatas
virtual btGImpactMeshShape * createGimpactShape(btStridingMeshInterface *trimesh)
btOptimizedBvh * getBvhByIndex(int index) const
void convertRigidBodyFloat(btRigidBodyFloatData *colObjData)
virtual btPoint2PointConstraint * createPoint2PointConstraint(btRigidBody &rbA, btRigidBody &rbB, const btVector3 &pivotInA, const btVector3 &pivotInB)
constraints
virtual btCollisionShape * createCylinderShapeZ(btScalar radius, btScalar height)
virtual btTriangleInfoMap * createTriangleInfoMap()
virtual btCollisionShape * createCapsuleShapeZ(btScalar radius, btScalar height)
virtual btSliderConstraint * createSliderConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA)
btAlignedObjectArray< short int * > m_shortIndexArrays
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btRigidBody.h:591
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btRigidBody.h:565
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
The btTriangleInfoMap stores edge angle information for some triangles. You can compute this informat...
this structure is not used, except for loading pre-2.82 .bullet files
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64