22 #ifndef OPENRAVE_PHYSICSENGINE_H
23 #define OPENRAVE_PHYSICSENGINE_H
46 return PT_PhysicsEngine;
50 virtual bool SetPhysicsOptions(
int physicsoptions) = 0;
51 virtual int GetPhysicsOptions()
const = 0;
54 virtual bool SetPhysicsOptions(std::ostream& sout, std::istream& sinput)
RAVE_DEPRECATED = 0;
57 virtual bool InitEnvironment() = 0;
61 virtual void DestroyEnvironment() = 0;
67 virtual void RemoveKinBody(
KinBodyPtr body) = 0;
80 virtual bool SetLinkVelocities(
KinBodyPtr body,
const std::vector<std::pair<Vector,Vector> >& velocities) = 0;
89 virtual bool GetLinkVelocities(
KinBodyConstPtr body, std::vector<std::pair<Vector,Vector> >& velocities) = 0;
121 virtual Vector GetGravity() OPENRAVE_DUMMY_IMPLEMENTATION;
125 virtual
void SimulateStep(
dReal fTimeElapsed)=0;
129 std::vector<std::pair<Vector,Vector> > velocities;
130 if( !GetLinkVelocities(body, velocities) ) {
133 vLinearVelocities.resize(velocities.size());
134 vAngularVelocities.resize(velocities.size());
135 for(
size_t i = 0; i < velocities.size(); ++i) {
136 vLinearVelocities[i] = velocities[i].first;
137 vAngularVelocities[i] = velocities[i].second;
143 BOOST_ASSERT(vLinearVelocities.size()==vAngularVelocities.size());
144 std::vector<std::pair<Vector,Vector> > velocities(vLinearVelocities.size());
145 for(
size_t i = 0; i < velocities.size(); ++i) {
146 velocities[i].first = vLinearVelocities[i];
147 velocities[i].second = vAngularVelocities[i];
149 return SetLinkVelocities(body,velocities);
155 body->SetUserData(GetXMLId(), data);
159 virtual const char* GetHash()
const {