forked from enlightenment/efl
ephysics: avoid many unecessary allocs / free on
collision detection Only allocates data when it has a callback registered. SVN revision: 78725
This commit is contained in:
parent
923bc3449b
commit
67f36ff048
|
@ -1347,7 +1347,7 @@ ephysics_body_contact_processed(EPhysics_Body *body, EPhysics_Body *contact_body
|
||||||
double rate;
|
double rate;
|
||||||
int wy, wh;
|
int wy, wh;
|
||||||
|
|
||||||
if ((!body) || (!contact_body))
|
if ((!body) || (!contact_body) || (body->collision_cb < 1))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
collision = (EPhysics_Body_Collision *)calloc(
|
collision = (EPhysics_Body_Collision *)calloc(
|
||||||
|
@ -2845,6 +2845,8 @@ ephysics_body_event_callback_add(EPhysics_Body *body, EPhysics_Callback_Body_Typ
|
||||||
cb->data = (void *)data;
|
cb->data = (void *)data;
|
||||||
|
|
||||||
body->callbacks = eina_inlist_append(body->callbacks, EINA_INLIST_GET(cb));
|
body->callbacks = eina_inlist_append(body->callbacks, EINA_INLIST_GET(cb));
|
||||||
|
if (type == EPHYSICS_CALLBACK_BODY_COLLISION)
|
||||||
|
body->collision_cb++;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void *
|
EAPI void *
|
||||||
|
@ -2866,8 +2868,9 @@ ephysics_body_event_callback_del(EPhysics_Body *body, EPhysics_Callback_Body_Typ
|
||||||
|
|
||||||
cb_data = cb->data;
|
cb_data = cb->data;
|
||||||
_ephysics_body_event_callback_del(body, cb);
|
_ephysics_body_event_callback_del(body, cb);
|
||||||
|
if (type == EPHYSICS_CALLBACK_BODY_COLLISION)
|
||||||
|
body->collision_cb--;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return cb_data;
|
return cb_data;
|
||||||
|
|
|
@ -114,6 +114,7 @@ struct _EPhysics_Body {
|
||||||
int cloth_columns;
|
int cloth_columns;
|
||||||
int cloth_rows;
|
int cloth_rows;
|
||||||
int material_index;
|
int material_index;
|
||||||
|
int collision_cb;
|
||||||
EPhysics_Body_Soft_Body_Data *soft_data;
|
EPhysics_Body_Soft_Body_Data *soft_data;
|
||||||
struct {
|
struct {
|
||||||
int triangle;
|
int triangle;
|
||||||
|
|
Loading…
Reference in New Issue