Model_save_load. Step 12. Evas 3d mesh is inherited from Efl.File. (functions file_set and save)
This commit is contained in:
parent
5adf8c44d9
commit
d347ff43ae
|
@ -226,8 +226,8 @@ main(void)
|
|||
mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
|
||||
evas_3d_mesh_file_set(mesh, "sonic.md2", NULL);
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_file_set("sonic.md2", NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
|
||||
|
|
|
@ -150,8 +150,9 @@ main(void)
|
|||
mesh2 = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
|
||||
evas_3d_mesh_file_set(mesh, "sonic.md2", NULL);
|
||||
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_file_set("sonic.md2", NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
|
||||
|
@ -168,11 +169,10 @@ main(void)
|
|||
0.50, 0.00, 0.50, 0.30),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_save("saved_Sonic_EET.eet", NULL));
|
||||
evas_3d_mesh_save(mesh, "saved_Sonic_EET.eet", NULL, NULL);
|
||||
evas_3d_mesh_file_set(mesh2, "saved_Sonic_EET.eet", NULL);
|
||||
|
||||
eo_do(mesh2,
|
||||
evas_3d_mesh_file_set("saved_Sonic_EET.eet", NULL),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
|
||||
mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
|
|
|
@ -174,8 +174,8 @@ _mesh_setup_model(Scene_Data *data)
|
|||
evas_3d_material_texture_set( EVAS_3D_MATERIAL_DIFFUSE, data->texture_model),
|
||||
evas_3d_material_shininess_set(100.0));
|
||||
|
||||
evas_3d_mesh_file_set(data->mesh_model, "eagle.md2", NULL);
|
||||
eo_do(data->mesh_model,
|
||||
evas_3d_mesh_file_set("eagle.md2", NULL),
|
||||
evas_3d_mesh_frame_material_set(0, data->material_model),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_DIFFUSE));
|
||||
}
|
||||
|
|
|
@ -119,8 +119,9 @@ main(void)
|
|||
mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
|
||||
|
||||
evas_3d_mesh_file_set(mesh, "sonic.md2", NULL);
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_file_set("sonic.md2", NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* and geometry to "saved_man.obj".
|
||||
*
|
||||
* @verbatim
|
||||
* gcc -o evas-3d-obj evas-3d-obj.c `pkg-config --libs --cflags evas ecore ecore-evas`
|
||||
* gcc -o evas-3d-obj evas-3d-obj.c `pkg-config --libs --cflags evas ecore ecore-evas eo`
|
||||
* @endverbatim
|
||||
*/
|
||||
|
||||
|
@ -133,8 +133,8 @@ main(void)
|
|||
mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
|
||||
evas_3d_mesh_file_set(mesh, "man_mesh.obj", NULL);
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_file_set("man_mesh.obj", NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
|
||||
|
@ -159,7 +159,7 @@ main(void)
|
|||
1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
|
||||
eo_do(mesh, evas_3d_mesh_save("saved_man.obj", NULL));
|
||||
evas_3d_mesh_save(mesh, "saved_man.obj", NULL);
|
||||
|
||||
mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
|
|
|
@ -187,20 +187,22 @@ main(void)
|
|||
for (i = 0; i < NUMBER_OF_MESHES; i++)
|
||||
{
|
||||
mesh[i] = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
evas_3d_mesh_file_set(mesh[i], path_file[i % 8], NULL);
|
||||
|
||||
eo_do(mesh[i],
|
||||
evas_3d_mesh_file_set(path_file[i % 8], NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(draw_mode[(i % 16) / 8]));
|
||||
|
||||
snprintf(buffer, PATH_MAX, "%s/Saved_%s", folder, file_name[i % 8]);
|
||||
eo_do(mesh[i], evas_3d_mesh_save(buffer, NULL));
|
||||
evas_3d_mesh_save(mesh[i], buffer, NULL, NULL);
|
||||
|
||||
if (i > 15)
|
||||
eo_do(mesh[i],
|
||||
evas_3d_mesh_file_set(path_file[i % 8], NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(draw_mode[(i % 16) / 8]));
|
||||
{
|
||||
evas_3d_mesh_file_set(mesh[i], path_file[i % 8], NULL);
|
||||
eo_do(mesh[i],
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(draw_mode[(i % 16) / 8]));
|
||||
}
|
||||
|
||||
mesh_node[i] = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
|
@ -234,7 +236,7 @@ main(void)
|
|||
/* Set the image object as render target for 3D scene. */
|
||||
eo_do(image, evas_obj_image_scene_set(scene));
|
||||
|
||||
ecore_animator_frametime_set(0.01);
|
||||
ecore_animator_frametime_set(0.03);
|
||||
for (i = 0; i < NUMBER_OF_MESHES; i++)
|
||||
anim = ecore_animator_add(_animate_scene, mesh_node[i]);
|
||||
|
||||
|
|
|
@ -218,8 +218,8 @@ main(void)
|
|||
mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
|
||||
evas_3d_mesh_file_set(mesh, "sonic.md2", NULL);
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_file_set("sonic.md2", NULL),
|
||||
evas_3d_mesh_frame_material_set(0, material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
|
||||
|
|
|
@ -840,8 +840,7 @@ _mesh_setup_gun_planet(Scene_Data *data)
|
|||
/* Setup material and texture for eagle. */
|
||||
|
||||
data->mesh_eagle = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
eo_do(data->mesh_eagle,
|
||||
evas_3d_mesh_file_set("shooter/eagle.obj", NULL));
|
||||
evas_3d_mesh_file_set(data->mesh_eagle, "shooter/eagle.obj", NULL);
|
||||
|
||||
data->material_eagle = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
|
||||
|
@ -1294,8 +1293,7 @@ _mesh_setup_warrior(Scene_Data *data, int index)
|
|||
{
|
||||
data->mesh_level[index] = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
|
||||
eo_do(data->mesh_level[index],
|
||||
evas_3d_mesh_file_set("shooter/warrior.md2", NULL));
|
||||
evas_3d_mesh_file_set(data->mesh_level[index], "shooter/warrior.md2", NULL);
|
||||
|
||||
data->material_level = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
eo_do(data->mesh_level[index],
|
||||
|
@ -1328,8 +1326,7 @@ void
|
|||
_mesh_setup_snake(Scene_Data *data)
|
||||
{
|
||||
data->mesh_snake = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
eo_do(data->mesh_snake,
|
||||
evas_3d_mesh_file_set("shooter/snake.md2", NULL));
|
||||
evas_3d_mesh_file_set(data->mesh_snake, "shooter/snake.md2", NULL);
|
||||
|
||||
data->material_snake = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
eo_do(data->mesh_snake,
|
||||
|
|
|
@ -781,33 +781,38 @@ _evas_3d_mesh_mmap_set(Eo *obj, Evas_3D_Mesh_Data *pd,
|
|||
evas_common_load_model_from_eina_file(obj, file);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_evas_3d_mesh_file_set(Eo *obj, Evas_3D_Mesh_Data *pd,
|
||||
const char *file, const char *key EINA_UNUSED)
|
||||
EOLIAN static Eina_Bool
|
||||
_evas_3d_mesh_efl_file_file_set(Eo *obj, Evas_3D_Mesh_Data *pd,
|
||||
const char *file,
|
||||
const char *key EINA_UNUSED)
|
||||
{
|
||||
_mesh_fini(pd);
|
||||
_mesh_init(pd);
|
||||
|
||||
if (file == NULL) return;
|
||||
if (file == NULL) return EINA_FALSE;
|
||||
|
||||
evas_common_load_model_from_file(obj, file);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd,
|
||||
const char *file, const char *key EINA_UNUSED)
|
||||
EOLIAN static Eina_Bool
|
||||
_evas_3d_mesh_efl_file_save(Eo *obj, Evas_3D_Mesh_Data *pd,
|
||||
const char *file,
|
||||
const char *key EINA_UNUSED,
|
||||
const char *flags EINA_UNUSED)
|
||||
{
|
||||
if ((file == NULL) || (obj == NULL) || (pd == NULL)) return;
|
||||
if ((file == NULL) || (obj == NULL) || (pd == NULL)) return EINA_FALSE;
|
||||
|
||||
Evas_3D_Mesh_Frame *f = evas_3d_mesh_frame_find(pd, 0);
|
||||
|
||||
if (f == NULL)
|
||||
{
|
||||
ERR("Not existing mesh frame.");
|
||||
return;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
evas_common_save_model_to_file(obj, file, f);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -926,4 +931,16 @@ evas_3d_mesh_interpolate_vertex_buffer_get(Evas_3D_Mesh *mesh, int frame,
|
|||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_3d_mesh_file_set(Eo *obj, const char *file, const char *key)
|
||||
{
|
||||
eo_do((Eo *) obj, efl_file_set(file, key));
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
evas_3d_mesh_save(const Eo *obj, const char *file, const char *key, const char *flags)
|
||||
{
|
||||
return eo_do((Eo *) obj, efl_file_save(file, key, flags));
|
||||
}
|
||||
|
||||
#include "canvas/evas_3d_mesh.eo.c"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface)
|
||||
class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface, Efl.File)
|
||||
{
|
||||
legacy_prefix: null;
|
||||
data: Evas_3D_Mesh_Data;
|
||||
|
@ -19,36 +19,6 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface)
|
|||
}
|
||||
}
|
||||
|
||||
file_set {
|
||||
/**
|
||||
* Load mesh data from file.
|
||||
*
|
||||
* Loading a mesh from existing file is supported. Currently, only MD2, OBJ, PLY and EET file
|
||||
* formats are supported.
|
||||
*
|
||||
* @ingroup Evas_3D_Mesh
|
||||
*/
|
||||
params {
|
||||
@in const(char)* file; /*@ Path to the mesh file. */
|
||||
@in const(char)* key; /*@ Key in the mesh file. */
|
||||
}
|
||||
}
|
||||
|
||||
save {
|
||||
/**
|
||||
* Save mesh data to file.
|
||||
*
|
||||
* Saving a mesh to file is supported. Currently, only OBJ, PLY and EET file
|
||||
* format are supported.
|
||||
*
|
||||
* @ingroup Evas_3D_Mesh
|
||||
*/
|
||||
params {
|
||||
@in const(char)* file; /*@ Path to the mesh file. */
|
||||
@in const(char)* key; /*@ Key in the mesh file. */
|
||||
}
|
||||
}
|
||||
|
||||
frame_vertex_data_set {
|
||||
/*@
|
||||
Set the vertex data of the key frame of the given mesh.
|
||||
|
@ -450,6 +420,8 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface)
|
|||
Eo.Base.destructor;
|
||||
Evas_3D_Object.update_notify;
|
||||
Evas_3D_Object.change_notify;
|
||||
Efl.File.file.set;
|
||||
Efl.File.save;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -43,13 +43,13 @@
|
|||
fail_if(mesh == NULL); \
|
||||
fail_if(mesh2 == NULL); \
|
||||
snprintf(buffer, PATH_MAX, "%s", ext); \
|
||||
eo_do(mesh, evas_3d_mesh_file_set(file->path, NULL)); \
|
||||
eo_do(mesh, evas_3d_mesh_save(buffer, NULL)); \
|
||||
eo_do(mesh2, evas_3d_mesh_file_set(buffer, NULL)); \
|
||||
evas_3d_mesh_file_set(mesh, file->path, NULL); \
|
||||
evas_3d_mesh_save(mesh, buffer, NULL, NULL); \
|
||||
evas_3d_mesh_file_set(mesh2, buffer, NULL); \
|
||||
res = _compare_meshes(mesh, mesh2); \
|
||||
fail_if(res == 1); \
|
||||
eo_do(mesh, evas_3d_mesh_mmap_set(eina_file_open(file->path, 0), NULL)); \
|
||||
eo_do(mesh, evas_3d_mesh_save(buffer, NULL)); \
|
||||
evas_3d_mesh_save(mesh, buffer, NULL, NULL); \
|
||||
eo_do(mesh2, evas_3d_mesh_mmap_set(eina_file_open(buffer, 0), NULL)); \
|
||||
res = _compare_meshes(mesh, mesh2); \
|
||||
fail_if(res == 1); \
|
||||
|
|
Loading…
Reference in New Issue