16
16
#ifndef COLLISION_SHAPE_H
17
17
#define COLLISION_SHAPE_H
19
#include "../../LinearMath/btTransform.h"
20
#include "../../LinearMath/btVector3.h"
21
#include "../../LinearMath/btMatrix3x3.h"
22
#include "../../LinearMath/btPoint3.h"
23
#include "../BroadphaseCollision/btBroadphaseProxy.h" //for the shape types
19
#include "LinearMath/btTransform.h"
20
#include "LinearMath/btVector3.h"
21
#include "LinearMath/btMatrix3x3.h"
22
#include "LinearMath/btPoint3.h"
23
#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" //for the shape types
25
///btCollisionShape provides interface for collision shapes that can be shared among btCollisionObjects.
25
///The btCollisionShape class provides an interface for collision shapes that can be shared among btCollisionObjects.
26
26
class btCollisionShape
33
btCollisionShape() : m_userPointer(0)
33
36
virtual ~btCollisionShape()
46
49
///calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep)
47
50
///result is conservative
48
void calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax);
51
void calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax) const;
52
inline bool isPolyhedral() const
55
SIMD_FORCE_INLINE bool isPolyhedral() const
54
57
return btBroadphaseProxy::isPolyhedral(getShapeType());
57
inline bool isConvex() const
60
SIMD_FORCE_INLINE bool isConvex() const
59
62
return btBroadphaseProxy::isConvex(getShapeType());
61
inline bool isConcave() const
64
SIMD_FORCE_INLINE bool isConcave() const
63
66
return btBroadphaseProxy::isConcave(getShapeType());
65
inline bool isCompound() const
68
SIMD_FORCE_INLINE bool isCompound() const
67
70
return btBroadphaseProxy::isCompound(getShapeType());
70
73
///isInfinite is used to catch simulation error (aabb check)
71
inline bool isInfinite() const
74
SIMD_FORCE_INLINE bool isInfinite() const
73
76
return btBroadphaseProxy::isInfinite(getShapeType());
76
79
virtual int getShapeType() const=0;
77
80
virtual void setLocalScaling(const btVector3& scaling) =0;
78
81
virtual const btVector3& getLocalScaling() const =0;
79
virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) = 0;
82
virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const = 0;
82
85
//debugging support
83
virtual char* getName()const =0 ;
86
virtual const char* getName()const =0 ;
88
91
virtual void setMargin(btScalar margin) = 0;
89
92
virtual btScalar getMargin() const = 0;
95
///optional user data pointer
96
void setUserPointer(void* userPtr)
98
m_userPointer = userPtr;
101
void* getUserPointer() const
103
return m_userPointer;
93
108
#endif //COLLISION_SHAPE_H