summaryrefslogtreecommitdiffstats
path: root/Items.c4d/Sensors.c4d/Timer.c4d
diff options
context:
space:
mode:
Diffstat (limited to 'Items.c4d/Sensors.c4d/Timer.c4d')
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/ActMap.txt7
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/DefCore.txt18
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/Graphics.pngbin0 -> 3860 bytes
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/Names.txt2
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/Script.c112
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/StringTblDE.txt8
-rw-r--r--Items.c4d/Sensors.c4d/Timer.c4d/StringTblUS.txt8
7 files changed, 155 insertions, 0 deletions
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/ActMap.txt b/Items.c4d/Sensors.c4d/Timer.c4d/ActMap.txt
new file mode 100644
index 0000000..7dc639a
--- /dev/null
+++ b/Items.c4d/Sensors.c4d/Timer.c4d/ActMap.txt
@@ -0,0 +1,7 @@
+[Action]
+Name=On
+Facet=0,0,10,5
+Length=2
+Delay=35
+NextAction=On
+Reverse=1
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/Timer.c4d/DefCore.txt
new file mode 100644
index 0000000..5b2a80f
--- /dev/null
+++ b/Items.c4d/Sensors.c4d/Timer.c4d/DefCore.txt
@@ -0,0 +1,18 @@
+[DefCore]
+id=TI7I
+Name=Timer
+Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase
+Width=10
+Height=5
+Offset=-5,-2
+Mass=10
+Value=5
+Components=METL=1;
+Picture=0,5,64,64
+Vertices=1
+VertexFriction=100
+Grab=2
+Collectible=1
+MaxUserSelect=10
+Rebuy=1
+NoPushEnter=1
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/Graphics.png b/Items.c4d/Sensors.c4d/Timer.c4d/Graphics.png
new file mode 100644
index 0000000..a42131c
--- /dev/null
+++ b/Items.c4d/Sensors.c4d/Timer.c4d/Graphics.png
Binary files differ
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/Names.txt b/Items.c4d/Sensors.c4d/Timer.c4d/Names.txt
new file mode 100644
index 0000000..5e3934a
--- /dev/null
+++ b/Items.c4d/Sensors.c4d/Timer.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Zeitgeber
+US:Timer
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"]];
+}
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/StringTblDE.txt b/Items.c4d/Sensors.c4d/Timer.c4d/StringTblDE.txt
new file mode 100644
index 0000000..7cf46ee
--- /dev/null
+++ b/Items.c4d/Sensors.c4d/Timer.c4d/StringTblDE.txt
@@ -0,0 +1,8 @@
+Timeout=Zeitablauf
+Interval=Zeitintervall: %d Frames
+Start=Starten
+Stop=Stoppen
+SingleShot=Einzelne Verzögerung
+Test=Testsignal auslösen
+Repeats=Wiederholungen: %s
+InfRepeats=Endlos
diff --git a/Items.c4d/Sensors.c4d/Timer.c4d/StringTblUS.txt b/Items.c4d/Sensors.c4d/Timer.c4d/StringTblUS.txt
new file mode 100644
index 0000000..ae1e896
--- /dev/null
+++ b/Items.c4d/Sensors.c4d/Timer.c4d/StringTblUS.txt
@@ -0,0 +1,8 @@
+Timeout=Timeout
+Interval=Interval: %d frames
+Start=Start
+Stop=Stop
+SingleShot=Single shot
+Test=Emit test signal
+Repeats=Repeat: %s
+InfRepeats=infinite