forked from enlightenment/efl
edje: support applying impulse via script
SVN revision: 80279
This commit is contained in:
parent
ebf6290be7
commit
8783eb70bb
|
@ -219,3 +219,12 @@ native get_state_val(part_id, State_Param:p, ...);
|
|||
/* Multisense */
|
||||
native play_sample (sample_name[], Float:speed);
|
||||
native play_tone (tone_name[], Float:duration);
|
||||
|
||||
/***********************************************************/
|
||||
/* Edje physics calls. */
|
||||
/***********************************************************/
|
||||
/* Example:
|
||||
*
|
||||
* physics_impulse(PART:"logo", 0, 50.8, 0);
|
||||
*/
|
||||
native physics_impulse (part_id, Float:x, Float:y, Float:z);
|
||||
|
|
|
@ -2,8 +2,12 @@
|
|||
* $ edje_player -S physics_actions.edj
|
||||
* signal up impulse -> will throw both balls up
|
||||
* signal left impulse -> will throw blue ball to the left
|
||||
* message 1 FLOAT_SET 3 50 -100 0 -> apply an impulse on blue ball with
|
||||
* x = 50, y = -100, z = 0, for example
|
||||
*/
|
||||
|
||||
#define ID_IMPULSE (1)
|
||||
|
||||
collections {
|
||||
|
||||
images {
|
||||
|
@ -13,6 +17,20 @@ collections {
|
|||
group {
|
||||
name: "example_group";
|
||||
|
||||
script {
|
||||
public message(Msg_Type:type, id, ...) {
|
||||
if ((id == ID_IMPULSE) && (type == MSG_FLOAT_SET)) {
|
||||
new Float:x, Float:y, Float:z;
|
||||
new n = numargs();
|
||||
if (n < 5) return;
|
||||
x = getfarg(2);
|
||||
y = getfarg(3);
|
||||
z = getfarg(4);
|
||||
physics_impulse(PART:"blue_circle", x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parts {
|
||||
part {
|
||||
name: "background";
|
||||
|
|
|
@ -200,6 +200,8 @@
|
|||
* external_param_get_bool(id, param_name[])
|
||||
* external_param_set_bool(id, param_name[], value)
|
||||
*
|
||||
* physics_impulse(part_id, Float:x, Float:y, Float:z)
|
||||
*
|
||||
* ADD/DEL CUSTOM OBJECTS UNDER SOLE EMBRYO SCRIPT CONTROL
|
||||
*
|
||||
*/
|
||||
|
@ -3029,6 +3031,39 @@ _edje_embryo_fn_external_param_set_bool(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return _edje_external_param_set(NULL, rp, &eep);
|
||||
}
|
||||
|
||||
#ifdef HAVE_EPHYSICS
|
||||
/* physics_impulse(part_id, Float:x, Float:y, Float:z) */
|
||||
static Embryo_Cell
|
||||
_edje_embryo_fn_physics_impulse(Embryo_Program *ep, Embryo_Cell *params)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
int part_id = 0;
|
||||
Edje *ed;
|
||||
|
||||
CHKPARAM(4);
|
||||
|
||||
ed = embryo_program_data_get(ep);
|
||||
part_id = params[1];
|
||||
if (part_id < 0) return 0;
|
||||
|
||||
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||
if (rp)
|
||||
{
|
||||
if (rp->body)
|
||||
{
|
||||
double x, y, z;
|
||||
|
||||
x = (double) EMBRYO_CELL_TO_FLOAT(params[2]);
|
||||
y = (double) EMBRYO_CELL_TO_FLOAT(params[3]);
|
||||
z = (double) EMBRYO_CELL_TO_FLOAT(params[4]);
|
||||
|
||||
ephysics_body_central_impulse_apply(rp->body, x, y, z);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
_edje_embryo_script_init(Edje_Part_Collection *edc)
|
||||
{
|
||||
|
@ -3123,6 +3158,10 @@ _edje_embryo_script_init(Edje_Part_Collection *edc)
|
|||
embryo_program_native_call_add(ep, "external_param_set_choice", _edje_embryo_fn_external_param_set_choice);
|
||||
embryo_program_native_call_add(ep, "external_param_get_bool", _edje_embryo_fn_external_param_get_bool);
|
||||
embryo_program_native_call_add(ep, "external_param_set_bool", _edje_embryo_fn_external_param_set_bool);
|
||||
|
||||
#ifdef HAVE_EPHYSICS
|
||||
embryo_program_native_call_add(ep, "physics_impulse", _edje_embryo_fn_physics_impulse);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue