aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/extantz/Evas_3D_demo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/extantz/Evas_3D_demo.c')
-rw-r--r--src/extantz/Evas_3D_demo.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/extantz/Evas_3D_demo.c b/src/extantz/Evas_3D_demo.c
index df05838..b01dd47 100644
--- a/src/extantz/Evas_3D_demo.c
+++ b/src/extantz/Evas_3D_demo.c
@@ -269,13 +269,15 @@ _sphere_init(int precision)
269Eina_Bool _animate_scene(void *data) 269Eina_Bool _animate_scene(void *data)
270{ 270{
271 globals *ourGlobals = data; 271 globals *ourGlobals = data;
272
273 static float angle = 0.0f; 272 static float angle = 0.0f;
274 static float earthAngle = 0.0f; 273 static float earthAngle = 0.0f;
275 static int frame = 0; 274 static int frame = 0;
276 static int inc = 1; 275 static int inc = 1;
277 static int sonicFrame = 0; 276 static int sonicFrame = 0;
278 Evas_Real x, y, z; 277 Evas_Real x, y, z, w;
278 EPhysics_Quaternion *quat = ephysics_quaternion_new();
279 EPhysics_Quaternion *quat1 = ephysics_quaternion_new();
280 EPhysics_Quaternion *result = ephysics_quaternion_new();
279 281
280 Scene_Data *scene = ourGlobals->scene; 282 Scene_Data *scene = ourGlobals->scene;
281 283
@@ -307,12 +309,24 @@ Eina_Bool _animate_scene(void *data)
307 ); 309 );
308 310
309 // Camera movement. 311 // Camera movement.
312 ephysics_quaternion_euler_set(quat1, ourGlobals->gld.move->r, ourGlobals->gld.move->s, ourGlobals->gld.move->t);
313 eo_do(scene->camera_node, evas_3d_node_orientation_get(EVAS_3D_SPACE_PARENT, &x, &y, &z, &w));
314 ephysics_quaternion_set(quat, x, y, z, w);
315 ephysics_quaternion_multiply(quat, quat1, result);
316 ephysics_quaternion_normalize(result);
317 ephysics_quaternion_get(result, &x, &y, &z, &w);
318 eo_do(scene->camera_node, evas_3d_node_orientation_set(x, y, z, w));
319
310 eo_do(scene->camera_node, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &x, &y, &z)); 320 eo_do(scene->camera_node, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &x, &y, &z));
311 x += ourGlobals->gld.move->x; 321 x -= ourGlobals->gld.move->x;
312 y += ourGlobals->gld.move->y; 322 y -= ourGlobals->gld.move->y;
313 z += ourGlobals->gld.move->z; 323 z -= ourGlobals->gld.move->z;
314 eo_do(scene->camera_node, evas_3d_node_position_set(x, y, z)); 324 eo_do(scene->camera_node, evas_3d_node_position_set(x, y, z));
315 325
326 free(result);
327 free(quat1);
328 free(quat);
329
316 return EINA_TRUE; 330 return EINA_TRUE;
317} 331}
318 332