16 #ifndef BT_CAPSULE_SHAPE_H 17 #define BT_CAPSULE_SHAPE_H 47 virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(
const btVector3* vectors,
btVector3* supportVerticesOut,
int numVectors)
const;
56 btVector3 halfExtents(getRadius(),getRadius(),getRadius());
57 halfExtents[m_upAxis] = getRadius() + getHalfHeight();
60 btVector3 extent = halfExtents.
dot3(abs_b[0], abs_b[1], abs_b[2]);
62 aabbMin = center - extent;
63 aabbMax = center + extent;
68 return "CapsuleShape";
78 int radiusAxis = (m_upAxis+2)%3;
79 return m_implicitShapeDimensions[radiusAxis];
84 return m_implicitShapeDimensions[m_upAxis];
89 btVector3 unScaledImplicitShapeDimensions = m_implicitShapeDimensions / m_localScaling;
91 m_implicitShapeDimensions = (unScaledImplicitShapeDimensions * scaling);
93 int radiusAxis = (m_upAxis+2)%3;
94 m_collisionMargin = m_implicitShapeDimensions[radiusAxis];
100 aniDir[getUpAxis()]=1;
105 virtual int calculateSerializeBufferSize()
const;
108 virtual const char* serialize(
void* dataBuffer,
btSerializer* serializer)
const;
178 return "btCapsuleShapeData";
190 #endif //BT_CAPSULE_SHAPE_H btCapsuleShapeX(btScalar radius, btScalar height)
btScalar m_collisionMargin
btScalar getRadius() const
virtual btVector3 getAnisotropicRollingFrictionDirection() const
the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See...
btVector3 dot3(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2) const
The btConvexInternalShape is an internal base class, shared by most convex shape implementations.
The btCapsuleShape represents a capsule around the Y axis, there is also the btCapsuleShapeX aligned ...
btCapsuleShapeX represents a capsule around the Z axis the total height is height+2*radius,...
virtual const char * getName() const
#define SIMD_FORCE_INLINE
virtual int calculateSerializeBufferSize() const
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
btVector3 m_implicitShapeDimensions
virtual const char * getName() const
btCapsuleShapeZ(btScalar radius, btScalar height)
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
btScalar getHalfHeight() const
btCapsuleShape()
only used for btCapsuleShapeZ and btCapsuleShapeX subclasses.
virtual void setMargin(btScalar collisionMargin)
btVector3FloatData m_localScaling
btVector3FloatData m_implicitShapeDimensions
btConvexInternalShapeData m_convexInternalShapeData
btVector3 can be used to represent 3D points and vectors.
#define ATTRIBUTE_ALIGNED16(a)
virtual void setLocalScaling(const btVector3 &scaling)
btMatrix3x3 absolute() const
Return the matrix with all values non negative.
virtual const char * getName() const
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
getAabb's default implementation is brute force, expected derived classes to implement a fast dedicat...
#define BT_DECLARE_ALIGNED_ALLOCATOR()
btCapsuleShapeZ represents a capsule around the Z axis the total height is height+2*radius,...
virtual void setLocalScaling(const btVector3 &scaling)
void deSerializeFloat(struct btCapsuleShapeData *dataBuffer)
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
void deSerializeFloat(const struct btVector3FloatData &dataIn)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...