#include #include "move.h" void move_position(Move *m, float delta) { m->current_time += delta; float percentage = m->current_time / m->end_time; if (percentage < 0.0) percentage = 0.0; else if (percentage > 1.0) percentage = 1.0; Vector2 v; switch (m->curve) { case CURVE_LINEAR: v = (Vector2) { ((m->destination.x - m->origin.x) * percentage) + m->origin.x, ((m->destination.y - m->origin.y) * percentage) + m->origin.y }; break; case CURVE_EASE_IN_OUT: percentage = -(cos(PI * percentage) - 1) / 2; v = (Vector2) { ((m->destination.x - m->origin.x) * percentage) + m->origin.x, ((m->destination.y - m->origin.y) * percentage) + m->origin.y }; break; default: v = m->destination; break; } m->position->x = v.x; m->position->y = v.y; }