forked from enlightenment/efl
parent
1f87c5e933
commit
42b7ef900b
|
@ -223,7 +223,9 @@ enum State_Param
|
|||
STATE_PHYSICS_HARDNESS = 52,
|
||||
STATE_PHYSICS_MOV_FREEDOM_LIN = 53,
|
||||
STATE_PHYSICS_MOV_FREEDOM_ANG = 54,
|
||||
STATE_PHYSICS_BACK_CULL = 55
|
||||
STATE_PHYSICS_BACK_CULL = 55,
|
||||
STATE_PHYSICS_Z = 56,
|
||||
STATE_PHYSICS_DEPTH = 57
|
||||
};
|
||||
|
||||
native set_state_val(part_id, State_Param:p, ...);
|
||||
|
|
|
@ -328,6 +328,8 @@ static void st_collections_group_parts_part_description_physics_density(void);
|
|||
static void st_collections_group_parts_part_description_physics_hardness(void);
|
||||
static void st_collections_group_parts_part_description_physics_ignore_part_pos(void);
|
||||
static void st_collections_group_parts_part_description_physics_light_on(void);
|
||||
static void st_collections_group_parts_part_description_physics_z(void);
|
||||
static void st_collections_group_parts_part_description_physics_depth(void);
|
||||
static void st_collections_group_parts_part_description_physics_movement_freedom_linear(void);
|
||||
static void st_collections_group_parts_part_description_physics_movement_freedom_angular(void);
|
||||
static void st_collections_group_parts_part_description_physics_backface_cull(void);
|
||||
|
@ -635,6 +637,8 @@ New_Statement_Handler statement_handlers[] =
|
|||
{"collections.group.parts.part.description.physics.movement_freedom.angular", st_collections_group_parts_part_description_physics_movement_freedom_angular},
|
||||
{"collections.group.parts.part.description.physics.ignore_part_pos", st_collections_group_parts_part_description_physics_ignore_part_pos},
|
||||
{"collections.group.parts.part.description.physics.light_on", st_collections_group_parts_part_description_physics_light_on},
|
||||
{"collections.group.parts.part.description.physics.z", st_collections_group_parts_part_description_physics_z},
|
||||
{"collections.group.parts.part.description.physics.depth", st_collections_group_parts_part_description_physics_depth},
|
||||
{"collections.group.parts.part.description.physics.backface_cull", st_collections_group_parts_part_description_physics_backface_cull},
|
||||
{"collections.group.parts.part.description.physics.faces.face.type", st_collections_group_parts_part_description_physics_face_type},
|
||||
{"collections.group.parts.part.description.physics.faces.face.source", st_collections_group_parts_part_description_physics_face_source},
|
||||
|
@ -1149,6 +1153,8 @@ _edje_part_description_alloc(unsigned char type, const char *collection, const c
|
|||
result->physics.mov_freedom.lin.x = 1;
|
||||
result->physics.mov_freedom.lin.y = 1;
|
||||
result->physics.mov_freedom.ang.z = 1;
|
||||
result->physics.z = -15;
|
||||
result->physics.depth = 30;
|
||||
#endif
|
||||
|
||||
return result;
|
||||
|
@ -7265,6 +7271,8 @@ st_collections_group_parts_part_description_table_min(void)
|
|||
density: 3.2;
|
||||
hardness: 0.42;
|
||||
light_on: 1;
|
||||
z: -15;
|
||||
depth: 30;
|
||||
movement_freedom {
|
||||
..
|
||||
}
|
||||
|
@ -7565,6 +7573,48 @@ st_collections_group_parts_part_description_physics_light_on(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
@page edcref
|
||||
@property
|
||||
z
|
||||
@parameters
|
||||
[body position in z axis]
|
||||
@effect
|
||||
Defines body position in z axis. It's set to -15 by default.
|
||||
@endproperty
|
||||
@since 1.8.0
|
||||
*/
|
||||
#ifdef HAVE_EPHYSICS
|
||||
static void
|
||||
st_collections_group_parts_part_description_physics_z(void)
|
||||
{
|
||||
check_arg_count(1);
|
||||
|
||||
current_desc->physics.z = parse_int(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
@page edcref
|
||||
@property
|
||||
depth
|
||||
@parameters
|
||||
[body's depth]
|
||||
@effect
|
||||
Defines body's depth (z axis). It's set to 30 by default.
|
||||
@endproperty
|
||||
@since 1.8.0
|
||||
*/
|
||||
#ifdef HAVE_EPHYSICS
|
||||
static void
|
||||
st_collections_group_parts_part_description_physics_depth(void)
|
||||
{
|
||||
check_arg_count(1);
|
||||
|
||||
current_desc->physics.depth = parse_int(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
@page edcref
|
||||
@property
|
||||
|
|
|
@ -156,6 +156,8 @@ collections {
|
|||
aspect: 1 1;
|
||||
physics {
|
||||
mass: 30;
|
||||
z: -24;
|
||||
depth: 48;
|
||||
restitution: 0.85;
|
||||
movement_freedom {
|
||||
linear: 1 1 1;
|
||||
|
|
|
@ -514,6 +514,8 @@ collections {
|
|||
set_state_val(PART:"red_circle", STATE_PHYSICS_LIGHT_ON, 1);
|
||||
set_state_val(PART:"red_circle",
|
||||
STATE_PHYSICS_IGNORE_PART_POS, 1);
|
||||
set_state_val(PART:"red_circle", STATE_PHYSICS_Z, -40);
|
||||
set_state_val(PART:"red_circle", STATE_PHYSICS_DEPTH, 80);
|
||||
set_state(PART:"red_circle", "custom", 0.0);
|
||||
|
||||
get_state_val(PART:"red_circle", STATE_PHYSICS_MASS, mass);
|
||||
|
@ -541,6 +543,12 @@ collections {
|
|||
get_state_val(PART:"red_circle",
|
||||
STATE_PHYSICS_IGNORE_PART_POS, val);
|
||||
send_message(MSG_STRING_INT, 1, "Ignore Part Pos", val);
|
||||
|
||||
get_state_val(PART:"red_circle", STATE_PHYSICS_Z, val);
|
||||
send_message(MSG_STRING_INT, 1, "Z", val);
|
||||
|
||||
get_state_val(PART:"red_circle", STATE_PHYSICS_DEPTH, val);
|
||||
send_message(MSG_STRING_INT, 1, "Depth", val);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2314,6 +2314,8 @@ _edje_part_recalc_single(Edje *ed,
|
|||
params->physics.mov_freedom.ang.y = desc->physics.mov_freedom.ang.y;
|
||||
params->physics.mov_freedom.ang.z = desc->physics.mov_freedom.ang.z;
|
||||
params->physics.backcull = desc->physics.backcull;
|
||||
params->physics.z = desc->physics.z;
|
||||
params->physics.depth = desc->physics.depth;
|
||||
#endif
|
||||
_edje_part_recalc_single_map(ed, ep, center, light, persp, desc, chosen_desc, params);
|
||||
}
|
||||
|
@ -2478,22 +2480,28 @@ _edje_physics_body_props_update(Edje_Real_Part *ep, Edje_Calc_Params *pf, Eina_B
|
|||
pf->physics.mov_freedom.ang.x,
|
||||
pf->physics.mov_freedom.ang.y,
|
||||
pf->physics.mov_freedom.ang.z);
|
||||
|
||||
/* Boundaries geometry and mass shouldn't be changed */
|
||||
if (ep->part->physics_body < EDJE_PART_PHYSICS_BODY_BOUNDARY_TOP)
|
||||
{
|
||||
Evas_Coord x, y, z, w, h, d;
|
||||
|
||||
if (pos_update)
|
||||
{
|
||||
Evas_Coord z;
|
||||
ephysics_body_geometry_get(ep->body, NULL, NULL, &z,
|
||||
NULL, NULL, NULL);
|
||||
ephysics_body_move(ep->body, ep->edje->x + pf->x,
|
||||
ep->edje->y + pf->y, z);
|
||||
ep->edje->y + pf->y, pf->physics.z);
|
||||
ep->x = pf->x;
|
||||
ep->y = pf->y;
|
||||
ep->w = pf->w;
|
||||
ep->h = pf->h;
|
||||
}
|
||||
|
||||
ephysics_body_geometry_get(ep->body, &x, &y, &z, &w, &h, &d);
|
||||
if ((d) && (d != pf->physics.depth))
|
||||
ephysics_body_resize(ep->body, w, h, pf->physics.depth);
|
||||
if (z != pf->physics.z)
|
||||
ephysics_body_move(ep->body, x, y, pf->physics.z);
|
||||
|
||||
ephysics_body_material_set(ep->body, pf->physics.material);
|
||||
if (!pf->physics.material)
|
||||
{
|
||||
|
@ -3008,6 +3016,9 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
p3->physics.sleep.angular = TO_DOUBLE(FINTP(
|
||||
p1->physics.sleep.angular, p2->physics.sleep.angular, pos));
|
||||
|
||||
p3->physics.z = INTP(p1->physics.z, p2->physics.z, pos);
|
||||
p3->physics.depth = INTP(p1->physics.depth, p2->physics.depth, pos);
|
||||
|
||||
if ((p1->physics.ignore_part_pos) && (p2->physics.ignore_part_pos))
|
||||
p3->physics.ignore_part_pos = 1;
|
||||
else
|
||||
|
@ -3241,6 +3252,8 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
case EDJE_PART_TYPE_EXTERNAL:
|
||||
/* visibility and color have no meaning on SWALLOW and GROUP part. */
|
||||
#ifdef HAVE_EPHYSICS
|
||||
eo_do(ep->object,
|
||||
evas_obj_size_set(pf->w, pf->h));
|
||||
if ((ep->part->physics_body) && (!ep->body))
|
||||
{
|
||||
if (_edje_physics_world_geometry_check(ep->edje->world))
|
||||
|
@ -3258,13 +3271,13 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
ep, pf, !pf->physics.ignore_part_pos);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
eo_do(ep->object,
|
||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y));
|
||||
}
|
||||
eo_do(ep->object,
|
||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y));
|
||||
#else
|
||||
eo_do(ep->object,
|
||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y),
|
||||
evas_obj_size_set(pf->w, pf->h));
|
||||
#endif
|
||||
|
||||
if (ep->nested_smart)
|
||||
{ /* Move, Resize all nested parts */
|
||||
|
|
|
@ -537,6 +537,8 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.material", physics.material, EET_T_UCHAR); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.density", physics.density, EET_T_DOUBLE); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.hardness", physics.hardness, EET_T_DOUBLE); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.z", physics.z, EET_T_INT); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.depth", physics.depth, EET_T_INT); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.ignore_part_pos", physics.ignore_part_pos, EET_T_UCHAR); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.light_on", physics.light_on, EET_T_UCHAR); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.backcull", physics.backcull, EET_T_UCHAR); \
|
||||
|
@ -621,6 +623,8 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.material", Dec.physics.material, EET_T_UCHAR); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.density", Dec.physics.density, EET_T_DOUBLE); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.hardness", Dec.physics.hardness, EET_T_DOUBLE); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.z", Dec.physics.z, EET_T_INT); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.depth", Dec.physics.depth, EET_T_INT); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.ignore_part_pos", Dec.physics.ignore_part_pos, EET_T_UCHAR); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.light_on", Dec.physics.light_on, EET_T_UCHAR); \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.backcull", Dec.physics.backcull, EET_T_UCHAR); \
|
||||
|
|
|
@ -2338,6 +2338,16 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
|
||||
GETINT(rp->custom->description->physics.backcull, params[3]);
|
||||
break;
|
||||
case EDJE_STATE_PARAM_PHYSICS_Z:
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom->description->physics.z, params[3]);
|
||||
break;
|
||||
case EDJE_STATE_PARAM_PHYSICS_DEPTH:
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom->description->physics.depth, params[3]);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
|
@ -2866,6 +2876,16 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
|
||||
SETINT(rp->custom->description->physics.backcull, params[3]);
|
||||
break;
|
||||
case EDJE_STATE_PARAM_PHYSICS_Z:
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom->description->physics.z, params[3]);
|
||||
break;
|
||||
case EDJE_STATE_PARAM_PHYSICS_DEPTH:
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom->description->physics.depth, params[3]);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -428,7 +428,9 @@ typedef struct _Edje_Markup_Filter_Callback Edje_Markup_Filter_Callback;
|
|||
#define EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_LIN 53
|
||||
#define EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_ANG 54
|
||||
#define EDJE_STATE_PARAM_PHYSICS_BACK_CULL 55
|
||||
#define EDJE_STATE_PARAM_LAST 56
|
||||
#define EDJE_STATE_PARAM_PHYSICS_Z 56
|
||||
#define EDJE_STATE_PARAM_PHYSICS_DEPTH 57
|
||||
#define EDJE_STATE_PARAM_LAST 58
|
||||
|
||||
#define EDJE_ENTRY_EDIT_MODE_NONE 0
|
||||
#define EDJE_ENTRY_EDIT_MODE_SELECTABLE 1
|
||||
|
@ -1016,6 +1018,8 @@ struct _Edje_Part_Description_Common
|
|||
double linear;
|
||||
double angular;
|
||||
} sleep;
|
||||
int z;
|
||||
int depth;
|
||||
Eina_List *faces; /* faces for 3d effects */
|
||||
struct {
|
||||
struct {
|
||||
|
@ -1379,6 +1383,8 @@ struct _Edje_Calc_Params
|
|||
double linear; //8
|
||||
double angular; //8
|
||||
} sleep; // 16
|
||||
int z; // 4
|
||||
int depth; // 4
|
||||
struct {
|
||||
struct {
|
||||
unsigned char x;
|
||||
|
|
Loading…
Reference in New Issue