forked from enlightenment/efl
ephysics: activate all bodies when one is deleted
Otherwise it can lead to scenarios when a body 1, below body 2 is deleted and body 2 will stay freezed in the air. Gravity won't start to act over it until it's activated again. SVN revision: 76155
This commit is contained in:
parent
d42b1c51c2
commit
35780ad7cf
|
@ -360,6 +360,7 @@ Eina_Bool
|
||||||
ephysics_world_body_del(EPhysics_World *world, EPhysics_Body *body)
|
ephysics_world_body_del(EPhysics_World *world, EPhysics_Body *body)
|
||||||
{
|
{
|
||||||
btSoftBody *soft_body;
|
btSoftBody *soft_body;
|
||||||
|
EPhysics_Body *bd;
|
||||||
|
|
||||||
if (world->walking)
|
if (world->walking)
|
||||||
{
|
{
|
||||||
|
@ -379,6 +380,16 @@ ephysics_world_body_del(EPhysics_World *world, EPhysics_Body *body)
|
||||||
world->bodies = eina_inlist_remove(world->bodies, EINA_INLIST_GET(body));
|
world->bodies = eina_inlist_remove(world->bodies, EINA_INLIST_GET(body));
|
||||||
ephysics_orphan_body_del(body);
|
ephysics_orphan_body_del(body);
|
||||||
|
|
||||||
|
/* Activate all the bodies after a body is deleted.
|
||||||
|
Otherwise it can lead to scenarios when a body 1, below body 2 is deleted
|
||||||
|
and body 2 will stay freezed in the air. Gravity won't start to
|
||||||
|
act over it until it's activated again. */
|
||||||
|
EINA_INLIST_FOREACH(world->bodies, bd)
|
||||||
|
{
|
||||||
|
btRigidBody *rigid_body = ephysics_body_rigid_body_get(bd);
|
||||||
|
rigid_body->activate(1);
|
||||||
|
}
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue