summaryrefslogtreecommitdiff
path: root/src/koopatlas/pathmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/koopatlas/pathmanager.cpp')
-rw-r--r--src/koopatlas/pathmanager.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp
index 50c1ee2..8e0edac 100644
--- a/src/koopatlas/pathmanager.cpp
+++ b/src/koopatlas/pathmanager.cpp
@@ -265,27 +265,27 @@ void dWMPathManager_c::moveThroughPath() {
daWMPlayer_c *player = daWMPlayer_c::instance;
if (isJumping) {
+ float ys = (float)from->y;
+ float ye = (float)to->y;
float midpoint = (from->y + to->y) / 2;
- keysY[0] = (HermiteKey){ from->y, 0.0, 1.0 };
- keysY[1] = (HermiteKey){ midpoint, 48.0, 0.8 };
- keysY[2] = (HermiteKey){ to->y, 0.0, 1.0 };
+ float top, len;
+ if (ys > ye) { len = ys - ye; top = ys - midpoint + 4.0; }
+ else { len = ye - ys; top = ye - midpoint + 4.0; }
- float modY = GetHermiteCurveValue(player->pos.y, keysY, 3);
- OSReport("From: %f", from->y);
- OSReport("ModY: %f", modY);
- OSReport("Pos: %f", player->pos.y);
- OSReport("From: %f to %f, midpoint at: %f, pos at %f, Y mod: %f", from->y, to->y, midpoint, player->pos.y, modY);
+ float a;
+ if (timer > 0.0) { a = -timer; }
+ else { a = timer; }
- player->pos.x += move.x;
- player->pos.y -= move.y;
- }
+ player->jumpOffset = -sin(a * 3.14 / len) * top;
+ OSReport("%f = sin(%f * 3.14 / %f) * %f", player->jumpOffset, a, len, top);
- else {
- player->pos.x += move.x;
- player->pos.y -= move.y;
+ timer -= move.y;
}
+ player->pos.x += move.x;
+ player->pos.y -= move.y;
+
// Check if we've reached the end yet
if (
((move.x > 0) ? (player->pos.x >= to->x) : (player->pos.x <= to->x)) &&