From f66cb39a983b366dde925bacd597ed9365f01b00 Mon Sep 17 00:00:00 2001 From: josh Date: Mon, 19 Oct 2009 17:24:23 +0000 Subject: [PATCH] added Object::setRotation() git-svn-id: svn://anubis/misc/OdeWorld@192 bd8a9e45-a331-0410-811e-c64571078777 --- OdeWorld.cc | 16 ++++++++++++++++ OdeWorld.h | 1 + 2 files changed, 17 insertions(+) diff --git a/OdeWorld.cc b/OdeWorld.cc index f70f03e..c48af07 100644 --- a/OdeWorld.cc +++ b/OdeWorld.cc @@ -510,6 +510,22 @@ void OdeWorld::Object::getPosition(double * x, double * y, double * z) } } +void OdeWorld::Object::setRotation(dReal x, dReal y, dReal z) +{ + dMatrix3 r; + dRFromEulerAngles(r, x, y, z); + if (m_is_static) + { + for (int i = 0, sz = m_geoms.size(); i < sz; i++) + dGeomSetRotation(m_geoms[i], r); + } + else + { + if (m_body != 0) + dBodySetRotation(m_body, r); + } +} + void OdeWorld::Object::addForce(dReal fx, dReal fy, dReal fz) { if (m_body != 0) diff --git a/OdeWorld.h b/OdeWorld.h index cf199cf..593c61c 100644 --- a/OdeWorld.h +++ b/OdeWorld.h @@ -24,6 +24,7 @@ class OdeWorld void loadPhy(const std::string & path); void setPosition(double x, double y, double z); void getPosition(double * x, double * y, double * z); + void setRotation(dReal x, dReal y, dReal z); const dReal * getPosition(); const dReal * getRotation(); std::vector loadPhy(const std::string & path,