some new editor images
[supertux.git] / lib / math / physic.h
index 7496074..71d7ccd 100644 (file)
 
 #include "math/vector.h"
 
-/// 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);
-
-    /// Applies the physical simulation to given x and y coordinates.
-    void apply(float frame_ratio, float &x, float &y, float gravity = 10.0f); 
-
-    /// applies the physical simulation to given x and y coordinates.
-    void apply(Vector& vector, float frame_ratio, float gravity = 10.0f);
-
-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*/