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
00028
00029
00030
00031 #ifndef _OGREBULLETCOLLISIONS_CollisionWorld_H
00032 #define _OGREBULLETCOLLISIONS_CollisionWorld_H
00033
00034 #include "OgreBulletCollisionsPreRequisites.h"
00035
00036
00037 namespace OgreBulletCollisions
00038 {
00039
00040
00041 class CollisionsWorld
00042 {
00043 public:
00044
00045
00046
00047
00048
00049 CollisionsWorld(Ogre::SceneManager *scn, const Ogre::AxisAlignedBox &bounds, bool init = true, bool set32bitsAxisSweep = true, unsigned int maxHandles = 1500000);
00050 virtual ~CollisionsWorld();
00051
00052 void addObject(Object *obj, int filterGrp = 1, short int collisionFilter = -1);
00053
00055 bool removeObject(Object *obj);
00056
00057 void discreteCollide();
00058
00059 bool isObjectregistered(Object *) const;
00060 Object *findObject(Ogre::SceneNode *node) const;
00061 Object *findObject(btCollisionObject *object) const;
00062
00063
00064
00065 bool getShowDebugContactPoints() const { return mShowDebugContactPoints; }
00066
00067 void setShowDebugContactPoints(bool show);
00068
00069 bool getShowDebugShapes() const { return mShowDebugShapes; }
00070
00071 void setShowDebugShapes(bool val);
00072
00073 DebugDrawer *getDebugDrawer(){return mDebugDrawer;};
00074 void setDebugDrawer(DebugDrawer *debugdrawer);
00075
00076 DebugLines *getDebugContactPoints(){return mDebugContactPoints;};
00077 void setDebugContactPoints(DebugLines *debugcontacts);
00078
00079
00080 Ogre::SceneManager *getSceneManager() const {return mScnMgr;}
00081 btCollisionWorld *getBulletCollisionWorld() const {return mWorld;}
00082
00083 void launchRay (CollisionRayResultCallback &ray, short int collisionFilterMask = -1);
00084
00085 protected:
00086 btCollisionWorld* mWorld;
00087 btCollisionDispatcher* mDispatcher;
00088
00089 btBroadphaseInterface* mBroadphase;
00090
00091 Ogre::AxisAlignedBox mBounds;
00092
00093 btDefaultCollisionConfiguration mDefaultCollisionConfiguration;
00094
00095 std::deque<Object *> mObjects;
00096
00097 bool mShowDebugShapes;
00098 bool mShowDebugContactPoints;
00099 DebugLines * mDebugContactPoints;
00100
00101 Ogre::SceneManager * mScnMgr;
00102 OgreBulletCollisions::DebugDrawer *mDebugDrawer;
00103 };
00104 }
00105 #endif //_OGREBULLETCOLLISIONS_CollisionWorld_H
00106