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 */
|
/* Multisense */
|
||||||
native play_sample (sample_name[], Float:speed);
|
native play_sample (sample_name[], Float:speed);
|
||||||
native play_tone (tone_name[], Float:duration);
|
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
|
* $ edje_player -S physics_actions.edj
|
||||||
* signal up impulse -> will throw both balls up
|
* signal up impulse -> will throw both balls up
|
||||||
* signal left impulse -> will throw blue ball to the left
|
* 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 {
|
collections {
|
||||||
|
|
||||||
images {
|
images {
|
||||||
|
@ -13,6 +17,20 @@ collections {
|
||||||
group {
|
group {
|
||||||
name: "example_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 {
|
parts {
|
||||||
part {
|
part {
|
||||||
name: "background";
|
name: "background";
|
||||||
|
|
|
@ -200,6 +200,8 @@
|
||||||
* external_param_get_bool(id, param_name[])
|
* external_param_get_bool(id, param_name[])
|
||||||
* external_param_set_bool(id, param_name[], value)
|
* 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
|
* 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);
|
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
|
void
|
||||||
_edje_embryo_script_init(Edje_Part_Collection *edc)
|
_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_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_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);
|
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
|
void
|
||||||
|
|
Loading…
Reference in New Issue