Ok, so what I tried right now is:
Code: Select all
rotateRidigBody(const btScalar & angle, const btVector3 & axis, CRigidBody * body)
{
btTransform trans=body->getCenterOfMassTransform();
btQuaternion quat,quat2;
quat=trans.getRotation();
irr::core::quaternion q;
q.fromAngleAxis(angle,utils::BtToIrrVec(axis));
quat2.setW(q.W);
quat2.setX(q.X);
quat2.setY(q.Y);
quat2.setZ(q.Z);
quat+=quat2;
trans.setRotation(quat);
body->setCenterOfMassTransform(trans);
}
doesn't seam to work, maybe the addition part is whats causing problems?
if so, how can I increase my body's current rotation?
EDIT: Nevermind fixed it with a bit of google
here's the code if anyones interested:
Code: Select all
void rotateRidigBody(const btScalar & angle, const btVector3 & axis, CRigidBody * body)
{
btTransform trans;
trans=body->getWorldTransform();
btQuaternion quat,quat2;
quat2.setW(cos(angle*irr::core::DEGTORAD/2));
quat2.setX(axis.getX()*sin(angle*irr::core::DEGTORAD/2));
quat2.setY(axis.getY()*sin(angle*irr::core::DEGTORAD/2));
quat2.setZ(axis.getZ()*sin(angle*irr::core::DEGTORAD/2));
trans.setRotation(quat2*quat);
body->setWorldTransform(trans);
}