-Physic::apply(float frame_ratio, float &x, float &y)
-{
- float gravity = World::current()->get_level()->gravity;
- float grav;
- if(gravity_enabled)
- grav = gravity / 100.0;
- else
- grav = 0;
-
- x += vx * frame_ratio + ax * frame_ratio * frame_ratio;
- y += vy * frame_ratio + (ay + grav) * frame_ratio * frame_ratio;
- vx += ax * frame_ratio;
- vy += (ay + grav) * frame_ratio;
+Physic::set_gravity(float gravity)
+{
+ this->gravity = gravity * 100;
+}
+
+float
+Physic::get_gravity() const
+{
+ return gravity / 100;
+}
+
+Vector
+Physic::get_movement(float elapsed_time)
+{
+ float grav = gravity_enabled_flag ? gravity : 0;
+
+ vx += ax * elapsed_time;
+ vy += (ay + grav) * elapsed_time;
+ Vector result(vx * elapsed_time, vy * elapsed_time);
+
+ return result;