Go to the documentation of this file.00001
00002
00003 #ifndef _PHYSICS_DRIVER_H_
00004 #define _PHYSICS_DRIVER_H_
00005
00006 #include <EngineConfig.h>
00007 #include <core/Types.h>
00008
00009 namespace core
00010 {
00011 class vector3d;
00012 class quaternion;
00013 }
00014
00015 namespace physics
00016 {
00017
00018 class Body;
00019 class BodyData;
00020 class Shape;
00021 class Material;
00022 class Joint;
00023 struct CollisionPoint;
00024 enum ShapeType;
00025 enum JointType;
00026
00035 class ENGINE_PUBLIC_EXPORT PhysicsDriver
00036 {
00037 public:
00038
00039
00040 PhysicsDriver();
00041
00042
00043 virtual ~PhysicsDriver();
00044
00045 virtual void initialize();
00046
00047 virtual void start();
00048
00049 virtual void update(f32 elapsedTime);
00050
00051 virtual void stop();
00052
00053 virtual void setHardware(bool state) = 0;
00054
00055 virtual void setCollisionAccuracy(f32 accuracy) = 0;
00056 virtual void setSolverAccuracy(f32 accuracy) = 0;
00057
00058 virtual void setGravity(const core::vector3d& gravity) = 0;
00059
00060 protected:
00061
00062 static void fireCollisionStarted(Body* body1, Body* body2, const std::vector<CollisionPoint*>& points);
00063
00064 static void fireCollisionUpdate(Body* body1, Body* body2, const std::vector<CollisionPoint*>& points);
00065
00066 static void fireCollisionEnded(Body* body1, Body* body2);
00067 };
00068
00069 }
00070
00071 #endif