forked from enlightenment/efl
ephysics: collision detection inform z coordinate
SVN revision: 77778
This commit is contained in:
parent
8b9c28f003
commit
f7c2009910
|
@ -19,18 +19,18 @@ _collision_cb(void *data, EPhysics_Body *body __UNUSED__, void *event_info)
|
|||
EPhysics_Body *contact_body;
|
||||
Collision_Data *collision_data = data;
|
||||
EPhysics_Body_Collision *collision = event_info;
|
||||
int x, y;
|
||||
int x, y, z;
|
||||
|
||||
contact_body = ephysics_body_collision_contact_body_get(collision);
|
||||
if (contact_body != collision_data->sphere2) return;
|
||||
|
||||
ephysics_body_collision_position_get(collision, &x, &y);
|
||||
ephysics_body_collision_position_get(collision, &x, &y, &z);
|
||||
|
||||
evas_object_move(collision_data->impact, x - 10, y - 40);
|
||||
elm_object_signal_emit(collision_data->impact, "impact,show",
|
||||
"ephysics_test");
|
||||
|
||||
INF("Collision Detected at (%i, %i)", x, y);
|
||||
INF("Collision Detected at (%i, %i, %i)", x, y, z);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -2489,14 +2489,15 @@ EAPI void *ephysics_body_event_callback_del_full(EPhysics_Body *body, EPhysics_C
|
|||
* where the collision occurred.
|
||||
*
|
||||
* @param collision The body collision data of interest.
|
||||
* @param x The x pointer to set the x coordinate to.
|
||||
* @param y The y pointer to set the y coordinate to.
|
||||
* @param x The x coordinate of collision point, in pixels.
|
||||
* @param y The y coordinate of collision point, in pixels.
|
||||
* @param z The z coordinate of collision point, in pixels.
|
||||
*
|
||||
* @see EPHYSICS_CALLBACK_BODY_COLLISION and @ref
|
||||
* ephysics_body_event_callback_add() for collision callback.
|
||||
* @ingroup EPhysics_Body
|
||||
*/
|
||||
EAPI void ephysics_body_collision_position_get(const EPhysics_Body_Collision *collision, Evas_Coord *x, Evas_Coord *y);
|
||||
EAPI void ephysics_body_collision_position_get(const EPhysics_Body_Collision *collision, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
|
|
|
@ -30,6 +30,7 @@ struct _EPhysics_Body_Collision {
|
|||
EPhysics_Body *contact_body;
|
||||
Evas_Coord x;
|
||||
Evas_Coord y;
|
||||
Evas_Coord z;
|
||||
};
|
||||
|
||||
typedef struct _EPhysics_Body_Soft_Body_Slice
|
||||
|
@ -1116,7 +1117,7 @@ ephysics_body_evas_object_update_select(EPhysics_Body *body)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
ephysics_body_collision_position_get(const EPhysics_Body_Collision *collision, Evas_Coord *x, Evas_Coord *y)
|
||||
ephysics_body_collision_position_get(const EPhysics_Body_Collision *collision, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z)
|
||||
{
|
||||
if (!collision)
|
||||
{
|
||||
|
@ -1126,6 +1127,7 @@ ephysics_body_collision_position_get(const EPhysics_Body_Collision *collision, E
|
|||
|
||||
if (x) *x = collision->x;
|
||||
if (y) *y = collision->y;
|
||||
if (z) *z = collision->z;
|
||||
}
|
||||
|
||||
EAPI EPhysics_Body *
|
||||
|
@ -1167,6 +1169,7 @@ ephysics_body_contact_processed(EPhysics_Body *body, EPhysics_Body *contact_body
|
|||
collision->contact_body = contact_body;
|
||||
collision->x = position.getX() * rate;
|
||||
collision->y = wh + wy - (position.getY() * rate);
|
||||
collision->z = position.getZ() * rate;
|
||||
|
||||
_ephysics_body_event_callback_call(body, EPHYSICS_CALLBACK_BODY_COLLISION,
|
||||
(void *) collision);
|
||||
|
|
Loading…
Reference in New Issue