diff options
Diffstat (limited to '')
-rw-r--r-- | src/extantz/Evas_3D_demo.c | 24 |
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) | |||
269 | Eina_Bool _animate_scene(void *data) | 269 | Eina_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 | ||