From 6b08a841f92025fec33b614ae402c7a211bb0507 Mon Sep 17 00:00:00 2001 From: Maikel de Vries Date: Thu, 30 Sep 2010 19:53:15 +0200 Subject: [PATCH] Object Restorer: Viewport moves with restorer after clonk died --- .../Tutorial.c4d/ObjectRestorer.c4d/Script.c | 22 ++++++++++++++----- .../Tutorial04.c4s/System.c4g/Cloud.c | 8 +++++++ 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 planet/Tutorial.c4f/Tutorial04.c4s/System.c4g/Cloud.c diff --git a/planet/Tutorial.c4f/Tutorial.c4d/ObjectRestorer.c4d/Script.c b/planet/Tutorial.c4f/Tutorial.c4d/ObjectRestorer.c4d/Script.c index 1fb5b4435..4b1e383f7 100644 --- a/planet/Tutorial.c4f/Tutorial.c4d/ObjectRestorer.c4d/Script.c +++ b/planet/Tutorial.c4f/Tutorial.c4d/ObjectRestorer.c4d/Script.c @@ -32,8 +32,12 @@ public func SetRestoreObject(object to_restore, object to_container, int to_x, i // Effectvar 2: x-coordinate to which must be restored. // Effectvar 3: y-coordinate to which must be restored. // Effectvar 4: Effect which must be reinstated after restoring. +// Effectvar 5: x-coordinate from which is restored. +// Effectvar 6: y-coordinate from which is restored. protected func FxRestoreStart(object target, int num, int temporary) { + EffectVar(5, target, num) = target->GetX(); + EffectVar(6, target, num) = target->GetY(); return 1; } @@ -43,8 +47,8 @@ protected func FxRestoreTimer(object target, int num, int time) if (!EffectVar(0, target, num)) return -1; // Get coordinates. - var init_x = target->GetX(); - var init_y = target->GetY(); + var init_x = EffectVar(5, target, num); + var init_y = EffectVar(6, target, num); var to_container = EffectVar(1, target, num); if (to_container) { @@ -74,12 +78,18 @@ protected func FxRestoreTimer(object target, int num, int time) dev = 4 * std_dev * time / length; else dev = 2 * std_dev - 4 * std_dev * time / length; - var x = Sin(angle, 2 * time) + Cos(angle, Sin(20 * time, dev)); - var y = -Cos(angle, 2 * time) + Sin(angle, Sin(20 * time, dev)); + // Set container to current location to shift view. + var x = init_x + Sin(angle, 2 * time); + var y = init_y - Cos(angle, 2 * time); + Log("%v,%v", x, y); + target->SetPosition(x, y); + // Draw Particles. + x = init_x + Sin(angle, 2 * time) + Cos(angle, Sin(20 * time, dev)) - target->GetX(); + y = init_y - Cos(angle, 2 * time) + Sin(angle, Sin(20 * time, dev)) - target->GetY(); var color = RGB(128 + Cos(4 * time, 127), 128 + Cos(4 * time + 120, 127), 128 + Cos(4 * time + 240, 127)); CreateParticle("PSpark", x, y, 0, 0, 32, color); - x = Sin(angle, 2 * time) - Cos(angle, Sin(20 * time, dev)); - y = -Cos(angle, 2 * time) - Sin(angle, Sin(20 * time, dev)); + x = init_x + Sin(angle, 2 * time) - Cos(angle, Sin(20 * time, dev)) - target->GetX(); + y = init_y - Cos(angle, 2 * time) - Sin(angle, Sin(20 * time, dev)) - target->GetY(); CreateParticle("PSpark", x, y, 0, 0, 32, color); return 1; } diff --git a/planet/Tutorial.c4f/Tutorial04.c4s/System.c4g/Cloud.c b/planet/Tutorial.c4f/Tutorial04.c4s/System.c4g/Cloud.c new file mode 100644 index 000000000..e944f4889 --- /dev/null +++ b/planet/Tutorial.c4f/Tutorial04.c4s/System.c4g/Cloud.c @@ -0,0 +1,8 @@ +// No rain. + +#appendto Cloud + +public func RainDrop() +{ + return; +} \ No newline at end of file