From 5bf3f3cf7dd7ebf11a7acaf1c835f373ce7e9d4f Mon Sep 17 00:00:00 2001 From: Leandro Dorileo Date: Tue, 30 Oct 2012 18:31:38 +0000 Subject: [PATCH] EPhysics: soft body rotation set Fix implementation for ephysics_body_rotation_set for soft bodies. Patch by: Leandro Dorileo SVN revision: 78679 --- legacy/ephysics/src/lib/ephysics_body.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/legacy/ephysics/src/lib/ephysics_body.cpp b/legacy/ephysics/src/lib/ephysics_body.cpp index d3186798c2..240b589bb2 100644 --- a/legacy/ephysics/src/lib/ephysics_body.cpp +++ b/legacy/ephysics/src/lib/ephysics_body.cpp @@ -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);