X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fphysic.h;h=86114eb8cc8bdc235a18e03b9a84e88bbab69554;hb=4a54087f52d6a8a2e5b4c498e772685bb0885991;hp=002b42f805cc8ab6b0d0c6ef965169b4093cb280;hpb=aea1b715f22599f5e202693cb93a0852704d6422;p=supertux.git diff --git a/src/physic.h b/src/physic.h index 002b42f80..86114eb8c 100644 --- a/src/physic.h +++ b/src/physic.h @@ -17,62 +17,61 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. - #ifndef SUPERTUX_PHYSIC_H #define SUPERTUX_PHYSIC_H +#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(); + Physic(); + ~Physic(); - /** resets all velocities and accelerations to 0 */ - void reset(); + /// Resets all velocities and accelerations to 0. + void reset(); - /** sets velocity to a fixed value */ - void set_velocity(float vx, float vy); + /// 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); + void set_velocity_x(float vx); + void set_velocity_y(float vy); - /** velocities invertion */ - void inverse_velocity_x(); - void inverse_velocity_y(); + /// 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); + float get_velocity_x(); + float get_velocity_y(); - void set_acceleration_x(float ax); - void set_acceleration_y(float ay); + /// 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); - float get_acceleration_x(); - float get_acceleration_y(); + void set_acceleration_x(float ax); + void set_acceleration_y(float ay); - /** enables or disables handling of gravity */ - void enable_gravity(bool gravity_enabled); + float get_acceleration_x(); + float get_acceleration_y(); - /** applies the physical simulation to given x and y coordinates */ - void apply(float frame_ratio, float &x, float &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(Vector& vector, float frame_ratio); + 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; + /// horizontal and vertical acceleration + float ax, ay; + /// horizontal and vertical velocity + float vx, vy; + /// should we respect gravity in out calculations? + bool gravity_enabled; }; -#endif /*SUPERTUX_PHYSIC_H*/ +#endif