/* 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);
* $ 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 {
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";
* 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
*
*/
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)
{
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