vrsode/include/vrsode/PhysicsBody.h

Go to the documentation of this file.
00001 
00002 #ifndef _VRSODE_PHYSICS_BODY_H_
00003 #define _VRSODE_PHYSICS_BODY_H_
00004 
00005 #include <ode/ode.h>
00006 #include <vrs/sharedobj.h>
00007 
00008 #include "CollisionBody.h"
00009 
00010 namespace vrsode
00011 {
00012 
00016 class PhysicsBody : public CollisionBody
00017 {
00018     dBodyID m_bodyId;
00019 
00020     bool m_highSpeedRotationMode;
00021     VRS::Vector m_highSpeedRotationAxis;
00022 
00023     bool m_forceSync;
00024 
00025 public:
00029     PhysicsBody(VRS::SO<VRS::SceneThing>, CollisionShape, 
00030             bool forceSync = false);
00031 
00035     PhysicsBody(VRS::SO<VRS::SceneThing>, VRS::SO<Shape>, 
00036             bool forceSync = false);
00037 
00041     ~PhysicsBody();
00042 
00047     dBodyID bodyId();
00048 
00054     double mass();
00055 
00060     void setMass(double, VRS::Vector = VRS::Vector(0,0,0));
00061 
00066     bool isEnabled() const;
00067 
00072     void setEnabled(bool);
00073 
00078     void setAutoDisableMode(bool);
00079 
00085     void setAutoDisableLinearThreshold(double);
00086 
00092     void setAutoDisableAngularThreshold(double);
00093 
00098     void setAutoDisableTime(double);
00099 
00104     void setAutoDisableSteps(unsigned int);
00105 
00112     void setHighSpeedRotationMode(bool = true);
00113 
00120     void setHighSpeedRotationAxis(VRS::Vector);
00121 
00127     void setHighSpeedRotationAxis(double, double, double);
00128 
00134     void setIgnoreGravity(bool = true);
00135 
00141     void syncTransformationsToODE();
00142 
00148     void syncTransformationsToVRS();
00149 
00154     void update();
00155 
00161     void setAngularVelocity(VRS::Vector);
00162 
00168     void setLinearVelocity(VRS::Vector);
00169 
00174     VRS::Vector angularVelocity();
00175 
00180     VRS::Vector linearVelocity();
00181 
00186     void addForce(VRS::Vector);
00187 
00192     void addTorque(VRS::Vector);
00193 
00198     void addRelativeForce(VRS::Vector);
00199 
00204     void addRelativeTorque(VRS::Vector);
00205 
00210     void addForceAtPosition(VRS::Vector, VRS::Vector);
00211 
00216     void addRelativeForceAtPosition(VRS::Vector, VRS::Vector);
00217 
00222     void addForceAtRelativePosition(VRS::Vector, VRS::Vector);
00223 
00229     void addRelativeForceAtRelativePosition(VRS::Vector, VRS::Vector);
00230 
00231     virtual void destroy();
00232 };
00233 
00234 }
00235 
00236 #endif

Generated on Fri May 11 21:01:58 2007 for Random Racer by  doxygen 1.5.1