forked from enlightenment/efl
examples: fix changes in Evas.Canvas3D namespace.
This commit is contained in:
parent
5583a93c6d
commit
356220f6d7
|
@ -74,17 +74,17 @@ static Evas_Object *menu = NULL;
|
|||
static Elm_Object_Item *menu_it = NULL;
|
||||
static Ecore_Animator *animator = NULL;
|
||||
|
||||
static Evas_3D_Scene *scene = NULL;
|
||||
static Evas_3D_Node *root_node = NULL;
|
||||
static Evas_3D_Node *camera_node = NULL;
|
||||
static Evas_3D_Camera *camera = NULL;
|
||||
static Evas_3D_Node *light_node = NULL;
|
||||
static Evas_3D_Light *light = NULL;
|
||||
static Evas_3D_Node *mesh_node = NULL;
|
||||
static Evas_3D_Mesh *mesh = NULL;
|
||||
static Evas_3D_Material *material = NULL;
|
||||
static Evas_3D_Texture *texture_diffuse = NULL;
|
||||
static Evas_3D_Texture *texture_normal = NULL;
|
||||
static Evas_Canvas3D_Scene *scene = NULL;
|
||||
static Evas_Canvas3D_Node *root_node = NULL;
|
||||
static Evas_Canvas3D_Node *camera_node = NULL;
|
||||
static Evas_Canvas3D_Camera *camera = NULL;
|
||||
static Evas_Canvas3D_Node *light_node = NULL;
|
||||
static Evas_Canvas3D_Light *light = NULL;
|
||||
static Evas_Canvas3D_Node *mesh_node = NULL;
|
||||
static Evas_Canvas3D_Mesh *mesh = NULL;
|
||||
static Evas_Canvas3D_Material *material = NULL;
|
||||
static Evas_Canvas3D_Texture *texture_diffuse = NULL;
|
||||
static Evas_Canvas3D_Texture *texture_normal = NULL;
|
||||
|
||||
static int vertex_count = 0;
|
||||
static int index_count = 0;
|
||||
|
@ -225,8 +225,8 @@ animate_scene(void *data)
|
|||
|
||||
angle += 0.05;
|
||||
|
||||
eo_do((Evas_3D_Node *)data,
|
||||
evas_3d_node_orientation_angle_axis_set(angle, 0.0, 1.0, 0.0));
|
||||
eo_do((Evas_Canvas3D_Node *)data,
|
||||
evas_canvas3d_node_orientation_angle_axis_set(angle, 0.0, 1.0, 0.0));
|
||||
|
||||
/* Rotate */
|
||||
if (angle > 360.0)
|
||||
|
@ -382,7 +382,7 @@ change_to_2d_map(void)
|
|||
elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
|
||||
elm_map_paused_set(map, EINA_TRUE);
|
||||
|
||||
eo_do(texture_diffuse, evas_3d_texture_source_visible_set(EINA_TRUE));
|
||||
eo_do(texture_diffuse, evas_canvas3d_texture_source_visible_set(EINA_TRUE));
|
||||
|
||||
evas_object_hide(image);
|
||||
|
||||
|
@ -416,8 +416,8 @@ zoom_factor_set(double new_zoom_factor)
|
|||
double s, t;
|
||||
double lon, lat;
|
||||
vec3 camera_pos_unit_vec;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Evas_Coord src_x, src_y;
|
||||
Evas_Coord src_size;
|
||||
|
||||
|
@ -433,7 +433,7 @@ zoom_factor_set(double new_zoom_factor)
|
|||
if (cur_zoom_factor < MIN_2D_ZOOM_FACTOR)
|
||||
{
|
||||
zoom_factor = MIN_2D_ZOOM_FACTOR;
|
||||
eo_do(scene, evas_3d_scene_pick(IMG_SIZE / 2, IMG_SIZE / 2,
|
||||
eo_do(scene, evas_canvas3d_scene_pick(IMG_SIZE / 2, IMG_SIZE / 2,
|
||||
&n, &m, &s, &t));
|
||||
src_size = IMG_SIZE * cur_zoom_factor;
|
||||
src_x = (Evas_Coord)(src_size * s);
|
||||
|
@ -465,13 +465,13 @@ zoom_factor_set(double new_zoom_factor)
|
|||
evas_object_resize(map, src_size, src_size);
|
||||
|
||||
/* Apply updated texture source. */
|
||||
texture_diffuse = eo_add(EVAS_3D_TEXTURE_CLASS, evas);
|
||||
texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
|
||||
eo_do(texture_diffuse,
|
||||
evas_3d_texture_source_set(map),
|
||||
evas_3d_texture_source_visible_set(EINA_FALSE));
|
||||
evas_canvas3d_texture_source_set(map),
|
||||
evas_canvas3d_texture_source_visible_set(EINA_FALSE));
|
||||
|
||||
eo_do(material,
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, texture_diffuse));
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, texture_diffuse));
|
||||
|
||||
/* Update camera position. */
|
||||
vec3_normalize(&camera_pos_unit_vec, &camera_pos);
|
||||
|
@ -480,7 +480,7 @@ zoom_factor_set(double new_zoom_factor)
|
|||
camera_pos.z = (camera_pos_unit_vec.z * MAX_CAMERA_DISTANCE) / zoom_factor;
|
||||
|
||||
eo_do(camera_node,
|
||||
evas_3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z));
|
||||
evas_canvas3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z));
|
||||
}
|
||||
|
||||
/* Update zoom slider. */
|
||||
|
@ -510,14 +510,14 @@ zoom_to_2d_map_cb(void *data,
|
|||
{
|
||||
double s, t;
|
||||
double lon, lat;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Evas_Coord src_x, src_y;
|
||||
Evas_Coord src_size;
|
||||
|
||||
if (map_dimension_state == MAP_DIMENSION_STATE_2D) return;
|
||||
|
||||
eo_do(scene, evas_3d_scene_pick(mouse_down_pos.x, mouse_down_pos.y, &n, &m, &s, &t));
|
||||
eo_do(scene, evas_canvas3d_scene_pick(mouse_down_pos.x, mouse_down_pos.y, &n, &m, &s, &t));
|
||||
src_size = (Evas_Coord)(IMG_SIZE * zoom_factor);
|
||||
src_x = (Evas_Coord)(src_size * s);
|
||||
src_y = (Evas_Coord)(src_size * t);
|
||||
|
@ -555,8 +555,8 @@ submenu_info_add(Elm_Object_Item *parent)
|
|||
char buf[50];
|
||||
double s, t;
|
||||
double lon, lat;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Evas_Coord src_x, src_y;
|
||||
Evas_Coord src_size;
|
||||
|
||||
|
@ -564,7 +564,7 @@ submenu_info_add(Elm_Object_Item *parent)
|
|||
|
||||
if (map_dimension_state == MAP_DIMENSION_STATE_3D)
|
||||
{
|
||||
eo_do(scene, evas_3d_scene_pick(mouse_down_pos.x, mouse_down_pos.y, &n, &m, &s, &t));
|
||||
eo_do(scene, evas_canvas3d_scene_pick(mouse_down_pos.x, mouse_down_pos.y, &n, &m, &s, &t));
|
||||
src_size = (Evas_Coord) (IMG_SIZE * zoom_factor);
|
||||
src_x = (Evas_Coord)(src_size * s);
|
||||
src_y = (Evas_Coord)(src_size * t);
|
||||
|
@ -611,8 +611,8 @@ map_mouse_down_cb(void *data,
|
|||
int scene_w, scene_h;
|
||||
double scene_x, scene_y;
|
||||
double s, t;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Eina_Bool pick;
|
||||
|
||||
mouse_down_pos.x = ev->canvas.x;
|
||||
|
@ -623,12 +623,12 @@ map_mouse_down_cb(void *data,
|
|||
obj_x = ev->canvas.x - x;
|
||||
obj_y = ev->canvas.y - y;
|
||||
|
||||
eo_do(scene, evas_3d_scene_size_get(&scene_w, &scene_h));
|
||||
eo_do(scene, evas_canvas3d_scene_size_get(&scene_w, &scene_h));
|
||||
|
||||
scene_x = obj_x * scene_w / (double)w;
|
||||
scene_y = obj_y * scene_h / (double)h;
|
||||
|
||||
eo_do(scene, pick = evas_3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
eo_do(scene, pick = evas_canvas3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
if (pick)
|
||||
printf("Picked : ");
|
||||
else
|
||||
|
@ -674,8 +674,8 @@ mouse_down_cb(void *data,
|
|||
int scene_w, scene_h;
|
||||
double scene_x, scene_y;
|
||||
double s, t;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Eina_Bool pick;
|
||||
|
||||
mouse_down_pos.x = ev->canvas.x;
|
||||
|
@ -693,12 +693,12 @@ mouse_down_cb(void *data,
|
|||
obj_x = ev->canvas.x - x;
|
||||
obj_y = ev->canvas.y - y;
|
||||
|
||||
eo_do(scene, evas_3d_scene_size_get(&scene_w, &scene_h));
|
||||
eo_do(scene, evas_canvas3d_scene_size_get(&scene_w, &scene_h));
|
||||
|
||||
scene_x = obj_x * scene_w / (double)w;
|
||||
scene_y = obj_y * scene_h / (double)h;
|
||||
|
||||
eo_do(scene, pick = evas_3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
eo_do(scene, pick = evas_canvas3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
if (pick)
|
||||
printf("Picked : ");
|
||||
else
|
||||
|
@ -764,17 +764,17 @@ mouse_move_cb(void *data,
|
|||
vec3_scale(&camera_pos, &camera_pos_unit_vec, distance_to_origin);
|
||||
|
||||
eo_do(camera_node,
|
||||
evas_3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
evas_canvas3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
|
||||
if (elm_check_state_get(light_toggle))
|
||||
{
|
||||
/* Update light position as the same as camera position. */
|
||||
eo_do(light_node,
|
||||
evas_3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
evas_canvas3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -791,8 +791,8 @@ mouse_up_cb(void *data,
|
|||
int scene_w, scene_h;
|
||||
double scene_x, scene_y;
|
||||
double s, t;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Eina_Bool pick;
|
||||
|
||||
evas_object_geometry_get(o, &x, &y, &w, &h);
|
||||
|
@ -800,12 +800,12 @@ mouse_up_cb(void *data,
|
|||
obj_x = ev->canvas.x - x;
|
||||
obj_y = ev->canvas.y - y;
|
||||
|
||||
eo_do(scene, evas_3d_scene_size_get(&scene_w, &scene_h));
|
||||
eo_do(scene, evas_canvas3d_scene_size_get(&scene_w, &scene_h));
|
||||
|
||||
scene_x = obj_x * scene_w / (double)w;
|
||||
scene_y = obj_y * scene_h / (double)h;
|
||||
|
||||
eo_do(scene, pick = evas_3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
eo_do(scene, pick = evas_canvas3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
if (pick)
|
||||
printf("Picked : ");
|
||||
else
|
||||
|
@ -848,29 +848,29 @@ mouse_wheel_cb(void *data,
|
|||
static void
|
||||
skybox_setup(void)
|
||||
{
|
||||
Evas_3D_Node *skybox_mesh_node;
|
||||
Evas_3D_Mesh *skybox_mesh;
|
||||
Evas_3D_Material *skybox_material;
|
||||
Evas_3D_Texture *skybox_texture_diffuse;
|
||||
Evas_Canvas3D_Node *skybox_mesh_node;
|
||||
Evas_Canvas3D_Mesh *skybox_mesh;
|
||||
Evas_Canvas3D_Material *skybox_material;
|
||||
Evas_Canvas3D_Texture *skybox_texture_diffuse;
|
||||
Evas_Object *skybox_image;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
skybox_mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
skybox_mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
eo_do(skybox_mesh,
|
||||
evas_3d_mesh_vertex_count_set(24),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_vertex_count_set(24),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
12 * sizeof(float), &skybox_vertices[0]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
12 * sizeof(float), &skybox_vertices[3]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
12 * sizeof(float), &skybox_vertices[6]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
12 * sizeof(float), &skybox_vertices[10]),
|
||||
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &skybox_indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES));
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &skybox_indices[0]),
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES));
|
||||
|
||||
/* Set skybox texture source image. */
|
||||
skybox_image = elm_image_add(win);
|
||||
|
@ -880,32 +880,32 @@ skybox_setup(void)
|
|||
evas_object_show(skybox_image);
|
||||
|
||||
/* Set skybox texture material. */
|
||||
skybox_material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
eo_do(skybox_mesh, evas_3d_mesh_frame_material_set(0, skybox_material));
|
||||
skybox_material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
eo_do(skybox_mesh, evas_canvas3d_mesh_frame_material_set(0, skybox_material));
|
||||
|
||||
skybox_texture_diffuse = eo_add(EVAS_3D_TEXTURE_CLASS, evas);
|
||||
skybox_texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
|
||||
|
||||
eo_do(skybox_texture_diffuse,
|
||||
evas_3d_texture_source_set(skybox_image),
|
||||
evas_3d_texture_source_visible_set(EINA_FALSE));
|
||||
evas_canvas3d_texture_source_set(skybox_image),
|
||||
evas_canvas3d_texture_source_visible_set(EINA_FALSE));
|
||||
|
||||
eo_do(skybox_material,
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, skybox_texture_diffuse),
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, skybox_texture_diffuse),
|
||||
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_canvas3d_material_shininess_set(50.0));
|
||||
|
||||
skybox_mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
eo_do(root_node, evas_3d_node_member_add(skybox_mesh_node));
|
||||
eo_do(skybox_mesh_node, evas_3d_node_mesh_add(skybox_mesh));
|
||||
eo_do(skybox_mesh, evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_DIFFUSE));
|
||||
skybox_mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
eo_do(root_node, evas_canvas3d_node_member_add(skybox_mesh_node));
|
||||
eo_do(skybox_mesh_node, evas_canvas3d_node_mesh_add(skybox_mesh));
|
||||
eo_do(skybox_mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_DIFFUSE));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -943,8 +943,8 @@ static void
|
|||
camera_setup(void)
|
||||
{
|
||||
/* Add the camera. */
|
||||
camera = eo_add(EVAS_3D_CAMERA_CLASS, evas);
|
||||
eo_do(camera, evas_3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 100.0));
|
||||
camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
|
||||
eo_do(camera, evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 100.0));
|
||||
|
||||
/* Set camera position. */
|
||||
camera_pos.x = 0.0;
|
||||
|
@ -961,33 +961,33 @@ camera_setup(void)
|
|||
camera_right_vec.y = 0.0;
|
||||
camera_right_vec.z = 0.0;
|
||||
|
||||
camera_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_CAMERA));
|
||||
camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
|
||||
eo_do(camera_node,
|
||||
evas_3d_node_camera_set(camera),
|
||||
evas_3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
eo_do(root_node, evas_3d_node_member_add(camera_node));
|
||||
evas_canvas3d_node_camera_set(camera),
|
||||
evas_canvas3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
eo_do(root_node, evas_canvas3d_node_member_add(camera_node));
|
||||
}
|
||||
|
||||
static void
|
||||
light_setup(void)
|
||||
{
|
||||
light = eo_add(EVAS_3D_LIGHT_CLASS, evas);
|
||||
light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
|
||||
eo_do(light,
|
||||
evas_3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_specular_set(0.2, 0.2, 0.2, 1.0));
|
||||
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_specular_set(0.2, 0.2, 0.2, 1.0));
|
||||
|
||||
light_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_LIGHT));
|
||||
light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
|
||||
eo_do(light_node,
|
||||
evas_3d_node_light_set(light),
|
||||
evas_3d_node_position_set(0.0, 0.0, MAX_CAMERA_DISTANCE),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(root_node, evas_3d_node_member_add(light_node));
|
||||
evas_canvas3d_node_light_set(light),
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, MAX_CAMERA_DISTANCE),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(root_node, evas_canvas3d_node_member_add(light_node));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -996,57 +996,57 @@ mesh_setup(void)
|
|||
/* Create a sphere mesh. */
|
||||
sphere_init(50);
|
||||
|
||||
mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_vertex_count_set(vertex_count),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_vertex_count_set(vertex_count),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
sizeof(vertex), &vertices[0].position),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
sizeof(vertex), &vertices[0].normal),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TANGENT,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TANGENT,
|
||||
sizeof(vertex), &vertices[0].tangent),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
sizeof(vertex), &vertices[0].color),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
sizeof(vertex), &vertices[0].texcoord),
|
||||
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES));
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]),
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES));
|
||||
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
eo_do(mesh, evas_3d_mesh_frame_material_set(0, material));
|
||||
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
eo_do(mesh, evas_canvas3d_mesh_frame_material_set(0, material));
|
||||
|
||||
texture_diffuse = eo_add(EVAS_3D_TEXTURE_CLASS, evas);
|
||||
texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
|
||||
eo_do(texture_diffuse,
|
||||
evas_3d_texture_source_set(map),
|
||||
evas_3d_texture_source_visible_set(EINA_FALSE));
|
||||
evas_canvas3d_texture_source_set(map),
|
||||
evas_canvas3d_texture_source_visible_set(EINA_FALSE));
|
||||
|
||||
texture_normal = eo_add(EVAS_3D_TEXTURE_CLASS, evas);
|
||||
texture_normal = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
|
||||
eo_do(texture_normal,
|
||||
evas_3d_texture_source_set(normal_map),
|
||||
evas_3d_texture_source_visible_set(EINA_FALSE));
|
||||
evas_canvas3d_texture_source_set(normal_map),
|
||||
evas_canvas3d_texture_source_visible_set(EINA_FALSE));
|
||||
|
||||
eo_do(material,
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, texture_diffuse),
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_NORMAL, texture_normal),
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, texture_diffuse),
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_NORMAL, texture_normal),
|
||||
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_NORMAL, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_NORMAL, EINA_TRUE),
|
||||
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 0.1, 0.1, 0.1, 1.0),
|
||||
evas_canvas3d_material_shininess_set(50.0));
|
||||
|
||||
mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
eo_do(root_node, evas_3d_node_member_add(mesh_node));
|
||||
eo_do(mesh_node, evas_3d_node_mesh_add(mesh));
|
||||
eo_do(mesh, evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_NORMAL_MAP));
|
||||
mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
eo_do(root_node, evas_canvas3d_node_member_add(mesh_node));
|
||||
eo_do(mesh_node, evas_canvas3d_node_mesh_add(mesh));
|
||||
eo_do(mesh, evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1117,17 +1117,17 @@ light_toggle_changed_cb(void *data,
|
|||
{
|
||||
/* Set light position as the same as camera position. */
|
||||
eo_do(light_node,
|
||||
evas_3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
evas_canvas3d_node_position_set(camera_pos.x, camera_pos.y, camera_pos.z),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Set light position to default position. */
|
||||
eo_do(light_node,
|
||||
evas_3d_node_position_set(0.0, 0.0, MAX_CAMERA_DISTANCE),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, MAX_CAMERA_DISTANCE),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1212,11 +1212,11 @@ elm_main(int argc, char **argv)
|
|||
evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_WHEEL, mouse_wheel_cb, NULL);
|
||||
|
||||
/* Add a scene object. */
|
||||
scene = eo_add(EVAS_3D_SCENE_CLASS, evas);
|
||||
scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
|
||||
|
||||
/* Add a root node for the scene. */
|
||||
root_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_NODE));
|
||||
root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
|
||||
|
||||
skybox_setup();
|
||||
texture_source_setup();
|
||||
|
@ -1226,9 +1226,9 @@ elm_main(int argc, char **argv)
|
|||
|
||||
/* Set up scene. */
|
||||
eo_do(scene,
|
||||
evas_3d_scene_root_node_set(root_node),
|
||||
evas_3d_scene_camera_node_set(camera_node),
|
||||
evas_3d_scene_size_set(WIDTH, HEIGHT));
|
||||
evas_canvas3d_scene_root_node_set(root_node),
|
||||
evas_canvas3d_scene_camera_node_set(camera_node),
|
||||
evas_canvas3d_scene_size_set(WIDTH, HEIGHT));
|
||||
eo_do(image, evas_obj_image_scene_set(scene));
|
||||
|
||||
/* Add a layout for controlers. */
|
||||
|
|
|
@ -106,8 +106,8 @@ _stop_scene(void *data,
|
|||
void *event_info)
|
||||
{
|
||||
Evas_Event_Mouse_Down *ev = event_info;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Evas_Real s, t;
|
||||
Scene_Data *d = (Scene_Data *)data;
|
||||
|
||||
|
@ -116,11 +116,11 @@ _stop_scene(void *data,
|
|||
Eina_Bool ret;
|
||||
|
||||
if (eo_do_ret(d->scene, ret,
|
||||
evas_3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, &s, &t)))
|
||||
evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, &s, &t)))
|
||||
{
|
||||
d_angle = 0.0;
|
||||
elm_object_signal_emit(btn, "mouse,down,1", "event");
|
||||
eo_do(d->mesh_node, evas_3d_node_position_set(0.0, 0.0, -0.2));
|
||||
eo_do(d->mesh_node, evas_canvas3d_node_position_set(0.0, 0.0, -0.2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ _play_scene(void *data,
|
|||
|
||||
d_angle = 0.5;
|
||||
elm_object_signal_emit(btn, "mouse,up,1", "event");
|
||||
eo_do(d->mesh_node, evas_3d_node_position_set(0.0, 0.0, 0.0));
|
||||
eo_do(d->mesh_node, evas_canvas3d_node_position_set(0.0, 0.0, 0.0));
|
||||
}
|
||||
|
||||
|
||||
|
@ -148,7 +148,7 @@ _animate_scene(void *data)
|
|||
angle += d_angle;
|
||||
|
||||
eo_do(scene->mesh_node,
|
||||
evas_3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
|
||||
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
|
||||
|
||||
/* Rotate */
|
||||
if (angle > 360.0) angle -= 360.0f;
|
||||
|
@ -159,113 +159,113 @@ _animate_scene(void *data)
|
|||
static void
|
||||
_camera_setup(Scene_Data *data)
|
||||
{
|
||||
data->camera = eo_add(EVAS_3D_CAMERA_CLASS, evas);
|
||||
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
|
||||
|
||||
eo_do(data->camera,
|
||||
evas_3d_camera_projection_perspective_set(20.0, 1.0, 2.0, 50.0));
|
||||
evas_canvas3d_camera_projection_perspective_set(20.0, 1.0, 2.0, 50.0));
|
||||
|
||||
data->camera_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_CAMERA));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
|
||||
eo_do(data->camera_node,
|
||||
evas_3d_node_camera_set(data->camera),
|
||||
evas_3d_node_position_set(0.0, 0.0, 15.0),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, -1.0, 0.0));
|
||||
eo_do(data->root_node, evas_3d_node_member_add(data->camera_node));
|
||||
evas_canvas3d_node_camera_set(data->camera),
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, 15.0),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1.0, 0.0));
|
||||
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node));
|
||||
}
|
||||
|
||||
static void
|
||||
_light_setup(Scene_Data *data)
|
||||
{
|
||||
data->light = eo_add(EVAS_3D_LIGHT_CLASS, evas);
|
||||
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
|
||||
eo_do(data->light,
|
||||
evas_3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
|
||||
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
|
||||
|
||||
data->light_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_LIGHT));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
|
||||
eo_do(data->light_node,
|
||||
evas_3d_node_light_set(data->light),
|
||||
evas_3d_node_position_set(0.0, 0.0, 10.0),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(data->root_node, evas_3d_node_member_add(data->light_node));
|
||||
evas_canvas3d_node_light_set(data->light),
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, 10.0),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
|
||||
}
|
||||
static void
|
||||
_mesh_setup(Scene_Data *data)
|
||||
{
|
||||
/* Setup material and texture as widget button. */
|
||||
data->material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
data->texture = eo_add(EVAS_3D_TEXTURE_CLASS, evas);
|
||||
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
data->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
|
||||
|
||||
eo_do(data->texture,
|
||||
evas_3d_texture_source_set(btn),
|
||||
evas_3d_texture_source_visible_set(EINA_FALSE));
|
||||
evas_canvas3d_texture_source_set(btn),
|
||||
evas_canvas3d_texture_source_visible_set(EINA_FALSE));
|
||||
|
||||
eo_do(data->material,
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, data->texture),
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, data->texture),
|
||||
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(100.0));
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_shininess_set(100.0));
|
||||
|
||||
/* Setup mesh. */
|
||||
data->mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
eo_do(data->mesh,
|
||||
evas_3d_mesh_vertex_count_set(24),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_vertex_count_set(24),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
12 * sizeof(float), &cube_vertices[ 0]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
12 * sizeof(float), &cube_vertices[ 3]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
12 * sizeof(float), &cube_vertices[ 6]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
12 * sizeof(float), &cube_vertices[10]),
|
||||
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
36, &cube_indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
|
||||
|
||||
evas_3d_mesh_frame_material_set(0, data->material));
|
||||
evas_canvas3d_mesh_frame_material_set(0, data->material));
|
||||
|
||||
data->mesh_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
eo_do(data->root_node, evas_3d_node_member_add(data->mesh_node));
|
||||
eo_do(data->mesh_node, evas_3d_node_mesh_add(data->mesh));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node));
|
||||
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh));
|
||||
}
|
||||
|
||||
static void
|
||||
_scene_setup(Scene_Data *data)
|
||||
{
|
||||
data->scene = eo_add(EVAS_3D_SCENE_CLASS, evas);
|
||||
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
|
||||
eo_do(data->scene,
|
||||
evas_3d_scene_size_set(WIDTH, HEIGHT);
|
||||
evas_3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
|
||||
evas_canvas3d_scene_size_set(WIDTH, HEIGHT);
|
||||
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
|
||||
|
||||
data->root_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_NODE));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
|
||||
|
||||
_camera_setup(data);
|
||||
_light_setup(data);
|
||||
_mesh_setup(data);
|
||||
|
||||
eo_do(data->scene,
|
||||
evas_3d_scene_root_node_set(data->root_node),
|
||||
evas_3d_scene_camera_node_set(data->camera_node));
|
||||
evas_canvas3d_scene_root_node_set(data->root_node),
|
||||
evas_canvas3d_scene_camera_node_set(data->camera_node));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -110,7 +110,7 @@ _animate_scene(void *data)
|
|||
angle += d_angle;
|
||||
|
||||
eo_do(scene->mesh_node,
|
||||
evas_3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
|
||||
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
|
||||
|
||||
/* Rotate */
|
||||
if (angle > 360.0) angle -= 360.0f;
|
||||
|
@ -121,111 +121,111 @@ _animate_scene(void *data)
|
|||
static void
|
||||
_camera_setup(Scene_Data *data)
|
||||
{
|
||||
data->camera = eo_add(EVAS_3D_CAMERA_CLASS, evas);
|
||||
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
|
||||
|
||||
eo_do(data->camera,
|
||||
evas_3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
|
||||
evas_canvas3d_camera_projection_perspective_set(60.0, 1.0, 2.0, 50.0));
|
||||
|
||||
data->camera_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_CAMERA));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
|
||||
eo_do(data->camera_node,
|
||||
evas_3d_node_camera_set(data->camera),
|
||||
evas_3d_node_position_set(0.0, 0.0, 10.0),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(data->root_node, evas_3d_node_member_add(data->camera_node));
|
||||
evas_canvas3d_node_camera_set(data->camera),
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, 10.0),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(data->root_node, evas_canvas3d_node_member_add(data->camera_node));
|
||||
}
|
||||
|
||||
static void
|
||||
_light_setup(Scene_Data *data)
|
||||
{
|
||||
data->light = eo_add(EVAS_3D_LIGHT_CLASS, evas);
|
||||
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
|
||||
eo_do(data->light,
|
||||
evas_3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
|
||||
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0));
|
||||
|
||||
data->light_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_LIGHT));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
|
||||
eo_do(data->light_node,
|
||||
evas_3d_node_light_set(data->light),
|
||||
evas_3d_node_position_set(0.0, 0.0, 10.0),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(data->root_node, evas_3d_node_member_add(data->light_node));
|
||||
evas_canvas3d_node_light_set(data->light),
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, 10.0),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(data->root_node, evas_canvas3d_node_member_add(data->light_node));
|
||||
}
|
||||
static void
|
||||
_mesh_setup(Scene_Data *data)
|
||||
{
|
||||
/* Setup material. */
|
||||
data->material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
|
||||
eo_do(data->material,
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT,
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT,
|
||||
0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE,
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE,
|
||||
0.8, 0.8, 0.8, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR,
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR,
|
||||
1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(100.0));
|
||||
evas_canvas3d_material_shininess_set(100.0));
|
||||
|
||||
/* Setup mesh. */
|
||||
data->mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
eo_do(data->mesh,
|
||||
evas_3d_mesh_vertex_count_set(24),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_vertex_count_set(24),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
12 * sizeof(float),
|
||||
&cube_vertices[ 0]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
12 * sizeof(float),
|
||||
&cube_vertices[ 3]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
12 * sizeof(float),
|
||||
&cube_vertices[ 6]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
12 * sizeof(float),
|
||||
&cube_vertices[10]),
|
||||
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
36, &cube_indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG),
|
||||
evas_3d_mesh_frame_material_set(0, data->material));
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
|
||||
evas_canvas3d_mesh_frame_material_set(0, data->material));
|
||||
|
||||
data->mesh_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
eo_do(data->root_node, evas_3d_node_member_add(data->mesh_node));
|
||||
eo_do(data->mesh_node, evas_3d_node_mesh_add(data->mesh));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
eo_do(data->root_node, evas_canvas3d_node_member_add(data->mesh_node));
|
||||
eo_do(data->mesh_node, evas_canvas3d_node_mesh_add(data->mesh));
|
||||
}
|
||||
|
||||
static void
|
||||
_scene_setup(Scene_Data *data)
|
||||
{
|
||||
data->scene = eo_add(EVAS_3D_SCENE_CLASS, evas);
|
||||
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
|
||||
eo_do(data->scene,
|
||||
evas_3d_scene_size_set(WIDTH - d_w, HEIGHT - d_h);
|
||||
evas_3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
|
||||
evas_canvas3d_scene_size_set(WIDTH - d_w, HEIGHT - d_h);
|
||||
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
|
||||
|
||||
data->root_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_NODE));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
|
||||
|
||||
_camera_setup(data);
|
||||
_light_setup(data);
|
||||
_mesh_setup(data);
|
||||
|
||||
eo_do(data->scene,
|
||||
evas_3d_scene_root_node_set(data->root_node),
|
||||
evas_3d_scene_camera_node_set(data->camera_node));
|
||||
evas_canvas3d_scene_root_node_set(data->root_node),
|
||||
evas_canvas3d_scene_camera_node_set(data->camera_node));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -238,14 +238,14 @@ _stop_scene(void *data,
|
|||
Scene_Data *d = (Scene_Data *)data;
|
||||
|
||||
eo_do(d->mesh_node,
|
||||
evas_3d_node_scale_set(0.97, 0.97, 0.97));
|
||||
evas_canvas3d_node_scale_set(0.97, 0.97, 0.97));
|
||||
|
||||
if (ev->button == 1)
|
||||
{
|
||||
Evas_3D_Node *ret;
|
||||
Evas_Canvas3D_Node *ret;
|
||||
|
||||
if (eo_do_ret(d->scene, ret,
|
||||
evas_3d_scene_exist((ev->canvas.x - (d_w / 2)),
|
||||
evas_canvas3d_scene_exist((ev->canvas.x - (d_w / 2)),
|
||||
(ev->canvas.y - (d_h / 2)),
|
||||
d->mesh_node)))
|
||||
{
|
||||
|
@ -265,7 +265,7 @@ _play_scene(void *data,
|
|||
d_angle = 0.5;
|
||||
|
||||
eo_do(d->mesh_node,
|
||||
evas_3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
evas_canvas3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -101,7 +101,7 @@ init_panel_camera_light(Evas_Object *win, Eo *camera_node, Eo *light_node, doubl
|
|||
evas_object_show(spZ);
|
||||
evas_object_smart_callback_add(spZ, "changed", _camera_light_changeZ_cb, camera_node);
|
||||
|
||||
eo_do(camera_node, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &px, &py, &pz));
|
||||
eo_do(camera_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &px, &py, &pz));
|
||||
elm_spinner_value_set(spX, px);
|
||||
elm_spinner_value_set(spY, py);
|
||||
elm_spinner_value_set(spZ, pz);
|
||||
|
@ -173,7 +173,7 @@ init_panel_camera_light(Evas_Object *win, Eo *camera_node, Eo *light_node, doubl
|
|||
evas_object_show(splZ);
|
||||
evas_object_smart_callback_add(splZ, "changed", _camera_light_changeZ_cb, light_node);
|
||||
|
||||
eo_do(light_node, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &px, &py, &pz));
|
||||
eo_do(light_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &px, &py, &pz));
|
||||
elm_spinner_value_set(splX, px);
|
||||
elm_spinner_value_set(splY, py);
|
||||
elm_spinner_value_set(splZ, pz);
|
||||
|
@ -229,9 +229,9 @@ _camera_light_changeX_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
|
||||
if ((Eo*)data)
|
||||
{
|
||||
eo_do((Eo*)data, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, NULL, &y, &z));
|
||||
eo_do((Eo*)data, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, NULL, &y, &z));
|
||||
x = elm_spinner_value_get(obj);
|
||||
eo_do((Eo*)data, evas_3d_node_position_set(x, y, z));
|
||||
eo_do((Eo*)data, evas_canvas3d_node_position_set(x, y, z));
|
||||
}
|
||||
}
|
||||
static void
|
||||
|
@ -241,9 +241,9 @@ _camera_light_changeY_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
|
||||
if ((Eo*)data)
|
||||
{
|
||||
eo_do((Eo*)data, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &x, NULL, &z));
|
||||
eo_do((Eo*)data, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, NULL, &z));
|
||||
y = elm_spinner_value_get(obj);
|
||||
eo_do((Eo*)data, evas_3d_node_position_set(x, y, z));
|
||||
eo_do((Eo*)data, evas_canvas3d_node_position_set(x, y, z));
|
||||
}
|
||||
}
|
||||
static void
|
||||
|
@ -253,9 +253,9 @@ _camera_light_changeZ_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
|
||||
if ((Eo*)data)
|
||||
{
|
||||
eo_do((Eo*)data, evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &x, &y, NULL));
|
||||
eo_do((Eo*)data, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, NULL));
|
||||
z = elm_spinner_value_get(obj);
|
||||
eo_do((Eo*)data, evas_3d_node_position_set(x, y, z));
|
||||
eo_do((Eo*)data, evas_canvas3d_node_position_set(x, y, z));
|
||||
}
|
||||
}
|
||||
static void
|
||||
|
@ -267,7 +267,7 @@ _camera_light_angle_change_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
{
|
||||
aw = elm_spinner_value_get(obj);
|
||||
aw = cos(aw * M_PI / 360.0);
|
||||
eo_do(((Eo*)data), evas_3d_node_orientation_set(key->x, key->y, key->z, aw));
|
||||
eo_do(((Eo*)data), evas_canvas3d_node_orientation_set(key->x, key->y, key->z, aw));
|
||||
}
|
||||
}
|
||||
static void
|
||||
|
|
|
@ -248,47 +248,47 @@ void _init_bounding()
|
|||
20, 21, 22, 22, 21, 23
|
||||
};
|
||||
|
||||
globalGraphical.material_box = eo_add(EVAS_3D_MATERIAL_CLASS, globalGraphical.evas);
|
||||
globalGraphical.material_box = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, globalGraphical.evas);
|
||||
|
||||
eo_do(globalGraphical.material_box,
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(100.0));
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_shininess_set(100.0));
|
||||
|
||||
/* Setup mesh. */
|
||||
globalGraphical.mesh_box = eo_add(EVAS_3D_MESH_CLASS, globalGraphical.evas);
|
||||
globalGraphical.mesh_box = eo_add(EVAS_CANVAS3D_MESH_CLASS, globalGraphical.evas);
|
||||
eo_do(globalGraphical.mesh_box,
|
||||
evas_3d_mesh_vertex_count_set(24),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_vertex_count_set(24),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
12 * sizeof(float), &cube_vertices[ 0]),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
12 * sizeof(float), &cube_vertices[ 3]),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
12 * sizeof(float), &cube_vertices[ 6]),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
12 * sizeof(float), &cube_vertices[10]),
|
||||
|
||||
evas_3d_mesh_index_data_copy_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
36, &cube_indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
|
||||
|
||||
evas_3d_mesh_frame_material_set(0, globalGraphical.material_box));
|
||||
evas_canvas3d_mesh_frame_material_set(0, globalGraphical.material_box));
|
||||
|
||||
globalGraphical.mesh_nodebox =
|
||||
eo_add(EVAS_3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH),
|
||||
evas_3d_node_position_set(0, -30.0, 0.0));
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_member_add(globalGraphical.mesh_nodebox));
|
||||
eo_do(globalGraphical.mesh_nodebox, evas_3d_node_mesh_add(globalGraphical.mesh_box));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH),
|
||||
evas_canvas3d_node_position_set(0, -30.0, 0.0));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_member_add(globalGraphical.mesh_nodebox));
|
||||
eo_do(globalGraphical.mesh_nodebox, evas_canvas3d_node_mesh_add(globalGraphical.mesh_box));
|
||||
}
|
||||
static void
|
||||
_change_scene_setup()
|
||||
|
@ -298,13 +298,13 @@ _change_scene_setup()
|
|||
int i = 0;
|
||||
int quantity = (globalGraphical.count + 1) * (globalGraphical.count + 1);
|
||||
eo_do(globalGraphical.camera,
|
||||
evas_3d_camera_projection_perspective_set(globalGraphical.angle, 1.0, 2.0, 1000));
|
||||
evas_canvas3d_camera_projection_perspective_set(globalGraphical.angle, 1.0, 2.0, 1000));
|
||||
|
||||
EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node)
|
||||
{
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_member_del(node));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_member_del(node));
|
||||
globalGraphical.list_nodes = eina_list_remove(globalGraphical.list_nodes, node);
|
||||
/*eo_del(node);Unless evas_3d_destructors work properly*/
|
||||
/*eo_del(node);Unless evas_canvas3d_destructors work properly*/
|
||||
}
|
||||
eina_list_free(globalGraphical.list_nodes);
|
||||
eina_list_free(l);
|
||||
|
@ -313,7 +313,7 @@ _change_scene_setup()
|
|||
EINA_LIST_FOREACH (globalGraphical.list_meshes, l, m)
|
||||
{
|
||||
globalGraphical.list_meshes = eina_list_remove(globalGraphical.list_meshes, m);
|
||||
/*eo_del(m); Unless evas_3d_destructors work properly*/
|
||||
/*eo_del(m); Unless evas_canvas3d_destructors work properly*/
|
||||
}
|
||||
eina_list_free(globalGraphical.list_meshes);
|
||||
eina_list_free(l);
|
||||
|
@ -322,62 +322,62 @@ _change_scene_setup()
|
|||
_sphere_init(globalGraphical.precision);
|
||||
for (i = 0; i < quantity; i++)
|
||||
{
|
||||
globalGraphical.mesh = eo_add(EVAS_3D_MESH_CLASS, globalGraphical.evas);
|
||||
globalGraphical.mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, globalGraphical.evas);
|
||||
if (!globalGraphical.model_path)
|
||||
{
|
||||
eo_do(globalGraphical.mesh,
|
||||
evas_3d_mesh_vertex_count_set(globalGraphical.vertex_count),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_vertex_count_set(globalGraphical.vertex_count),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].position),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].normal),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_TANGENT,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_TANGENT,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].tangent),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
sizeof(vertex), &globalGraphical.vertices[0].color),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].texcoord),
|
||||
|
||||
evas_3d_mesh_index_data_copy_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
globalGraphical.index_count, &globalGraphical.indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
|
||||
}
|
||||
else
|
||||
{
|
||||
eo_do(globalGraphical.mesh,
|
||||
efl_file_set(globalGraphical.model_path, NULL),
|
||||
evas_3d_mesh_frame_material_set(0, globalGraphical.material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
evas_canvas3d_mesh_frame_material_set(0, globalGraphical.material),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
|
||||
}
|
||||
|
||||
if (globalGraphical.flags.fog_enable)
|
||||
{
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_fog_enable_set(EINA_TRUE), evas_3d_mesh_fog_color_set(FOG_COLOR, FOG_FACTOR));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_fog_enable_set(EINA_TRUE), evas_canvas3d_mesh_fog_color_set(FOG_COLOR, FOG_FACTOR));
|
||||
}
|
||||
else
|
||||
{
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_fog_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_fog_enable_set(EINA_FALSE));
|
||||
}
|
||||
if (globalGraphical.flags.colorpick_enable)
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_color_pick_enable_set(EINA_TRUE));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_color_pick_enable_set(EINA_TRUE));
|
||||
else
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_color_pick_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_color_pick_enable_set(EINA_FALSE));
|
||||
|
||||
if (globalGraphical.flags.blend_enable)
|
||||
{
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_blending_enable_set(EINA_TRUE),
|
||||
evas_3d_mesh_blending_func_set(EVAS_3D_BLEND_SRC_ALPHA, EVAS_3D_BLEND_ONE_MINUS_SRC_ALPHA));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_blending_enable_set(EINA_TRUE),
|
||||
evas_canvas3d_mesh_blending_func_set(EVAS_CANVAS3D_BLEND_SRC_ALPHA, EVAS_CANVAS3D_BLEND_ONE_MINUS_SRC_ALPHA));
|
||||
}
|
||||
else
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_blending_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_blending_enable_set(EINA_FALSE));
|
||||
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_frame_material_set(0, globalGraphical.material));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_frame_material_set(0, globalGraphical.material));
|
||||
globalGraphical.list_meshes = eina_list_append(globalGraphical.list_meshes, globalGraphical.mesh);
|
||||
}
|
||||
|
||||
|
@ -386,15 +386,15 @@ _change_scene_setup()
|
|||
for (i = 0; i < quantity; i++)
|
||||
{
|
||||
globalGraphical.mesh_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH),
|
||||
evas_3d_node_position_set(globalGraphical.places[i].position.x * 20,
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH),
|
||||
evas_canvas3d_node_position_set(globalGraphical.places[i].position.x * 20,
|
||||
globalGraphical.places[i].position.y * 20,
|
||||
globalGraphical.places[i].position.z * 20));
|
||||
if (globalGraphical.model_path)
|
||||
eo_do(globalGraphical.mesh_node, evas_3d_node_scale_set(0.2, 0.2, 0.2));
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_member_add(globalGraphical.mesh_node));
|
||||
eo_do(globalGraphical.mesh_node, evas_3d_node_mesh_add((Eo*)eina_list_nth(globalGraphical.list_meshes, i)));
|
||||
eo_do(globalGraphical.mesh_node, evas_canvas3d_node_scale_set(0.2, 0.2, 0.2));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_member_add(globalGraphical.mesh_node));
|
||||
eo_do(globalGraphical.mesh_node, evas_canvas3d_node_mesh_add((Eo*)eina_list_nth(globalGraphical.list_meshes, i)));
|
||||
globalGraphical.list_nodes = eina_list_append(globalGraphical.list_nodes, globalGraphical.mesh_node);
|
||||
}
|
||||
|
||||
|
@ -405,16 +405,16 @@ _change_scene_setup()
|
|||
ecore_animator_frametime_set(0.0001);
|
||||
|
||||
if (globalGraphical.flags.shadow_enable)
|
||||
eo_do(globalGraphical.scene, evas_3d_scene_shadows_enable_set(EINA_TRUE));
|
||||
eo_do(globalGraphical.scene, evas_canvas3d_scene_shadows_enable_set(EINA_TRUE));
|
||||
else
|
||||
eo_do(globalGraphical.scene, evas_3d_scene_shadows_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.scene, evas_canvas3d_scene_shadows_enable_set(EINA_FALSE));
|
||||
|
||||
if (globalGraphical.flags.colorpick_enable)
|
||||
{
|
||||
eo_do(globalGraphical.scene, evas_3d_scene_color_pick_enable_set(EINA_TRUE));
|
||||
eo_do(globalGraphical.scene, evas_canvas3d_scene_color_pick_enable_set(EINA_TRUE));
|
||||
}
|
||||
else
|
||||
eo_do(globalGraphical.scene, evas_3d_scene_color_pick_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.scene, evas_canvas3d_scene_color_pick_enable_set(EINA_FALSE));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -425,105 +425,105 @@ _init_scene(Evas_Object *img)
|
|||
/*Allocate memory - eina_mempool*/
|
||||
|
||||
/* Add a scene object .*/
|
||||
globalGraphical.scene = eo_add(EVAS_3D_SCENE_CLASS, globalGraphical.evas);
|
||||
globalGraphical.scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, globalGraphical.evas);
|
||||
|
||||
/* Add the root node for the scene. */
|
||||
globalGraphical.root_node = eo_add(EVAS_3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_NODE));
|
||||
globalGraphical.root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
|
||||
|
||||
/* Add the camera. */
|
||||
globalGraphical.camera = eo_add(EVAS_3D_CAMERA_CLASS, globalGraphical.evas);
|
||||
globalGraphical.camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, globalGraphical.evas);
|
||||
eo_do(globalGraphical.camera,
|
||||
evas_3d_camera_projection_perspective_set(globalGraphical.angle, 1.0, 2.0, 1000.0));
|
||||
evas_canvas3d_camera_projection_perspective_set(globalGraphical.angle, 1.0, 2.0, 1000.0));
|
||||
|
||||
globalGraphical.camera_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_CAMERA));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
|
||||
eo_do(globalGraphical.camera_node,
|
||||
evas_3d_node_camera_set(globalGraphical.camera),
|
||||
evas_3d_node_position_set(0.0, 0.0, 25.0),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_member_add(globalGraphical.camera_node));
|
||||
evas_canvas3d_node_camera_set(globalGraphical.camera),
|
||||
evas_canvas3d_node_position_set(0.0, 0.0, 25.0),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_member_add(globalGraphical.camera_node));
|
||||
|
||||
globalGraphical.light = eo_add(EVAS_3D_LIGHT_CLASS, globalGraphical.evas);
|
||||
globalGraphical.light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, globalGraphical.evas);
|
||||
eo_do(globalGraphical.light,
|
||||
evas_3d_light_ambient_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_specular_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_projection_perspective_set(globalGraphical.angle / 5, 1.0, 1.0, 1000.0),
|
||||
/*evas_3d_light_projection_perspective_set(value, ...) =>
|
||||
evas_3d_light_spot_cutoff_set(~(value / 3))*/
|
||||
evas_3d_light_spot_cutoff_set(globalGraphical.angle / 15));
|
||||
evas_canvas3d_light_ambient_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_projection_perspective_set(globalGraphical.angle / 5, 1.0, 1.0, 1000.0),
|
||||
/*evas_canvas3d_light_projection_perspective_set(value, ...) =>
|
||||
evas_canvas3d_light_spot_cutoff_set(~(value / 3))*/
|
||||
evas_canvas3d_light_spot_cutoff_set(globalGraphical.angle / 15));
|
||||
|
||||
globalGraphical.light_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_LIGHT));
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
|
||||
eo_do(globalGraphical.light_node,
|
||||
evas_3d_node_light_set(globalGraphical.light),
|
||||
evas_3d_node_position_set(0.0, 100.0, 1.0),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_member_add(globalGraphical.light_node));
|
||||
evas_canvas3d_node_light_set(globalGraphical.light),
|
||||
evas_canvas3d_node_position_set(0.0, 100.0, 1.0),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_member_add(globalGraphical.light_node));
|
||||
|
||||
|
||||
globalGraphical.material = eo_add(EVAS_3D_MATERIAL_CLASS, globalGraphical.evas);
|
||||
globalGraphical.texture = eo_add(EVAS_3D_TEXTURE_CLASS, globalGraphical.evas);
|
||||
globalGraphical.material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, globalGraphical.evas);
|
||||
globalGraphical.texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, globalGraphical.evas);
|
||||
eo_do(globalGraphical.texture,
|
||||
evas_3d_texture_file_set("target_texture.png", NULL),
|
||||
evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_LINEAR,
|
||||
EVAS_3D_TEXTURE_FILTER_LINEAR),
|
||||
evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT,
|
||||
EVAS_3D_WRAP_MODE_REPEAT));
|
||||
evas_canvas3d_texture_file_set("target_texture.png", NULL),
|
||||
evas_canvas3d_texture_filter_set(EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR,
|
||||
EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR),
|
||||
evas_canvas3d_texture_wrap_set(EVAS_CANVAS3D_WRAP_MODE_REPEAT,
|
||||
EVAS_CANVAS3D_WRAP_MODE_REPEAT));
|
||||
eo_do(globalGraphical.material,
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, globalGraphical.texture),
|
||||
evas_3d_material_texture_set(EVAS_3D_MATERIAL_AMBIENT, globalGraphical.texture),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_NORMAL, EINA_TRUE),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 1.0, 0.2, 0.2, 0.2),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 1.0, 0.0, 0.0, 0.2),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 0.2));
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, globalGraphical.texture),
|
||||
evas_canvas3d_material_texture_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, globalGraphical.texture),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_NORMAL, EINA_TRUE),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 1.0, 0.2, 0.2, 0.2),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 1.0, 0.0, 0.0, 0.2),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 0.2));
|
||||
/* Add the mesh with target precision */
|
||||
_sphere_init(globalGraphical.precision);
|
||||
|
||||
for (i = 0; i < quantity; i++)
|
||||
{
|
||||
globalGraphical.mesh = eo_add(EVAS_3D_MESH_CLASS, globalGraphical.evas);
|
||||
globalGraphical.mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, globalGraphical.evas);
|
||||
if (!globalGraphical.model_path)
|
||||
{
|
||||
eo_do(globalGraphical.mesh,
|
||||
evas_3d_mesh_vertex_count_set(globalGraphical.vertex_count),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_vertex_count_set(globalGraphical.vertex_count),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].position),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].normal),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_TANGENT,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_TANGENT,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].tangent),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
sizeof(vertex), &globalGraphical.vertices[0].color),
|
||||
evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_copy_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
sizeof(vertex),
|
||||
&globalGraphical.vertices[0].texcoord),
|
||||
|
||||
evas_3d_mesh_index_data_copy_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
globalGraphical.index_count, &globalGraphical.indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
|
||||
}
|
||||
else
|
||||
{
|
||||
eo_do(globalGraphical.mesh,
|
||||
efl_file_set(globalGraphical.model_path, NULL),
|
||||
evas_3d_mesh_frame_material_set(0, globalGraphical.material),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG));
|
||||
evas_canvas3d_mesh_frame_material_set(0, globalGraphical.material),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG));
|
||||
}
|
||||
eo_do(globalGraphical.mesh, evas_3d_mesh_frame_material_set(0, globalGraphical.material));
|
||||
eo_do(globalGraphical.mesh, evas_canvas3d_mesh_frame_material_set(0, globalGraphical.material));
|
||||
globalGraphical.list_meshes = eina_list_append(globalGraphical.list_meshes, globalGraphical.mesh);
|
||||
}
|
||||
|
||||
|
@ -533,24 +533,24 @@ _init_scene(Evas_Object *img)
|
|||
for (i = 0; i < quantity; i++)
|
||||
{
|
||||
globalGraphical.mesh_node =
|
||||
eo_add(EVAS_3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH),
|
||||
evas_3d_node_position_set(globalGraphical.places[i].position.x * 20,
|
||||
eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH),
|
||||
evas_canvas3d_node_position_set(globalGraphical.places[i].position.x * 20,
|
||||
globalGraphical.places[i].position.y * 20,
|
||||
globalGraphical.places[i].position.z * 20));
|
||||
if (globalGraphical.model_path)
|
||||
eo_do(globalGraphical.mesh_node, evas_3d_node_scale_set(0.2, 0.2, 0.2));
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_member_add(globalGraphical.mesh_node));
|
||||
eo_do(globalGraphical.mesh_node, evas_3d_node_mesh_add((Eo*)eina_list_nth(globalGraphical.list_meshes, i)));
|
||||
eo_do(globalGraphical.mesh_node, evas_canvas3d_node_scale_set(0.2, 0.2, 0.2));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_member_add(globalGraphical.mesh_node));
|
||||
eo_do(globalGraphical.mesh_node, evas_canvas3d_node_mesh_add((Eo*)eina_list_nth(globalGraphical.list_meshes, i)));
|
||||
globalGraphical.list_nodes = eina_list_append(globalGraphical.list_nodes, globalGraphical.mesh_node);
|
||||
}
|
||||
|
||||
_init_bounding();
|
||||
evas_object_geometry_get(img, &x, &y, &w, &h);
|
||||
eo_do(globalGraphical.scene,
|
||||
evas_3d_scene_root_node_set(globalGraphical.root_node),
|
||||
evas_3d_scene_camera_node_set(globalGraphical.camera_node),
|
||||
evas_3d_scene_size_set(w, h));
|
||||
evas_canvas3d_scene_root_node_set(globalGraphical.root_node),
|
||||
evas_canvas3d_scene_camera_node_set(globalGraphical.camera_node),
|
||||
evas_canvas3d_scene_size_set(w, h));
|
||||
|
||||
ecore_animator_frametime_set(1.0 / (globalGraphical.speed));
|
||||
}
|
||||
|
|
|
@ -80,18 +80,18 @@ static Eina_Bool
|
|||
_animate_scene(void *data)
|
||||
{
|
||||
Eina_List *l;
|
||||
Evas_3D_Node *node;
|
||||
Evas_Canvas3D_Node *node;
|
||||
|
||||
static float angle = 0.0f;
|
||||
angle += 0.03;
|
||||
|
||||
eo_do((Evas_3D_Node *)data,
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 8 * sin(angle), 0.0, 8 * cos(angle),
|
||||
EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
eo_do((Evas_Canvas3D_Node *)data,
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 8 * sin(angle), 0.0, 8 * cos(angle),
|
||||
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
|
||||
EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node)
|
||||
{
|
||||
eo_do(node, evas_3d_node_orientation_angle_axis_set(10 * angle, 1.0, 1.0, 0.0));
|
||||
eo_do(node, evas_canvas3d_node_orientation_angle_axis_set(10 * angle, 1.0, 1.0, 0.0));
|
||||
}
|
||||
|
||||
/* Rotate */
|
||||
|
@ -113,8 +113,8 @@ _on_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
|
|||
int scene_w, scene_h;
|
||||
Evas_Real scene_x, scene_y;
|
||||
Evas_Real s, t;
|
||||
Evas_3D_Node *n;
|
||||
Evas_3D_Mesh *m;
|
||||
Evas_Canvas3D_Node *n;
|
||||
Evas_Canvas3D_Mesh *m;
|
||||
Eina_Bool pick;
|
||||
clock_t time;
|
||||
float diff_sec;
|
||||
|
@ -132,7 +132,7 @@ _on_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
|
|||
obj_x = ev->canvas.x - x;
|
||||
obj_y = ev->canvas.y - y;
|
||||
|
||||
eo_do(globalGraphical.scene, evas_3d_scene_size_get(&scene_w, &scene_h));
|
||||
eo_do(globalGraphical.scene, evas_canvas3d_scene_size_get(&scene_w, &scene_h));
|
||||
|
||||
scene_x = obj_x * scene_w / (Evas_Real)w;
|
||||
scene_y = obj_y * scene_h / (Evas_Real)h;
|
||||
|
@ -140,29 +140,29 @@ _on_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
|
|||
time = clock();
|
||||
if (globalGraphical.flags.colorpick_enable)
|
||||
{
|
||||
eo_do(globalGraphical.scene, pick = evas_3d_scene_color_pick_enable_set(EINA_TRUE));
|
||||
eo_do(globalGraphical.scene, pick = evas_canvas3d_scene_color_pick_enable_set(EINA_TRUE));
|
||||
eo_do(globalGraphical.scene,
|
||||
pick = evas_3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, NULL, NULL));
|
||||
pick = evas_canvas3d_scene_pick(ev->canvas.x, ev->canvas.y, &n, &m, NULL, NULL));
|
||||
time = clock() - time;
|
||||
diff_sec = ((float)time) / CLOCKS_PER_SEC / 10;
|
||||
if (pick)
|
||||
{
|
||||
fprintf(stdout, "Boom! Color pick time expended for pick: %2.7f \n", diff_sec);
|
||||
if (n != globalGraphical.mesh_nodebox)
|
||||
eo_do(n, evas_3d_node_scale_set(0.5, 0.5, 0.5));
|
||||
eo_do(n, evas_canvas3d_node_scale_set(0.5, 0.5, 0.5));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
eo_do(globalGraphical.scene, pick = evas_3d_scene_color_pick_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.scene, pick = evas_3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
eo_do(globalGraphical.scene, pick = evas_canvas3d_scene_color_pick_enable_set(EINA_FALSE));
|
||||
eo_do(globalGraphical.scene, pick = evas_canvas3d_scene_pick(scene_x, scene_y, &n, &m, &s, &t));
|
||||
time = clock() - time;
|
||||
diff_sec = ((float)time) / CLOCKS_PER_SEC / 10;
|
||||
if (pick)
|
||||
{
|
||||
fprintf(stdout, "Boom! Geometry pick time expended for pick: %2.7f, TexCoord (%f, %f)\n", diff_sec, s, t);
|
||||
if (n != globalGraphical.mesh_nodebox)
|
||||
eo_do(n, evas_3d_node_scale_set(0.5, 0.5, 0.5));
|
||||
eo_do(n, evas_canvas3d_node_scale_set(0.5, 0.5, 0.5));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -200,16 +200,16 @@ _node_orientation_change_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
{
|
||||
Elm_Object_Item *it;
|
||||
Eina_List *l;
|
||||
Evas_3D_Node *node;
|
||||
Evas_Canvas3D_Node *node;
|
||||
it = elm_flipselector_selected_item_get((Evas_Object*)data);
|
||||
const char *str = elm_object_item_text_get(it);
|
||||
if (str && !strcmp(str, "root node"))
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_orientation_angle_axis_set(15, 1.0, 1.0, 1.0));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_orientation_angle_axis_set(15, 1.0, 1.0, 1.0));
|
||||
else
|
||||
{
|
||||
EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node)
|
||||
{
|
||||
eo_do((Eo*)node, evas_3d_node_orientation_angle_axis_set(15, 1.0, 1.0, 1.0));
|
||||
eo_do((Eo*)node, evas_canvas3d_node_orientation_angle_axis_set(15, 1.0, 1.0, 1.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -218,16 +218,16 @@ _node_position_change_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
{
|
||||
Elm_Object_Item *it;
|
||||
Eina_List *l;
|
||||
Evas_3D_Node *node;
|
||||
Evas_Canvas3D_Node *node;
|
||||
it = elm_flipselector_selected_item_get((Evas_Object*)data);
|
||||
const char *str = elm_object_item_text_get(it);
|
||||
if (str && !strcmp(str, "root node"))
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_position_set(10.0, 1.0, 1.0));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_position_set(10.0, 1.0, 1.0));
|
||||
else
|
||||
{
|
||||
EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node)
|
||||
{
|
||||
eo_do((Eo*)node, evas_3d_node_position_set(1.0, 1.0, 1.0));
|
||||
eo_do((Eo*)node, evas_canvas3d_node_position_set(1.0, 1.0, 1.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -236,16 +236,16 @@ _node_scale_change_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
{
|
||||
Elm_Object_Item *it;
|
||||
Eina_List *l;
|
||||
Evas_3D_Node *node;
|
||||
Evas_Canvas3D_Node *node;
|
||||
it = elm_flipselector_selected_item_get((Evas_Object*)data);
|
||||
const char *str = elm_object_item_text_get(it);
|
||||
if (str && !strcmp(str, "root node"))
|
||||
eo_do(globalGraphical.root_node, evas_3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
eo_do(globalGraphical.root_node, evas_canvas3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
else
|
||||
{
|
||||
EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node)
|
||||
{
|
||||
eo_do((Eo*)node, evas_3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
eo_do((Eo*)node, evas_canvas3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -352,7 +352,7 @@ _restart_level(void *data, Evas_Object *btn, void *ev)
|
|||
EINA_LIST_FOREACH(scene->items, l, item)
|
||||
{
|
||||
eo_do(scene->root_node,
|
||||
evas_3d_node_member_del(item));
|
||||
evas_canvas3d_node_member_del(item));
|
||||
scene->items = eina_list_remove_list(scene->items, l);
|
||||
}
|
||||
|
||||
|
@ -361,7 +361,7 @@ _restart_level(void *data, Evas_Object *btn, void *ev)
|
|||
|
||||
EINA_LIST_FOREACH(scene->items, l, item)
|
||||
eo_do(scene->root_node,
|
||||
evas_3d_node_member_add(item));
|
||||
evas_canvas3d_node_member_add(item));
|
||||
|
||||
ball_position_x = 0.0;
|
||||
ball_position_y = -1.0;
|
||||
|
@ -456,19 +456,19 @@ _quit_game(void *data EINA_UNUSED, Evas_Object *btn EINA_UNUSED, void *ev EINA_U
|
|||
static void
|
||||
_camera_setup(Scene_Data *data)
|
||||
{
|
||||
data->camera = eo_add(EVAS_3D_CAMERA_CLASS, evas);
|
||||
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
|
||||
eo_do(data->camera,
|
||||
evas_3d_camera_projection_perspective_set(50.0, 1.0, 1.0, 1000.0));
|
||||
evas_canvas3d_camera_projection_perspective_set(50.0, 1.0, 1.0, 1000.0));
|
||||
|
||||
data->camera_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_CAMERA));
|
||||
data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_CAMERA));
|
||||
eo_do(data->camera_node,
|
||||
evas_3d_node_camera_set(data->camera),
|
||||
evas_3d_node_position_set(0.0, 40, 70),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
evas_canvas3d_node_camera_set(data->camera),
|
||||
evas_canvas3d_node_position_set(0.0, 40, 70),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
|
||||
eo_do(data->root_node,
|
||||
evas_3d_node_member_add(data->camera_node));
|
||||
evas_canvas3d_node_member_add(data->camera_node));
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
@ -477,7 +477,7 @@ _animate_camera(void *data)
|
|||
Scene_Data *scene = (Scene_Data *)data;
|
||||
|
||||
eo_do(scene->camera_node,
|
||||
evas_3d_node_position_set(0.0, camera_y, camera_z));
|
||||
evas_canvas3d_node_position_set(0.0, camera_y, camera_z));
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -485,55 +485,55 @@ _animate_camera(void *data)
|
|||
static void
|
||||
_light_setup(Scene_Data *data)
|
||||
{
|
||||
data->light = eo_add(EVAS_3D_LIGHT_CLASS, evas);
|
||||
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
|
||||
|
||||
eo_do(data->light,
|
||||
evas_3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_specular_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_light_projection_perspective_set(100.0, 1.0, 1.0, 1000.0));
|
||||
evas_canvas3d_light_ambient_set(0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_specular_set(1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_light_projection_perspective_set(100.0, 1.0, 1.0, 1000.0));
|
||||
|
||||
data->light_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_LIGHT));
|
||||
data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_LIGHT));
|
||||
eo_do(data->light_node,
|
||||
evas_3d_node_light_set(data->light),
|
||||
evas_3d_node_position_set(0.1, 25.0, 0.1),
|
||||
evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
evas_canvas3d_node_light_set(data->light),
|
||||
evas_canvas3d_node_position_set(0.1, 25.0, 0.1),
|
||||
evas_canvas3d_node_look_at_set(EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0));
|
||||
|
||||
eo_do(data->root_node,
|
||||
evas_3d_node_member_add(data->light_node));
|
||||
evas_canvas3d_node_member_add(data->light_node));
|
||||
}
|
||||
|
||||
static void
|
||||
_mesh_cube_setup(Scene_Data *data)
|
||||
{
|
||||
data->mesh_cube = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
data->material_cube = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
data->mesh_cube = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
data->material_cube = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
eo_do(data->material_cube,
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_shininess_set(50.0));
|
||||
|
||||
eo_do(data->mesh_cube,
|
||||
evas_3d_mesh_vertex_count_set(24),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_vertex_count_set(24),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
12 * sizeof(float), &cube_vertices[ 0]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
12 * sizeof(float), &cube_vertices[ 3]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
12 * sizeof(float), &cube_vertices[ 6]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
12 * sizeof(float), &cube_vertices[10]),
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
36, &cube_indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG),
|
||||
evas_3d_mesh_frame_material_set(0, data->material_cube));
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
|
||||
evas_canvas3d_mesh_frame_material_set(0, data->material_cube));
|
||||
|
||||
}
|
||||
static void
|
||||
|
@ -543,51 +543,51 @@ _create_bondar(Scene_Data *data, Evas_Real scale_x, Evas_Real scale_y, Evas_Real
|
|||
Eo *node = NULL;
|
||||
Eo *material = NULL;
|
||||
|
||||
mesh = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
|
||||
eo_do(material,
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_shininess_set(50.0));
|
||||
|
||||
if (color)
|
||||
eo_do(material,
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.0, 0.7, 1.0, 1.0));
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.0, 0.7, 1.0, 1.0));
|
||||
else
|
||||
eo_do(material,
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.0, 1.0, 1.0, 1.0));
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.0, 1.0, 1.0, 1.0));
|
||||
|
||||
eo_do(mesh,
|
||||
evas_3d_mesh_vertex_count_set(24),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_vertex_count_set(24),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
12 * sizeof(float), &cube_vertices[ 0]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
12 * sizeof(float), &cube_vertices[ 3]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
12 * sizeof(float), &cube_vertices[ 6]),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
12 * sizeof(float), &cube_vertices[10]),
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT,
|
||||
36, &cube_indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG),
|
||||
evas_3d_mesh_frame_material_set(0, material));
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
|
||||
evas_canvas3d_mesh_frame_material_set(0, material));
|
||||
|
||||
eo_do(data->root_node,
|
||||
evas_3d_node_member_add(node));
|
||||
evas_canvas3d_node_member_add(node));
|
||||
|
||||
eo_do(node,
|
||||
evas_3d_node_mesh_add(mesh),
|
||||
evas_3d_node_position_set(x, y, z);
|
||||
evas_3d_node_scale_set(scale_x, scale_y, scale_z));
|
||||
evas_canvas3d_node_mesh_add(mesh),
|
||||
evas_canvas3d_node_position_set(x, y, z);
|
||||
evas_canvas3d_node_scale_set(scale_x, scale_y, scale_z));
|
||||
|
||||
}
|
||||
static void
|
||||
|
@ -605,16 +605,16 @@ _create_cubes(Scene_Data *data, Evas_Real r, int count)
|
|||
Eo *node = NULL;
|
||||
|
||||
alpha = d_alpha * i * M_PI / 180;
|
||||
node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
|
||||
eo_do(node,
|
||||
evas_3d_node_mesh_add(data->mesh_cube),
|
||||
evas_3d_node_position_set(r * sin(alpha), 2.0 + (r / 4 * sin(alpha)), r * cos(alpha));
|
||||
evas_3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
evas_canvas3d_node_mesh_add(data->mesh_cube),
|
||||
evas_canvas3d_node_position_set(r * sin(alpha), 2.0 + (r / 4 * sin(alpha)), r * cos(alpha));
|
||||
evas_canvas3d_node_scale_set(1.0, 1.0, 1.0));
|
||||
|
||||
eo_do(data->root_node,
|
||||
evas_3d_node_member_add(node));
|
||||
evas_canvas3d_node_member_add(node));
|
||||
|
||||
data->items = eina_list_append(data->items, node);
|
||||
}
|
||||
|
@ -625,45 +625,45 @@ _mesh_ball_setup(Scene_Data *data)
|
|||
{
|
||||
_sphere_init(100);
|
||||
|
||||
data->mesh_ball = eo_add(EVAS_3D_MESH_CLASS, evas);
|
||||
data->material_ball = eo_add(EVAS_3D_MATERIAL_CLASS, evas);
|
||||
data->mesh_node_ball = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
|
||||
data->mesh_ball = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
|
||||
data->material_ball = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
|
||||
data->mesh_node_ball = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_MESH));
|
||||
|
||||
/* Setup material for ball. */
|
||||
eo_do(data->material_ball,
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_3d_material_shininess_set(50.0));
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, EINA_TRUE),
|
||||
evas_canvas3d_material_enable_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, EINA_TRUE),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
|
||||
evas_canvas3d_material_color_set(EVAS_CANVAS3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
|
||||
evas_canvas3d_material_shininess_set(50.0));
|
||||
|
||||
/* Setup mesh for ball. */
|
||||
eo_do(data->mesh_ball,
|
||||
evas_3d_mesh_vertex_count_set(vertex_count),
|
||||
evas_3d_mesh_frame_add(0),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION,
|
||||
evas_canvas3d_mesh_vertex_count_set(vertex_count),
|
||||
evas_canvas3d_mesh_frame_add(0),
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_POSITION,
|
||||
sizeof(vertex), &vertices[0].position),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_NORMAL,
|
||||
sizeof(vertex), &vertices[0].normal),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TANGENT,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TANGENT,
|
||||
sizeof(vertex), &vertices[0].tangent),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_COLOR,
|
||||
sizeof(vertex), &vertices[0].color),
|
||||
evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD,
|
||||
evas_canvas3d_mesh_frame_vertex_data_set(0, EVAS_CANVAS3D_VERTEX_TEXCOORD,
|
||||
sizeof(vertex), &vertices[0].texcoord),
|
||||
evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]),
|
||||
evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG),
|
||||
evas_3d_mesh_frame_material_set(0, data->material_ball));
|
||||
evas_canvas3d_mesh_index_data_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]),
|
||||
evas_canvas3d_mesh_vertex_assembly_set(EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES),
|
||||
evas_canvas3d_mesh_shade_mode_set(EVAS_CANVAS3D_SHADE_MODE_PHONG),
|
||||
evas_canvas3d_mesh_frame_material_set(0, data->material_ball));
|
||||
|
||||
eo_do(data->root_node,
|
||||
evas_3d_node_member_add(data->mesh_node_ball));
|
||||
evas_canvas3d_node_member_add(data->mesh_node_ball));
|
||||
|
||||
eo_do(data->mesh_node_ball,
|
||||
evas_3d_node_mesh_add(data->mesh_ball));
|
||||
evas_canvas3d_node_mesh_add(data->mesh_ball));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -671,16 +671,16 @@ _scene_setup(Scene_Data *data, Evas_Real r, int count)
|
|||
{
|
||||
Eina_List *l = NULL;
|
||||
Eo *item = NULL;
|
||||
data->scene = eo_add(EVAS_3D_SCENE_CLASS, evas);
|
||||
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
|
||||
|
||||
/* Add the root node for the scene. */
|
||||
data->root_node = eo_add(EVAS_3D_NODE_CLASS, evas,
|
||||
evas_3d_node_constructor(EVAS_3D_NODE_TYPE_NODE));
|
||||
data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
|
||||
evas_canvas3d_node_constructor(EVAS_CANVAS3D_NODE_TYPE_NODE));
|
||||
|
||||
eo_do(data->scene,
|
||||
evas_3d_scene_size_set(WIDTH, HEIGHT),
|
||||
evas_3d_scene_shadows_enable_set(EINA_TRUE),
|
||||
evas_3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
|
||||
evas_canvas3d_scene_size_set(WIDTH, HEIGHT),
|
||||
evas_canvas3d_scene_shadows_enable_set(EINA_TRUE),
|
||||
evas_canvas3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0));
|
||||
|
||||
_camera_setup(data);
|
||||
_light_setup(data);
|
||||
|
@ -698,8 +698,8 @@ _scene_setup(Scene_Data *data, Evas_Real r, int count)
|
|||
nodes = eina_list_append(nodes, item);
|
||||
|
||||
eo_do(data->scene,
|
||||
evas_3d_scene_root_node_set(data->root_node),
|
||||
evas_3d_scene_camera_node_set(data->camera_node));
|
||||
evas_canvas3d_scene_root_node_set(data->root_node),
|
||||
evas_canvas3d_scene_camera_node_set(data->camera_node));
|
||||
}
|
||||
|
||||
char score_buffer[32];
|
||||
|
@ -738,7 +738,7 @@ _animate_ball(void *data)
|
|||
elm_object_signal_emit(layout, "play", "efl_game");
|
||||
|
||||
eo_do(scene->mesh_node_ball,
|
||||
evas_3d_node_position_set(ball_position_x, ball_position_y, ball_position_z));
|
||||
evas_canvas3d_node_position_set(ball_position_x, ball_position_y, ball_position_z));
|
||||
|
||||
if ((ball_position_x < -21.0) || (ball_position_x > 21.0) || (ball_position_z < -21.0) || (ball_position_z > 21.0))
|
||||
{
|
||||
|
@ -792,12 +792,12 @@ _animate_ball(void *data)
|
|||
}
|
||||
|
||||
eo_do(scene->mesh_node_ball,
|
||||
evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &x, &y, &z));
|
||||
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z));
|
||||
|
||||
EINA_LIST_FOREACH(scene->items, l, node)
|
||||
{
|
||||
eo_do(node,
|
||||
evas_3d_node_position_get(EVAS_3D_SPACE_PARENT, &xx, &yy, &zz));
|
||||
evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &xx, &yy, &zz));
|
||||
|
||||
d_x = xx - x;
|
||||
d_y = yy - y;
|
||||
|
@ -806,7 +806,7 @@ _animate_ball(void *data)
|
|||
if (d_x < 2.0 && d_x > -2.0 && d_y < 2.0 && d_y > -2.0 && d_z < 2.0 && d_z > -2.0)
|
||||
{
|
||||
eo_do(scene->root_node,
|
||||
evas_3d_node_member_del(node));
|
||||
evas_canvas3d_node_member_del(node));
|
||||
scene->items = eina_list_remove_list(scene->items, l);
|
||||
|
||||
i--;
|
||||
|
@ -839,7 +839,7 @@ _animate_cubes(void *data)
|
|||
|
||||
EINA_LIST_FOREACH(scene->items, l, cube)
|
||||
eo_do(cube,
|
||||
evas_3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
|
||||
evas_canvas3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0));
|
||||
|
||||
/* Rotate */
|
||||
if (angle > 360.0)
|
||||
|
|
Loading…
Reference in New Issue