diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2017-01-02 19:34:09 +0100 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2017-01-02 19:34:09 +0100 |
| commit | 1f280cb06cc579c2a98d215e202dc0642fb40a3d (patch) | |
| tree | 30a19973594d30792947aa624e7bf585eaa0cf40 /Items.c4d/Tubekit.c4d/Tube.c4d | |
| download | DTTubeMail.c4d-1f280cb06cc579c2a98d215e202dc0642fb40a3d.tar.gz DTTubeMail.c4d-1f280cb06cc579c2a98d215e202dc0642fb40a3d.zip | |
Initial
Diffstat (limited to 'Items.c4d/Tubekit.c4d/Tube.c4d')
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/ActMap.txt | 4 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/DefCore.txt | 13 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/DescDE.txt | 1 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/DescUS.txt | 1 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/Graphics.png | bin | 0 -> 1217 bytes | |||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/Names.txt | 2 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/Script.c | 305 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/StringTblDE.txt | 1 | ||||
| -rw-r--r-- | Items.c4d/Tubekit.c4d/Tube.c4d/StringTblUS.txt | 1 |
9 files changed, 328 insertions, 0 deletions
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/ActMap.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/ActMap.txt new file mode 100644 index 0000000..2a84bf1 --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/ActMap.txt @@ -0,0 +1,4 @@ +[Action]
+Name=Connect
+Procedure=CONNECT
+FacetBase=1
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/DefCore.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/DefCore.txt new file mode 100644 index 0000000..a312dcf --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/DefCore.txt @@ -0,0 +1,13 @@ +[DefCore]
+id=TU7I
+Version=4,9,8
+Name=Tube
+Category=C4D_StaticBack
+Width=1
+Height=1
+Vertices=2
+Value=10
+Mass=15
+Components=METL=3
+Picture=0,0,36,32
+Line=C4D_LineColored
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/DescDE.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/DescDE.txt new file mode 100644 index 0000000..9c1fb62 --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/DescDE.txt @@ -0,0 +1 @@ +Abfluß für Pumpen.
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/DescUS.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/DescUS.txt new file mode 100644 index 0000000..75008ce --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/DescUS.txt @@ -0,0 +1 @@ +Drain for pumps.
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/Graphics.png b/Items.c4d/Tubekit.c4d/Tube.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..8b4683b --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/Graphics.png diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/Names.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/Names.txt new file mode 100644 index 0000000..cab7bf6 --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Postrohr
+US:Mail tube
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/Script.c b/Items.c4d/Tubekit.c4d/Tube.c4d/Script.c new file mode 100644 index 0000000..02d3796 --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/Script.c @@ -0,0 +1,305 @@ +#strict 2
+
+static TU7I_Speed;
+static const TU7I_NoCallback = -1;
+
+func Initialize()
+{
+ SetAction("Connect");
+
+ SetVertex(0, 0, GetX());
+ SetVertex(0, 1, GetY());
+
+ SetVertex(1, 0, GetX());
+ SetVertex(1, 1, GetY());
+
+ SetPosition(0, 0, this);
+
+ Local(0) = 2;
+ Local(1) = 2;
+
+ SetClrModulation(RGBa(255, 255, 255, 64));
+}
+
+func Complement(object line)
+{
+ if(line)
+ {
+ SetAction("Idle");
+ SetObjectOrder(this, line, true);
+ return AddEffect("ComplementLine", line, 1, 1, this);
+ }
+}
+
+func LineBreak(bool noMsg)
+{
+ if(!noMsg)
+ {
+ var source = GetActionTarget(0);
+ var target = GetActionTarget(1);
+
+ if(source && GetID(source) == TK7I)
+ {
+ Message("$TxtLinebroke$", source);
+ }
+ else
+ {
+ Message("$TxtLinebroke$", target);
+ }
+ }
+}
+
+func KitID()
+{
+ return TK7I;
+}
+
+func CanSendObject(object sender, object obj)
+{
+ var lineEnd = GetLineEnd(sender);
+ return lineEnd && lineEnd->~AcceptsObject(obj, 0, this);
+}
+
+func CanRetrieveObject(object receiver, id type, bool allowProduction, object excludeOrigin, object sender)
+{
+ if(ObjectOrigin(receiver) == excludeOrigin)
+ {
+ return false;
+ }
+ var lineEnd = sender || GetLineEnd(receiver);
+ return lineEnd && lineEnd->~HasObject(type, allowProduction, this, excludeOrigin);
+}
+
+func SendObject(object sender, object obj, arriveCallback, bool noReturn, object realTarget)
+{
+ var lineEnd = GetLineEnd(sender);
+ if(obj != lineEnd && (noReturn || (realTarget || lineEnd)->~AcceptsObject(obj, 0, this)))
+ {
+ var box = CreateObject(TC7I, 0, 0, GetOwner(obj));
+ SetObjectOrder(this, box, true);
+ if(!obj->Enter(box))
+ {
+ return false;
+ }
+ AddEffect("SendObject", box, 1, 1, this, 0, sender, noReturn, arriveCallback);
+ return true;
+ }
+ return false;
+}
+
+func RetrieveObject(object receiver, id type, arriveCallback, object excludeOrigin, failCallback, object realTarget)
+{
+ var lineEnd = GetLineEnd(receiver);
+ return lineEnd && CanRetrieveObject(receiver, type, true, excludeOrigin, lineEnd) && lineEnd->~RetrieveObject(this, type, arriveCallback, excludeOrigin, failCallback, realTarget);
+}
+
+func GetRetrievableObjects(object receiver)
+{
+ var lineEnd = GetLineEnd(receiver);
+ return lineEnd && lineEnd->~GetRetrievableObjects(this, ...);
+}
+
+func GetLineDistancePoint(int distance, int startVertex, int dir, int& x, int& y, int& r)
+{
+ if(!dir)
+ {
+ return;
+ }
+ var max = GetVertexNum() - 1, vertexDistance, vXC, vYC, vXN, vYN;
+ var rOff = 3 + (dir < 0);
+ for(var vertex = startVertex; Inside(vertex + dir, 0, max); vertex += dir)
+ {
+ vXC = GetVertex(vertex, VTX_X);
+ vYC = GetVertex(vertex, VTX_Y);
+ vXN = GetVertex(vertex + dir, VTX_X);
+ vYN = GetVertex(vertex + dir, VTX_Y);
+ var dist = Distance(vXC, vYC, vXN, vYN);
+ if(dist > distance)
+ {
+ var angle = Angle(vXC, vYC, vXN, vYN);
+ x = vXC + ((vXN - vXC) * distance + dist / 2) / dist - Cos(angle, rOff) * dir;
+ y = vYC + ((vYN - vYC) * distance + dist / 2) / dist - Sin(angle, rOff) * dir;
+ r = angle - 90;
+ return false;
+ }
+ else
+ {
+ distance -= dist;
+ }
+ }
+ x = vXN;
+ y = vYN;
+ return true;
+}
+
+func FxSendObjectStart(object target, int effectNumber, int temp, object sender, bool noReturn, arriveCallback)
+{
+ if(!temp)
+ {
+ EffectVar(0, target, effectNumber) = (GetActionTarget(1) == sender);
+ EffectVar(1, target, effectNumber) = noReturn;
+
+ EffectCall(target, effectNumber, "Timer");
+ EffectVar(2, target, effectNumber) = AddEffect("SendObjectHelper", this, 1, 0, this, 0, target);
+ EffectVar(3, target, effectNumber) = arriveCallback;
+ }
+}
+
+func FxSendObjectHelperStart(object target, int effectNumber, int temp, object box)
+{
+ if(!temp)
+ {
+ EffectVar(0, target, effectNumber) = box;
+ }
+}
+
+func FxSendObjectHelperStop(object target, int effectNumber, int reason, bool temp)
+{
+ if(!temp)
+ {
+ var box = EffectVar(0, target, effectNumber);
+ if(box)
+ {
+ RemoveObject(box, true);
+ }
+ }
+}
+
+func FxSendObjectTimer(object target, int effectNumber, int effectTime)
+{
+ var startTarget = EffectVar(0, target, effectNumber);
+ var dir = -(startTarget * 2 - 1);
+ var startVertex = 0;
+ if(startTarget)
+ {
+ startVertex = GetVertexNum() - 1;
+ }
+ var x, y, r, end;
+ r = target->GetR();
+ end = GetLineDistancePoint(effectTime * (TU7I_Speed || 20), startVertex, dir, x, y, r);
+
+ target->SetPosition(x, y);
+ target->SetR(r);
+ target->SetRDir(0);
+
+ if(end)
+ {
+ var lineEnd = GetActionTarget(!startTarget);
+ var noReturn = EffectVar(1, target, effectNumber);
+ var arriveCallback = EffectVar(3, target, effectNumber);
+ var cnt = target->ContentsCount();
+ for(var i = cnt - 1; i >= 0; --i)
+ {
+ var obj = target->Contents(i);
+ var ret;
+ if(!(ret = lineEnd->~ReceiveObject(obj, noReturn, arriveCallback, this)) && !noReturn)
+ {
+ SendObject(lineEnd, obj, 0, true);
+ }
+ else
+ {
+ if(arriveCallback && ret != TU7I_NoCallback)
+ {
+ lineEnd->CallA(arriveCallback, [obj, this, lineEnd], true);
+ }
+ }
+ }
+ return FX_Execute_Kill;
+ }
+}
+
+func FxSendObjectStop(object target, int effectNumber, int reason, bool temp)
+{
+ if(!temp)
+ {
+ RemoveObject(target, true);
+ RemoveEffect(0, this, EffectVar(2, target, effectNumber));
+ }
+}
+
+func FxComplementLineStart(object target, int effectNumber, int temp)
+{
+ if(!temp)
+ {
+ return EffectCall(target, effectNumber, "Timer");
+ }
+}
+
+func FxComplementLineTimer(object target, int effectNumber)
+{
+ var i;
+ var angle, prevAngle, midAngle;
+ var cnt = target->GetVertexNum();
+ for(i = 0; i < cnt; ++i)
+ {
+ var x = target->GetVertex(i, VTX_X);
+ var y = target->GetVertex(i, VTX_Y);
+
+ if(i < cnt - 1)
+ {
+ var nX = target->GetVertex(i + 1, VTX_X);
+ var nY = target->GetVertex(i + 1, VTX_Y);
+ angle = Angle(x, y, nX, nY);
+ }
+
+ if(i == 0)
+ {
+ midAngle = angle;
+ }
+ else if(i == cnt - 1)
+ {
+ midAngle = prevAngle;
+ }
+ else
+ {
+ midAngle = (angle + prevAngle) / 2;
+ if(Abs(angle - prevAngle) > 180)
+ {
+ midAngle += 180;
+ }
+ }
+
+ if(GetVertexNum() <= i)
+ {
+ AddVertex(x, y);
+ }
+ else
+ {
+ SetVertex(i, VTX_X, x - Cos(midAngle, 7));
+ SetVertex(i, VTX_Y, y - Sin(midAngle, 7));
+ }
+ prevAngle = angle;
+ }
+ for(var j = GetVertexNum() - 1; j >= i; --j)
+ {
+ RemoveVertex(j);
+ }
+}
+
+func FxComplementLineStop(object target, int effectNumber, int reason, bool temp)
+{
+ if(!temp)
+ {
+ RemoveObject();
+ }
+}
+
+func ObjectOrigin(object other)
+{
+ return GetLineEnd(other)->~ObjectOrigin();
+}
+
+func HasObjectOrigin(object origin)
+{
+ return GetLineEnd()->~ObjectOrigin() == origin || GetLineEnd(0, true)->~ObjectOrigin() == origin;
+}
+
+func IsTube()
+{
+ return true;
+}
+
+func FactoryLoad(object other)
+{
+ return GetLineEnd(other)->~FactoryLoad();
+}
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/StringTblDE.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/StringTblDE.txt new file mode 100644 index 0000000..107e9e9 --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/StringTblDE.txt @@ -0,0 +1 @@ +TxtLinebroke=Rohr gebrochen
diff --git a/Items.c4d/Tubekit.c4d/Tube.c4d/StringTblUS.txt b/Items.c4d/Tubekit.c4d/Tube.c4d/StringTblUS.txt new file mode 100644 index 0000000..cf1be94 --- /dev/null +++ b/Items.c4d/Tubekit.c4d/Tube.c4d/StringTblUS.txt @@ -0,0 +1 @@ +TxtLinebroke=Tube broke
|
