From e320631edf27a6889ca8dfbc5aa3d0c77e33dc8d Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Wed, 23 May 2012 16:16:09 +0300 Subject: [PATCH] Implement all new platform movetypes. Thanks go to divVerent for the formulas, I couldn't understand maths with a rocket launcher to the head --- qcsrc/server/g_subs.qc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/qcsrc/server/g_subs.qc b/qcsrc/server/g_subs.qc index 8270f847d..1676e3cb1 100644 --- a/qcsrc/server/g_subs.qc +++ b/qcsrc/server/g_subs.qc @@ -195,16 +195,23 @@ void SUB_CalcMove_controller_think (void) case 1: // linear break; case 2: // cosine + /* old version, good for mathematical reference phasepos = 3.14159265 + (phasepos * 3.14159265); // range: [pi, 2pi] phasepos = cos(phasepos); // cos [pi, 2pi] is in [-1, 1] phasepos = phasepos + 1; // correct range to [0, 2] phasepos = phasepos / 2; // correct range to [0, 1] + */ + + phasepos = (1 - cos(phasepos * 3.14159265)) / 2; break; - case 3: // sine - phasepos = 3.14159265 + (phasepos * 3.14159265); // range: [pi, 2pi] - phasepos = sin(phasepos); // sin [pi, 2pi] is in [-1, 1] - phasepos = phasepos + 1; // correct range to [0, 2] - phasepos = phasepos / 2; // correct range to [0, 1] + case 3: // inverted cosine + phasepos = acos(1 - phasepos * 2) / 3.14159265; + break; + case 4: // half cosine + phasepos = (1 - cos(phasepos * (3.14159265 / 2))); + break; + case 5: // inverted half cosine + phasepos = sin(phasepos * (3.14159265 / 2)); break; } nextpos = self.origin + (delta * phasepos) + (delta2 * phasepos * phasepos); -- 2.39.2