EPhysics: fix issues with force application
authorLeandro Dorileo <dorileo@profusion.mobi>
Tue, 11 Dec 2012 21:11:12 +0000 (21:11 +0000)
committerLeandro Dorileo <dorileo@profusion.mobi>
Tue, 11 Dec 2012 21:11:12 +0000 (21:11 +0000)
This patch fixes the forces apply, the current implementation will
never apply it. We're also applying rate twice, get rid of rate on
forces_apply function.

SVN revision: 80719

legacy/ephysics/src/lib/ephysics_body.cpp

index 5fde811..576c2b8 100644 (file)
@@ -544,6 +544,11 @@ _ephysics_body_forces_update(EPhysics_Body *body)
    body->force.torque_y = body->rigid_body->getTotalTorque().getY();
    body->force.torque_z = body->rigid_body->getTotalTorque().getZ();
    body->rigid_body->clearForces();
+
+   DBG("forces updated: %lf, %lf, %lf", body->force.x, body->force.y,
+       body->force.z);
+   DBG("torque updated: %lf, %lf, %lf", body->force.torque_x,
+       body->force.torque_y, body->force.torque_z);
 }
 
 static inline void
@@ -1683,18 +1688,18 @@ _ephysics_body_outside_render_area_check(EPhysics_Body *body)
 void
 ephysics_body_forces_apply(EPhysics_Body *body)
 {
-   double rate;
-
    if (!((body->force.x) || (body->force.y) || (body->force.z) ||
          (body->force.torque_x) || (body->force.torque_y) ||
          (body->force.torque_z)))
-       return;
+     return;
+
+   DBG("body: %p, applying forces: %lf, %lf, %lf", body, body->force.x,
+       body->force.y, body->force.z);
 
-   rate = ephysics_world_rate_get(body->world);
    ephysics_body_activate(body, EINA_TRUE);
-   body->rigid_body->applyCentralForce(btVector3(body->force.x / rate,
-                                                 body->force.y / rate,
-                                                 body->force.z / rate));
+   body->rigid_body->applyCentralForce(btVector3(body->force.x,
+                                                 body->force.y,
+                                                 body->force.z));
    body->rigid_body->applyTorque(btVector3(body->force.torque_x,
                                            body->force.torque_y,
                                            body->force.torque_z));