EPhysics: fix issues with force application

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
This commit is contained in:
Leandro Dorileo 2012-12-11 21:11:12 +00:00
parent 2e8fcf0a23
commit 2ccf6d2a11
1 changed files with 12 additions and 7 deletions

View 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));