diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2017-01-02 19:33:41 +0100 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2017-01-05 16:31:26 +0100 |
| commit | fa5403dccd986022b2a849e2078f043c3225348a (patch) | |
| tree | 223fac13363b078720cd6e0d04d6adf53edc5dc9 /Items.c4d/Sensors.c4d/Timer.c4d/Script.c | |
| download | DTSensors.c4d-fa5403dccd986022b2a849e2078f043c3225348a.tar.gz DTSensors.c4d-fa5403dccd986022b2a849e2078f043c3225348a.zip | |
Initial
Diffstat (limited to 'Items.c4d/Sensors.c4d/Timer.c4d/Script.c')
| -rw-r--r-- | Items.c4d/Sensors.c4d/Timer.c4d/Script.c | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/Script.c b/Items.c4d/Sensors.c4d/Timer.c4d/Script.c new file mode 100644 index 0000000..e41043a --- /dev/null +++ b/Items.c4d/Sensors.c4d/Timer.c4d/Script.c @@ -0,0 +1,112 @@ +#strict 2
+#include SN7I
+
+local interval, timer, setupUser, repeats, repeatCount;
+
+func Init()
+{
+ interval = 35;
+}
+
+func ControlThrow(object caller)
+{
+ Toggle();
+ return ClearCom(caller);
+}
+
+func ControlThrowDouble() { return ControlThrow(...); }
+
+func Triggers() { return [["$Timeout$"]];}
+
+func Setup(object caller, int &menuIndex)
+{
+ setupUser = caller;
+ AddMenuItem(Format("$Interval$", interval), "SetTimerEntry", GetID(), caller, 0, menuIndex++, 0, C4MN_Add_ForceNoDesc);
+ AddMenuItem(Format("$Repeats$", (repeats && Format("%d", repeats)) || "$InfRepeats$"), "SetRepeatsEntry", GetID(), caller, 0, menuIndex++, 0, C4MN_Add_ForceNoDesc);
+ AddMenuItem((!timer && "$Start$") || "$Stop$", "ToggleActive", GetID(), caller, 0, menuIndex++, 0, C4MN_Add_ForceNoDesc);
+ AddMenuItem("$Test$", "Timeout", GetID(), caller, 0, menuIndex++, 0, C4MN_Add_ForceNoDesc);
+ return true;
+}
+
+func SetTimerEntry(id id, int menuIndex, bool right)
+{
+ interval = Max(1, interval - (right * 2 - 1));
+ _Setup(setupUser);
+ SelectMenuItem(menuIndex, setupUser);
+ if(timer)
+ {
+ RemoveTimer(timer);
+ timer = 0;
+ timer = AddTimer("Timeout", interval);
+ }
+}
+
+func SetRepeatsEntry(id id, int menuIndex, bool right)
+{
+ repeats = Max(0, repeats - (right * 2 - 1));
+ _Setup(setupUser);
+ SelectMenuItem(menuIndex, setupUser);
+}
+
+func ToggleActive(id id, int menuIndex, bool right)
+{
+ Toggle();
+ _Setup(setupUser);
+ SelectMenuItem(menuIndex, setupUser);
+}
+
+func Toggle()
+{
+ if(timer)
+ {
+ Stop();
+ }
+ else
+ {
+ Start();
+ }
+}
+
+func Stop()
+{
+ if(timer)
+ {
+ RemoveTimer(timer);
+ timer = 0;
+ SetAction("Idle");
+ }
+}
+
+func Start()
+{
+ if(!timer)
+ {
+ timer = AddTimer("Timeout", interval);
+ SetAction("On");
+ repeatCount = 0;
+ }
+}
+
+func Timeout(sym, int menuIndex)
+{
+ Trigger(0, this);
+ if(GetType(sym) == C4V_C4ID)
+ {
+ _Setup(setupUser);
+ SelectMenuItem(menuIndex, setupUser);
+ }
+ else if(!sym && repeats && ++repeatCount >= repeats)
+ {
+ Stop();
+ }
+}
+
+func SingleShot()
+{
+ ScheduleCall(this, "Timeout", interval);
+}
+
+func SensorCallbacks()
+{
+ return [["$SingleShot$", "SingleShot"], ["$Start$", "Start"], ["$Stop$", "Stop"]];
+}
|
