00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00035 #ifndef __SO3SHAPE_H__
00036 #define __SO3SHAPE_H__
00037
00038 #include "..\SCOLBasic\SO3Std.h"
00039 #include "..\SCOLBasic\SO3DataScol.h"
00040 #include "SO3Body.h"
00041
00042 namespace SO3
00043 {
00044
00045 class SShape : public SData
00046 {
00047 public:
00048 enum ShapeType
00049 {
00050 SO3_NULL_COLLISION,
00051 SO3_BOX_COLLISION,
00052 SO3_CONE_COLLISION,
00053 SO3_ELLIPSOID_COLLISION,
00054 SO3_CAPSULE_COLLISION,
00055 SO3_CYLINDER_COLLISION,
00056 SO3_COMPOUND_COLLISION,
00057 SO3_CHAMFERCYLINDRE_COLLISION,
00058 SO3_PYRAMID_COLLISION,
00059 SO3_SHAPE_COLLISION,
00060 SO3_TREE_COLLISION
00061 };
00062
00063 protected:
00064 OgreNewt::CollisionPtr mCollisionPtr;
00065
00066 private:
00067 ShapeType mShapeType;
00068
00069 public:
00072 SShape(std::string shapeName, ShapeType shapeType);
00073
00076 ~SShape();
00077
00080 ShapeType GetType();
00081
00084 OgreNewt::CollisionPtr GetOgreNewtCollisionPtr();
00085
00088 virtual Ogre::Vector3 SShape::CalculateInertialMatrix() = 0;
00089
00092 virtual Ogre::Vector3 SShape::CalculateOffset() = 0;
00093
00094 protected:
00095
00096 private:
00099 SShape();
00100 };
00101
00102 }
00103
00104 #endif