Model_save_load. Step 4. Evas_3D_Mesh_File_Type sank into oblivion. Changing entry point to model_save_load. Changing API in examples.

This commit is contained in:
Bogdan Devichev 2014-11-27 17:19:24 +02:00
parent 291291e027
commit 42562b3ddf
14 changed files with 59 additions and 74 deletions

View File

@ -227,7 +227,7 @@ main(void)
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(mesh,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL),
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));

View File

@ -151,7 +151,7 @@ main(void)
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(mesh,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL),
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));
@ -169,11 +169,10 @@ main(void)
evas_3d_material_shininess_set(50.0));
eo_do(mesh,
evas_3d_mesh_save(EVAS_3D_MESH_FILE_TYPE_EET,
"saved_Sonic_EET.eet", NULL));
evas_3d_mesh_save("saved_Sonic_EET.eet", NULL));
eo_do(mesh2,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_EET, "saved_Sonic_EET.eet", NULL),
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,

View File

@ -175,7 +175,7 @@ _mesh_setup_model(Scene_Data *data)
evas_3d_material_shininess_set(100.0));
eo_do(data->mesh_model,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "eagle.md2", NULL),
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));
}

View File

@ -120,7 +120,7 @@ main(void)
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(mesh,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL),
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));

View File

@ -134,7 +134,7 @@ main(void)
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(mesh,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_OBJ, "man_mesh.obj", NULL),
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(EVAS_3D_MESH_FILE_TYPE_OBJ, "saved_man", NULL));
eo_do(mesh, evas_3d_mesh_save("saved_man", NULL));
mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas,
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));

View File

@ -189,16 +189,16 @@ main(void)
mesh[i] = eo_add(EVAS_3D_MESH_CLASS, evas);
eo_do(mesh[i],
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_PLY, path_file[i % 8], NULL),
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(EVAS_3D_MESH_FILE_TYPE_PLY, buffer, NULL));
eo_do(mesh[i], evas_3d_mesh_save(buffer, NULL));
if (i > 15)
eo_do(mesh[i],
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_PLY, path_file[i % 8], NULL),
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]));

View File

@ -219,7 +219,7 @@ main(void)
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(mesh,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL),
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));

View File

@ -841,7 +841,7 @@ _mesh_setup_gun_planet(Scene_Data *data)
data->mesh_eagle = eo_add(EVAS_3D_MESH_CLASS, evas);
eo_do(data->mesh_eagle,
evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_OBJ, "shooter/eagle.obj", NULL));
evas_3d_mesh_file_set("shooter/eagle.obj", NULL));
data->material_eagle = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
@ -1295,7 +1295,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(EVAS_3D_MESH_FILE_TYPE_MD2, "shooter/warrior.md2", NULL));
evas_3d_mesh_file_set("shooter/warrior.md2", NULL));
data->material_level = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(data->mesh_level[index],
@ -1329,7 +1329,7 @@ _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(EVAS_3D_MESH_FILE_TYPE_MD2, "shooter/snake.md2", NULL));
evas_3d_mesh_file_set("shooter/snake.md2", NULL));
data->material_snake = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
eo_do(data->mesh_snake,

View File

@ -720,21 +720,6 @@ typedef enum _Evas_3D_Material_Attrib
EVAS_3D_MATERIAL_NORMAL, /**< Normal map term */
} Evas_3D_Material_Attrib;
/**
* Mesh file type
*
* @since 1.10
* @ingroup Evas_3D_Types
*/
typedef enum _Evas_3D_Mesh_File_Type
{
EVAS_3D_MESH_FILE_TYPE_NONE = 0, /**< Noone from read formats */
EVAS_3D_MESH_FILE_TYPE_MD2, /**< Quake's MD2 mesh file format */
EVAS_3D_MESH_FILE_TYPE_OBJ, /**< Wavefront OBJ file format */
EVAS_3D_MESH_FILE_TYPE_EET, /**< EET - own EFL file format */
EVAS_3D_MESH_FILE_TYPE_PLY, /**< Stanford PLY mesh file format */
} Evas_3D_Mesh_File_Type;
#include "canvas/evas_image.eo.h"
#include "canvas/evas_3d_camera.eo.h"

View File

@ -770,18 +770,19 @@ _evas_3d_mesh_fog_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
}
EOLIAN static void
_evas_3d_mesh_file_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type, const char *file, const char *key EINA_UNUSED)
_evas_3d_mesh_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;
evas_common_load_model_to_file(obj, file, type);
evas_common_load_model_to_file(obj, file);
}
EOLIAN static void
_evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type,
_evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd,
const char *file, const char *key EINA_UNUSED)
{
if ((file == NULL) || (obj == NULL) || (pd == NULL)) return;
@ -794,7 +795,7 @@ _evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type,
return;
}
evas_common_save_model_to_file(obj, file, f, type);
evas_common_save_model_to_file(obj, file, f);
}
static inline void

View File

@ -14,7 +14,6 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface)
* @ingroup Evas_3D_Mesh
*/
params {
@in Evas_3D_Mesh_File_Type type; /*@ The type of the mesh file. */
@in const(char)* file; /*@ Path to the mesh file. */
@in const(char)* key; /*@ Key in the mesh file. */
}
@ -30,7 +29,6 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface)
* @ingroup Evas_3D_Mesh
*/
params {
@in Evas_3D_Mesh_File_Type type; /*@ The type of the mesh file. */
@in const(char)* file; /*@ Path to the mesh file. */
@in const(char)* key; /*@ Key in the mesh file. */
}

View File

@ -9,26 +9,26 @@
void
evas_common_load_model_to_file(Evas_3D_Mesh *model,
const char *file,
Evas_3D_Mesh_File_Type type)
evas_common_load_model_to_file(Evas_3D_Mesh *model, const char *file)
{
switch (type)
char *p;
char *loader = NULL;
p = strrchr(file, '.');
if (p)
{
case EVAS_3D_MESH_FILE_TYPE_MD2:
evas_model_load_file_md2(model, file);
break;
case EVAS_3D_MESH_FILE_TYPE_OBJ:
evas_model_load_file_obj(model, file);
break;
case EVAS_3D_MESH_FILE_TYPE_EET:
evas_model_load_file_eet(model, file);
break;
case EVAS_3D_MESH_FILE_TYPE_PLY:
evas_model_load_file_ply(model, file);
break;
default:
ERR("Invalid mesh file type.");
break;
p++;
#define CHECK_EXTENTION_BY_FILE_NAME(extention) \
if (!strcasecmp(p, #extention)) \
{ \
evas_model_load_file_##extention(model, file); \
loader = #extention; \
}
CHECK_EXTENTION_BY_FILE_NAME(eet)
CHECK_EXTENTION_BY_FILE_NAME(md2)
CHECK_EXTENTION_BY_FILE_NAME(obj)
CHECK_EXTENTION_BY_FILE_NAME(ply)
#undef CHECK_EXTENTION_BY_FILE_NAME
}
if (!loader) ERR("Invalid mesh file type.");
}

View File

@ -7,26 +7,28 @@
#include "evas_common_private.h"
#include "evas_private.h"
void
evas_common_save_model_to_file(Evas_3D_Mesh *model,
const char *file,
Evas_3D_Mesh_Frame *f,
Evas_3D_Mesh_File_Type type)
Evas_3D_Mesh_Frame *f)
{
switch (type)
char *p;
char *saver = NULL;
p = strrchr(file, '.');
if (p)
{
case EVAS_3D_MESH_FILE_TYPE_OBJ:
evas_model_save_file_obj(model, file, f);
break;
case EVAS_3D_MESH_FILE_TYPE_EET:
evas_model_save_file_eet(model, file, f);
break;
case EVAS_3D_MESH_FILE_TYPE_PLY:
evas_model_save_file_ply(model, file, f);
break;
default:
ERR("Invalid mesh file type.");
break;
p++;
#define CHECK_EXTENTION_BY_FILE_NAME(extention) \
if (!strcasecmp(p, #extention)) \
{ \
evas_model_save_file_##extention(model, file, f); \
saver = #extention; \
}
CHECK_EXTENTION_BY_FILE_NAME(eet)
CHECK_EXTENTION_BY_FILE_NAME(obj)
CHECK_EXTENTION_BY_FILE_NAME(ply)
#undef CHECK_EXTENTION_BY_FILE_NAME
}
if (!saver) ERR("Invalid mesh file type.");
}

View File

@ -1637,8 +1637,8 @@ void _evas_3d_eet_descriptor_shutdown(void);
void _evas_3d_eet_file_free(void);
/* Temporary save/load functions */
void evas_common_load_model_to_file(Evas_3D_Mesh *model, const char *file, Evas_3D_Mesh_File_Type type);
void evas_common_save_model_to_file(Evas_3D_Mesh *model, const char *file, Evas_3D_Mesh_Frame *f, Evas_3D_Mesh_File_Type type);
void evas_common_load_model_to_file(Evas_3D_Mesh *model, const char *file);
void evas_common_save_model_to_file(Evas_3D_Mesh *model, const char *file, Evas_3D_Mesh_Frame *f);
void evas_model_load_file_eet(Evas_3D_Mesh *mesh, const char *file);
void evas_model_load_file_md2(Evas_3D_Mesh *mesh, const char *file);
void evas_model_load_file_obj(Evas_3D_Mesh *mesh, const char *file);