#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "ephysics_test.h"
typedef struct _Collision_Data Collision_Data;
struct _Collision_Data {
     Test_Data base;
};
static void
_collision_cb(
void *data, 
EPhysics_Body *body __UNUSED__, 
void *event_info)
{
   Collision_Data *collision_data = data;
   int x, y, z;
   if (contact_body != collision_data->sphere2) return;
   evas_object_move(collision_data->impact, x - 10, y - 40);
                          "ephysics_test");
   INF(
"Collision Detected at (%i, %i, %i)", x, y, z);
 }
static void
_world_populate(Collision_Data *collision_data)
{
      sh1, PACKAGE_DATA_DIR "/" EPHYSICS_TEST_THEME ".edj", "shadow-ball");
   evas_object_move(sh1, WIDTH / 2, FLOOR_Y);
   evas_object_resize(sh1, 70, 3);
      collision_data->base.evas_objs, sh1);
      sphere1, PACKAGE_DATA_DIR "/" EPHYSICS_TEST_THEME ".edj",
      "big-blue-ball");
   evas_object_move(sphere1, WIDTH / 2, FLOOR_Y - 70 + 1);
   evas_object_resize(sphere1, 70, 70);
      collision_data->base.evas_objs, sphere1);
                                    update_object_cb, sh1);
      collision_data->base.bodies, sphere_body1);
   collision_data->sphere = sphere_body1;
      sh2, PACKAGE_DATA_DIR "/" EPHYSICS_TEST_THEME ".edj", "shadow-ball");
   evas_object_move(sh2, WIDTH / 8, FLOOR_Y);
   evas_object_resize(sh2, 70, 3);
      collision_data->base.evas_objs, sh2);
      sphere2, PACKAGE_DATA_DIR "/" EPHYSICS_TEST_THEME ".edj",
      "big-red-ball");
   evas_object_move(sphere2, WIDTH / 8, FLOOR_Y - 70 + 1);
   evas_object_resize(sphere2, 70, 70);
      collision_data->base.evas_objs, sphere2);
                                    update_object_cb, sh2);
   collision_data->sphere2 = sphere_body2;
      collision_data->base.bodies, sphere_body2);
      impact, PACKAGE_DATA_DIR "/" EPHYSICS_TEST_THEME ".edj", "impact");
   evas_object_resize(impact, 20, 20);
      collision_data->base.evas_objs, impact);
   collision_data->impact = impact;
}
static void
_restart(
void *data, 
Evas_Object *obj __UNUSED__, 
const char *emission __UNUSED__, 
const char *source __UNUSED__)
{
   Collision_Data *collision_data = data;
                                    _collision_cb);
   test_clean((Test_Data *)collision_data);
   _world_populate(collision_data);
                                    _collision_cb, collision_data);
}
static void
_win_del(
void *data, 
Evas *e __UNUSED__, 
Evas_Object *obj __UNUSED__, 
void *event_info __UNUSED__)
{
   Collision_Data *collision_data = data;
   test_clean((Test_Data *)collision_data);
   free(collision_data);
}
void
test_collision(
void *data __UNUSED__, 
Evas_Object *obj __UNUSED__, 
void *event_info __UNUSED__)
{
   Collision_Data *collision_data;
     return;
   collision_data = calloc(1, sizeof(Collision_Data));
   if (!collision_data)
     {
        ERR(
"Failed to create test data");
         return;
     }
   test_win_add((Test_Data *)collision_data, 
"Collision Detection", 
EINA_FALSE);
                          "ephysics_test");
                                  _win_del, collision_data);
                                  "test-theme", _restart, collision_data);
                                      WIDTH - 100, FLOOR_Y - 40, DEPTH);
   collision_data->base.world = world;
   _world_populate(collision_data);
                                    _collision_cb, collision_data);
}