From 2d57360cd4f1f1076e324a1236f7ab3ffaf17139 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sat, 6 Feb 2016 22:15:30 +1000 Subject: Add test terrain support. --- media/Test%20sim/index.omg | 7 +++++++ media/Test%20sim/terrain.omg | 20 ++++++++++++++++++++ src/extantz/scenri.c | 23 +++++++++++++++++++++-- src/libraries/love.h | 3 ++- 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 media/Test%20sim/terrain.omg diff --git a/media/Test%20sim/index.omg b/media/Test%20sim/index.omg index c9d3b71..cf3f78a 100644 --- a/media/Test%20sim/index.omg +++ b/media/Test%20sim/index.omg @@ -28,6 +28,13 @@ Stuffs = size = {1.0, 1.0, 1.0}, rot = {1.0, 0.0, 0.0, 0.0}, }, + ['terrain'] = + { + fileName = 'terrain.omg', + pos = {0.0, -5.0, 0.0}, + size = {256.0, 256.0, 256.0}, + rot = {1.0, 0.0, 0.0, 0.0}, + }, }, }, } diff --git a/media/Test%20sim/terrain.omg b/media/Test%20sim/terrain.omg new file mode 100644 index 0000000..b4edf81 --- /dev/null +++ b/media/Test%20sim/terrain.omg @@ -0,0 +1,20 @@ +Stuffs = +{ + name = "onefang's terrain", + description = 'Just a pretend terrain for testing SledjHamr.', + fake = 4, + uuid = '12345678-1234-4321-abcd-01234terrain', + owner = '12345678-1234-4321-abcd-0123456789ab', + details = + { + Mesh = + { + kind = 'terrain', +-- insert prim parameters here + materials = + { + [0] = {kind = 'face', texture = 'EarthDiffuse.png'}, + }, + }, + }, +} diff --git a/src/extantz/scenri.c b/src/extantz/scenri.c index 1f51687..912aad9 100644 --- a/src/extantz/scenri.c +++ b/src/extantz/scenri.c @@ -421,7 +421,6 @@ Scene_Data *scenriAdd(Evas_Object *win) evas_object_event_callback_add(scene->image, EVAS_CALLBACK_MOUSE_DOWN, _on_mouse_down, scene); #endif - elm_win_resize_object_add(win, scene->image); scene->L = luaL_newstate(); @@ -472,7 +471,7 @@ Scene_Data *scenriAdd(Evas_Object *win) "userdata,number", 0); // Pass the enums to scenriLua. - sprintf(buf, "MeshType = {cube = %d, mesh = %d, sphere = %d}", MT_CUBE, MT_MESH, MT_SPHERE); + sprintf(buf, "MeshType = {cube = %d, mesh = %d, sphere = %d, terrain = %d}", MT_CUBE, MT_MESH, MT_SPHERE, MT_TERRAIN); doLuaString(scene->L, buf, "scenriLua"); sprintf(buf, "TextureType = {face = %d, normal = %d}", TT_FACE, TT_NORMAL); doLuaString(scene->L, buf, "scenriLua"); @@ -616,6 +615,7 @@ void stuffsSetup(ExtantzStuffs *stuffs, Scene_Data *scene, int fake) // Meshes // TODO - Write real generic cube and sphere stuff later. + // This could be a switch. if (MT_CUBE == stuffs->stuffs.details.mesh->type) { Eo *cube; @@ -654,6 +654,23 @@ void stuffsSetup(ExtantzStuffs *stuffs, Scene_Data *scene, int fake) ); eina_array_push(stuffs->mesh, me); } + else if (MT_TERRAIN == stuffs->stuffs.details.mesh->type) + { + Eo *terrain; + + eina_accessor_data_get(stuffs->aMaterial, 0, (void **) &mi); + + terrain = eo_add(EVAS_CANVAS3D_PRIMITIVE_CLASS, scene->evas); + eo_do(terrain, evas_canvas3d_primitive_form_set(EVAS_CANVAS3D_MESH_PRIMITIVE_TERRAIN)); + + me = eo_add(EVAS_CANVAS3D_MESH_CLASS, scene->evas, + evas_canvas3d_mesh_from_primitive_set(0, terrain), + evas_canvas3d_mesh_frame_material_set(0, mi), + + evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE) + ); + eina_array_push(stuffs->mesh, me); + } else { eina_accessor_data_get(stuffs->aMaterial, 0, (void **) &mi); @@ -684,6 +701,8 @@ void stuffsSetup(ExtantzStuffs *stuffs, Scene_Data *scene, int fake) stuffs->animateStuffs = (aniStuffs) _animateSphere; else if (3 == fake) stuffs->animateStuffs = (aniStuffs) _animateSonic; +// else if (4 == fake) +// stuffs->animateStuffs = (aniStuffs) _animateSphere; } diff --git a/src/libraries/love.h b/src/libraries/love.h index 1e756f8..0fe6d31 100644 --- a/src/libraries/love.h +++ b/src/libraries/love.h @@ -116,7 +116,8 @@ typedef enum { MT_CUBE, MT_MESH, - MT_SPHERE + MT_SPHERE, + MT_TERRAIN } MeshType; -- cgit v1.1