From: Mircea Kitsune Date: Wed, 23 May 2012 13:16:09 +0000 (+0300) Subject: Implement all new platform movetypes. Thanks go to divVerent for the formulas, I... X-Git-Tag: xonotic-v0.8.0~295^2~31 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e320631edf27a6889ca8dfbc5aa3d0c77e33dc8d;p=xonotic%2Fxonotic-data.pk3dir.git Implement all new platform movetypes. Thanks go to divVerent for the formulas, I couldn't understand maths with a rocket launcher to the head --- 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);