Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef BT_STATIC_PLANE_SHAPE_H
00017 #define BT_STATIC_PLANE_SHAPE_H
00018
00019 #include "btConcaveShape.h"
00020
00021
00023 ATTRIBUTE_ALIGNED16(class) btStaticPlaneShape : public btConcaveShape
00024 {
00025 protected:
00026 btVector3 m_localAabbMin;
00027 btVector3 m_localAabbMax;
00028
00029 btVector3 m_planeNormal;
00030 btScalar m_planeConstant;
00031 btVector3 m_localScaling;
00032
00033 public:
00034 btStaticPlaneShape(const btVector3& planeNormal,btScalar planeConstant);
00035
00036 virtual ~btStaticPlaneShape();
00037
00038
00039 virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;
00040
00041 virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;
00042
00043 virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const;
00044
00045 virtual void setLocalScaling(const btVector3& scaling);
00046 virtual const btVector3& getLocalScaling() const;
00047
00048 const btVector3& getPlaneNormal() const
00049 {
00050 return m_planeNormal;
00051 }
00052
00053 const btScalar& getPlaneConstant() const
00054 {
00055 return m_planeConstant;
00056 }
00057
00058
00059 virtual const char* getName()const {return "STATICPLANE";}
00060
00061 virtual int calculateSerializeBufferSize() const;
00062
00064 virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
00065
00066
00067 };
00068
00070 struct btStaticPlaneShapeData
00071 {
00072 btCollisionShapeData m_collisionShapeData;
00073
00074 btVector3FloatData m_localScaling;
00075 btVector3FloatData m_planeNormal;
00076 float m_planeConstant;
00077 char m_pad[4];
00078 };
00079
00080
00081 SIMD_FORCE_INLINE int btStaticPlaneShape::calculateSerializeBufferSize() const
00082 {
00083 return sizeof(btStaticPlaneShapeData);
00084 }
00085
00087 SIMD_FORCE_INLINE const char* btStaticPlaneShape::serialize(void* dataBuffer, btSerializer* serializer) const
00088 {
00089 btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*) dataBuffer;
00090 btCollisionShape::serialize(&planeData->m_collisionShapeData,serializer);
00091
00092 m_localScaling.serializeFloat(planeData->m_localScaling);
00093 m_planeNormal.serializeFloat(planeData->m_planeNormal);
00094 planeData->m_planeConstant = float(m_planeConstant);
00095
00096 return "btStaticPlaneShapeData";
00097 }
00098
00099
00100 #endif //BT_STATIC_PLANE_SHAPE_H
00101
00102
00103