diff options
Diffstat (limited to 'Items.c4d/Tubekit.c4d/Script.c')
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Script.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Items.c4d/Tubekit.c4d/Script.c b/Items.c4d/Tubekit.c4d/Script.c new file mode 100644 index 0000000..25df4db --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Script.c @@ -0,0 +1,85 @@ +#strict 2
+
+static const TK7I_Tube = TU7I;
+
+func Find_TubeTarget()
+{
+ return [C4FO_Func, "IsTubeTarget"];
+}
+
+func Activate(object caller)
+{
+ var line = FindObject2(Find_Tube(this)), lineEnd;
+ if(line)
+ {
+ lineEnd = line->GetLineEnd(this);
+ }
+ var targets = FindObjects(Find_AtRect(0, -9, 1, 18), Find_TubeTarget());
+ if(GetLength(targets) > 1)
+ {
+ caller->~CreateSelectionMenu("ConnectTarget", targets, GetID(), "$SelectTarget$", this);
+ }
+ else if(GetLength(targets) == 1)
+ {
+ ConnectTarget(0, targets[0]);
+ }
+ else
+ {
+ PlayerMessage(GetController(caller), "$TxtNoNewLine$", this);
+ }
+ return true;
+}
+
+func ConnectTarget(id id, object target)
+{
+ var line = FindObject2(Find_Line(TK7I_Tube, this)), lineEnd;
+ if(line)
+ {
+ lineEnd = line->GetLineEnd(this);
+ if(lineEnd == target)
+ {
+ PlayerMessage(GetController(Contained()), "$TxtLineRemoval$", Contained(), GetName(line));
+ RemoveObject(line);
+ return true;
+ }
+ }
+ else
+ {
+ line = CreateObject(TK7I_Tube);
+ CreateObject(TK7I_Tube)->Complement(line);
+ }
+
+ if(line->GetActionTarget(0) == lineEnd)
+ {
+ line->SetActionTargets(lineEnd || this, target);
+ }
+ else
+ {
+ line->SetActionTargets(target, lineEnd || this);
+ }
+
+ PlayerMessage(GetController(Contained()), "$TxtConnect$", Contained(), GetName(line), GetName(target));
+ if(lineEnd)
+ {
+ RemoveObject();
+ }
+ return true;
+}
+
+func AcceptsObject(object obj)
+{
+ return true;
+}
+
+func ReceiveObject(object obj, bool noReturn)
+{
+ obj->Enter(this);
+ Exit(obj);
+ if(Contained())
+ {
+ Put(Contained(), obj);
+ }
+ return true;
+}
+
+func IsAnvilProduct() { return true; }
|
