From 1f280cb06cc579c2a98d215e202dc0642fb40a3d Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Mon, 2 Jan 2017 19:34:09 +0100 Subject: Initial --- Items.c4d/Tubekit.c4d/Script.c | 85 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Items.c4d/Tubekit.c4d/Script.c (limited to 'Items.c4d/Tubekit.c4d/Script.c') 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; } -- cgit v1.2.3-54-g00ecf