EPhysics: soft body rotation set

Fix implementation for ephysics_body_rotation_set for soft bodies.


Patch by: Leandro Dorileo <dorileo@profusion.mobi>



SVN revision: 78679
This commit is contained in:
Leandro Dorileo 2012-10-30 18:31:38 +00:00 committed by Bruno Dilly
parent 54a8f1678d
commit 5bf3f3cf7d
1 changed files with 8 additions and 6 deletions

View File

@ -3103,16 +3103,18 @@ ephysics_body_rotation_set(EPhysics_Body *body, double rot_x, double rot_y, doub
ephysics_world_lock_take(body->world);
ephysics_body_activate(body, EINA_TRUE);
trans = _ephysics_body_transform_get(body);
quat.setEuler(-rot_x / RAD_TO_DEG, -rot_y / RAD_TO_DEG, -rot_z / RAD_TO_DEG);
trans.setRotation(quat);
if (body->soft_body)
body->soft_body->transform(trans);
body->rigid_body->proceedToTransform(trans);
body->rigid_body->getMotionState()->setWorldTransform(trans);
body->soft_body->rotate(quat);
else
{
trans = _ephysics_body_transform_get(body);
trans.setRotation(quat);
body->rigid_body->proceedToTransform(trans);
body->rigid_body->getMotionState()->setWorldTransform(trans);
}
DBG("Body %p rotation set to (%lf, %lf, %lf)", body, rot_x, rot_y, rot_z);
ephysics_world_lock_release(body->world);