diff --git a/OdeWorld.cc b/OdeWorld.cc index fc5f437..00effa2 100644 --- a/OdeWorld.cc +++ b/OdeWorld.cc @@ -509,3 +509,27 @@ void OdeWorld::Object::getPosition(double * x, double * y, double * z) *z = m_position[2]; } } + +void OdeWorld::Object::addForce(dReal fx, dReal fy, dReal fz) +{ + if (m_body != 0) + dBodyAddForce(m_body, fx, fy, fz); +} + +void OdeWorld::Object::addRelForce(dReal fx, dReal fy, dReal fz) +{ + if (m_body != 0) + dBodyAddRelForce(m_body, fx, fy, fz); +} + +void OdeWorld::Object::addTorque(dReal fx, dReal fy, dReal fz) +{ + if (m_body != 0) + dBodyAddTorque(m_body, fx, fy, fz); +} + +void OdeWorld::Object::addRelTorque(dReal fx, dReal fy, dReal fz) +{ + if (m_body != 0) + dBodyAddRelTorque(m_body, fx, fy, fz); +} diff --git a/OdeWorld.h b/OdeWorld.h index 46bdaba..cf199cf 100644 --- a/OdeWorld.h +++ b/OdeWorld.h @@ -33,6 +33,10 @@ class OdeWorld void addCylinder(const std::vector args); void addCCylinder(const std::vector args); void addPlane(const std::vector args); + void addForce(dReal fx, dReal fy, dReal fz); + void addRelForce(dReal fx, dReal fy, dReal fz); + void addTorque(dReal fx, dReal fy, dReal fz); + void addRelTorque(dReal fx, dReal fy, dReal fz); protected: bool m_is_static;