some new editor images
[supertux.git] / lib / math / physic.h
index 28dfbb0..71d7ccd 100644 (file)
 
 #include "math/vector.h"
 
-/** This is a very simplistic physics engine handling accelerated and constant
-  * movement along with gravity.
-  */
-class Physic
-{
-public:
-    Physic();
-    ~Physic();
-
-    /** resets all velocities and accelerations to 0 */
-    void reset();
-
-    /** sets velocity to a fixed value */
-    void set_velocity(float vx, float vy);
-
-    void set_velocity_x(float vx);
-    void set_velocity_y(float vy);
-
-    /** velocities invertion */
-    void inverse_velocity_x();
-    void inverse_velocity_y();
-
-    float get_velocity_x();
-    float get_velocity_y();
-    
-    /** sets acceleration applied to the object. (Note that gravity is
-     * eventually added to the vertical acceleration)
-     */
-    void set_acceleration(float ax, float ay);
-
-    void set_acceleration_x(float ax);
-    void set_acceleration_y(float ay);
-
-    float get_acceleration_x();
-    float get_acceleration_y();
-
-    /** enables or disables handling of gravity */
-    void enable_gravity(bool gravity_enabled);
-
-    /** applies the physical simulation to given x and y coordinates */
-    void apply(float frame_ratio, float &x, float &y, float& gravity = 10); 
-
-    /** applies the physical simulation to given x and y coordinates */
-    void apply(Vector& vector, float frame_ratio, float& gravity = 10);
-
-private:
-    /// horizontal and vertical acceleration
-    float ax, ay;
-    /// horizontal and vertical velocity
-    float vx, vy;
-    /// should we respect gravity in out calculations?
-    bool gravity_enabled;
-};
+namespace SuperTux
+  {
+
+  /// Physics engine.
+  /** This is a very simplistic physics engine handling accelerated and constant
+    * movement along with gravity.
+    */
+  class Physic
+    {
+    public:
+      Physic();
+      ~Physic();
+
+      /// Resets all velocities and accelerations to 0.
+      void reset();
+
+      /// Sets velocity to a fixed value.
+      void set_velocity(float vx, float vy);
+
+      void set_velocity_x(float vx);
+      void set_velocity_y(float vy);
+
+      /// Velocities invertion.
+      void inverse_velocity_x();
+      void inverse_velocity_y();
+
+      float get_velocity_x();
+      float get_velocity_y();
+
+      /// Set acceleration.
+      /** Sets acceleration applied to the object. (Note that gravity is
+       * eventually added to the vertical acceleration)
+       */
+      void set_acceleration(float ax, float ay);
+
+      void set_acceleration_x(float ax);
+      void set_acceleration_y(float ay);
+
+      float get_acceleration_x();
+      float get_acceleration_y();
+
+      /// Enables or disables handling of gravity.
+      void enable_gravity(bool gravity_enabled);
+
+      Vector get_movement(float elapsed_time);
+
+    private:
+      /// horizontal and vertical acceleration
+      float ax, ay;
+      /// horizontal and vertical velocity
+      float vx, vy;
+      /// should we respect gravity in out calculations?
+      bool gravity_enabled;
+    };
+
+} //namespace SuperTux
 
 #endif /*SUPERTUX_PHYSIC_H*/