group { name: "e/comp/effects/auto/pane";
//data.item: "noclip" "1"; //setting this prevents object from being clipped to its zone during effect
script {
public message(Msg_Type:type, id, ...) {
if ((type == MSG_INT_SET) && (id == 0)) {
/* set state */
new st;
st = getarg(2);
if (st == 1)
set_state(PART:"mover", "custom", 0.0);
else
set_state(PART:"mover", "default", 0.0);
} else if ((type == MSG_INT_SET) && (id == 1)) {
/* border geom[4] / screen size[2] / desk change direction[2] */
new x, y, sw, sh, dx, dy;
sw = getarg(6);
sh = getarg(7);
dx = getarg(8);
dy = getarg(9);
x = round(sw*dx*1.5);
y = round(sh*dy*1.5);
custom_state(PART:"mover", "default", 0.0);
set_state_val(PART:"mover", STATE_REL1_OFFSET, x, y);
set_state_val(PART:"mover", STATE_REL2_OFFSET, x, y);
}
}
}
parts {
part { name: "mover"; type: SPACER;
description { state: "default" 0.0;
}
}
part { name: "e.swallow.content"; type: SWALLOW;
description { state: "default" 0.0;
rel1.to: "mover";
rel2.to: "mover";
}
}
}
programs {
program {
name: "show";
signal: "e,action,go";
source: "e";
filter: "mover" "default";
action: STATE_SET "custom" 0.0;
transition: DECELERATE COMP_EFFECT_DURATION CURRENT;
target: "mover";
after: "done";
}
program {
name: "hide";
signal: "e,action,go";
source: "e";
filter: "mover" "custom";
action: STATE_SET "default" 0.0;
transition: DECELERATE COMP_EFFECT_DURATION CURRENT;
target: "mover";
after: "done";
}
program {
name: "stop";
signal: "e,action,stop";
source: "e";
action: ACTION_STOP;
target: "show";
target: "hide";
}
program {
name: "done";
action: SIGNAL_EMIT "e,action,done" "e";
}
}
}