From f6de9e81866989e08da50198f095e06a5f40bd24 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Wed, 27 Feb 2013 03:26:58 +0000
Subject: [PATCH] [Add] limit_speed in physics

---
 src/physics.c | 5 +++++
 src/physics.h | 2 ++
 src/pilot.c   | 6 ++----
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/physics.c b/src/physics.c
index 858b3bf..fd53772 100644
--- a/src/physics.c
+++ b/src/physics.c
@@ -14,6 +14,11 @@ double angle_diff(const double ref, double a) {
   return (d <= M_PI) ? d : d - 2*M_PI;
 }
 
+void limit_speed(Vec2* vel, const double speed) {
+	if(VMOD(*vel) > speed) // Should not go faster.
+		vect_pset(vel, speed, VANGLE(*vel));
+}
+
 // ================
 // VEC2
 // ================
diff --git a/src/physics.h b/src/physics.h
index c36f6d3..8e5058b 100644
--- a/src/physics.h
+++ b/src/physics.h
@@ -22,6 +22,8 @@ typedef struct Vec2_ {
   double mod, angle; // Polar values.
 } Vec2;
 
+void limit_speed(Vec2* vel, const double speed);
+
 // Vector manupulation.
 void vect_cset(Vec2* v, const double x, const double y);
 // Doesn't set mod nor angle.
diff --git a/src/pilot.c b/src/pilot.c
index 87b2570..0591028 100644
--- a/src/pilot.c
+++ b/src/pilot.c
@@ -277,11 +277,9 @@ static void pilot_update(Pilot* pilot, const double dt) {
   // Update the solid.
   (*pilot->solid->update)(pilot->solid, dt);
   
-  if(!pilot_isFlag(pilot, PILOT_HYPERSPACE) && VMOD(pilot->solid->vel) > 
-        pilot->ship->speed)
+  if(!pilot_isFlag(pilot, PILOT_HYPERSPACE))
     // Should not go faster.
-    vect_pset(&pilot->solid->vel, pilot->ship->speed,
-          VANGLE(pilot->solid->vel));
+		limit_speed(&pilot->solid->vel, pilot->ship->speed);
 }
 
 // Pilot is getting ready or is in, hyperspace.