Tweak icecrusher draw layers to avoid objects (such as coins) from appearing inside...
[supertux.git] / src / supertux / physic.cpp
index 0213235..518e719 100644 (file)
@@ -20,9 +20,9 @@
 #include "supertux/sector.hpp"
 
 Physic::Physic() :
-  ax(0), ay(0), 
-  vx(0), vy(0), 
-  gravity_enabled_flag(true), 
+  ax(0), ay(0),
+  vx(0), vy(0),
+  gravity_enabled_flag(true),
   gravity_modifier(1.0f)
 {
 }
@@ -130,9 +130,9 @@ Physic::get_acceleration() const
 }
 
 void
-Physic::enable_gravity(bool enable_gravity)
+Physic::enable_gravity(bool enable_gravity_)
 {
-  gravity_enabled_flag = enable_gravity;
+  gravity_enabled_flag = enable_gravity_;
 }
 
 bool
@@ -142,9 +142,9 @@ Physic::gravity_enabled() const
 }
 
 void
-Physic::set_gravity_modifier(float gravity_modifier)
+Physic::set_gravity_modifier(float gravity_modifier_)
 {
-  this->gravity_modifier = gravity_modifier;
+  this->gravity_modifier = gravity_modifier_;
 }
 
 Vector
@@ -152,6 +152,9 @@ Physic::get_movement(float elapsed_time)
 {
   float grav = gravity_enabled_flag ? (Sector::current()->get_gravity() * gravity_modifier * 100.0f) : 0;
 
+  // Semi-implicit Euler integration
+  // with constant acceleration, this will result in a position delta of
+  // v t + .5 a t (t+elapsed_time) at total time t
   vx += ax * elapsed_time;
   vy += (ay + grav) * elapsed_time;
   Vector result(vx * elapsed_time, vy * elapsed_time);