irrDynamics
 All Classes Functions
irrDynamics.h
1 #include <map>
2 #include <irrlicht.h>
3 
5 {
6  public:
7  static irrDynamics* getInstance();
8  static void simStep(const irr::u32& curTimeStamp);
9  static void shutdown();
10  static void addTerrain(irr::scene::ITerrainSceneNode* terrain, irr::u32 lodLevel = 2);
12 
17  static class btRigidBody* addSphericalObject(irr::scene::ISceneNode* node, irr::f32 radius, irr::f32 mass);
19 
24  static class btRigidBody* addBoxObject(irr::scene::ISceneNode* node, irr::f32 mass);
26 
30  static class btRigidBody* addFloor(const irr::core::vector3df& normal = irr::core::vector3df(0.f, 1.f, 0.f), const irr::core::vector3df& offset = irr::core::vector3df(0.f, 0.f, 0.f));
32 
41  static bool createHingeConstraint(irr::scene::ISceneNode* nodeA, irr::scene::ISceneNode* nodeB, const irr::core::vector3df& pivotInA, const irr::core::vector3df& pivotInB, const irr::core::vector3df& axisInA, const irr::core::vector3df& axisInB);
43 
50  static bool createPoint2PointConstraint(irr::scene::ISceneNode* nodeA, irr::scene::ISceneNode* nodeB, const irr::core::vector3df& pivotInA, const irr::core::vector3df& pivotInB);
52 
55  static void removeObject(irr::scene::ISceneNode* node);
57 
62  static void applyCentralForce(irr::scene::ISceneNode* node, const irr::core::vector3df& force);
63  static void setDamping(irr::scene::ISceneNode* node, irr::f32 linearDamping, irr::f32 angularDamping);
64  static void setPosition(irr::scene::ISceneNode* node, const irr::core::vector3df& newPos);
65 // static IRigidBody* createRigidBodyByBB(scene::ISceneNode* node, f32 mass);
66  static void debugDraw();
67 
68 
69  private:
70  irrDynamics();
71  irrDynamics(const irrDynamics& other);
72  std::map<irr::scene::ISceneNode*, class btRigidBody*> objects;
73  void updateObjects();
74  ~irrDynamics();
75  static irrDynamics* instance;
76  void clearObjects();
77 
78  //bt-related stuff
79  class btDefaultCollisionConfiguration *collisionConfiguration;
80  class btBroadphaseInterface *broadPhase;
81  class btCollisionDispatcher *dispatcher;
82  class btSequentialImpulseConstraintSolver *solver;
83  class btDiscreteDynamicsWorld* world;
84 
85 // irrBulletWorld* bWorld;
86  irr::u32 lastStep;
87 };
88 
static class btRigidBody * addFloor(const irr::core::vector3df &normal=irr::core::vector3df(0.f, 1.f, 0.f), const irr::core::vector3df &offset=irr::core::vector3df(0.f, 0.f, 0.f))
Add an infinite floor plane to the scene.
Definition: irrDynamics.h:4
static class btRigidBody * addSphericalObject(irr::scene::ISceneNode *node, irr::f32 radius, irr::f32 mass)
Add a scene node that is represented as spherical behavior.
static void removeObject(irr::scene::ISceneNode *node)
Remove an object from the physics.
static bool createPoint2PointConstraint(irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &pivotInA, const irr::core::vector3df &pivotInB)
Create a point-to-point relation between two objects.
static bool createHingeConstraint(irr::scene::ISceneNode *nodeA, irr::scene::ISceneNode *nodeB, const irr::core::vector3df &pivotInA, const irr::core::vector3df &pivotInB, const irr::core::vector3df &axisInA, const irr::core::vector3df &axisInB)
Create a hinge relation between two objects.
static class btRigidBody * addBoxObject(irr::scene::ISceneNode *node, irr::f32 mass)
Add a scene node that is represented as a sturdy box.
static void applyCentralForce(irr::scene::ISceneNode *node, const irr::core::vector3df &force)
Applies a pushing force to the object.