Changeset 8351 for code/trunk/src/external/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h
- Timestamp:
- Apr 28, 2011, 7:15:14 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/external/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h
r5781 r8351 1 1 /* 2 2 Bullet Continuous Collision Detection and Physics Library 3 Copyright (c) 2003-200 6 Erwin Coumans http://continuousphysics.com/Bullet/3 Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org 4 4 5 5 This software is provided 'as-is', without any express or implied warranty. … … 19 19 #include "btConvexInternalShape.h" 20 20 #include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types 21 22 #define MAX_NUM_SPHERES 5 23 24 ///The btMultiSphereShape represents the convex hull of a collection of spheres. You can create special capsules or other smooth volumes. 25 ///It is possible to animate the spheres for deformation. 26 class btMultiSphereShape : public btConvexInternalShape 27 28 { 29 30 btVector3 m_localPositions[MAX_NUM_SPHERES]; 31 btScalar m_radi[MAX_NUM_SPHERES]; 32 btVector3 m_inertiaHalfExtents; 33 34 int m_numSpheres; 35 21 #include "LinearMath/btAlignedObjectArray.h" 22 #include "LinearMath/btAabbUtil2.h" 36 23 37 24 38 25 26 ///The btMultiSphereShape represents the convex hull of a collection of spheres. You can create special capsules or other smooth volumes. 27 ///It is possible to animate the spheres for deformation, but call 'recalcLocalAabb' after changing any sphere position/radius 28 class btMultiSphereShape : public btConvexInternalAabbCachingShape 29 { 30 31 btAlignedObjectArray<btVector3> m_localPositionArray; 32 btAlignedObjectArray<btScalar> m_radiArray; 33 39 34 public: 40 btMultiSphereShape (const btVector3 & inertiaHalfExtents,const btVector3* positions,const btScalar* radi,int numSpheres);35 btMultiSphereShape (const btVector3* positions,const btScalar* radi,int numSpheres); 41 36 42 37 ///CollisionShape Interface … … 50 45 int getSphereCount() const 51 46 { 52 return m_ numSpheres;47 return m_localPositionArray.size(); 53 48 } 54 49 55 50 const btVector3& getSpherePosition(int index) const 56 51 { 57 return m_localPosition s[index];52 return m_localPositionArray[index]; 58 53 } 59 54 60 55 btScalar getSphereRadius(int index) const 61 56 { 62 return m_radi [index];57 return m_radiArray[index]; 63 58 } 64 59 … … 69 64 } 70 65 66 virtual int calculateSerializeBufferSize() const; 67 68 ///fills the dataBuffer and returns the struct name (and 0 on failure) 69 virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; 70 71 71 72 }; 72 73 73 74 75 struct btPositionAndRadius 76 { 77 btVector3FloatData m_pos; 78 float m_radius; 79 }; 80 81 struct btMultiSphereShapeData 82 { 83 btConvexInternalShapeData m_convexInternalShapeData; 84 85 btPositionAndRadius *m_localPositionArrayPtr; 86 int m_localPositionArraySize; 87 char m_padding[4]; 88 }; 89 90 91 92 SIMD_FORCE_INLINE int btMultiSphereShape::calculateSerializeBufferSize() const 93 { 94 return sizeof(btMultiSphereShapeData); 95 } 96 97 98 74 99 #endif //MULTI_SPHERE_MINKOWSKI_H
Note: See TracChangeset
for help on using the changeset viewer.