]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/playercontroller.cpp
Fix various cases of bad math
[libs/game.git] / examples / bassteroids / source / playercontroller.cpp
index 606f34ea69ea7eb4fe70478f9c6880d8eb0d12c7..cd7e72ad3a53f191a36b23921466d1834dbd985f 100644 (file)
@@ -38,10 +38,12 @@ void PlayerController::tick(Time::TimeDelta dt)
        body->add_force(fwd_dir*(controls->forward.get_value()*thrust));
        const LinAl::Vector<float, 2> &velocity = body->get_velocity();
        float speed = velocity.norm();
-       body->add_force(velocity*-min(speed+setup.speed/speed, 1.0f/dt_secs));
+       if(speed>1e-5)
+               body->add_force(velocity*-min(speed+setup.speed/speed, 1.0f/dt_secs));
 
        body->add_torque(controls->turn_left.get_value()*torque);
        Geometry::Angle<float> angular_vel = body->get_angular_velocity();
        Geometry::Angle<float> angular_speed = abs(angular_vel);
-       body->add_torque(angular_vel.radians()*-min(angular_speed.radians()+setup.turn_rate/angular_speed.radians(), 1.0f/dt_secs));
+       if(abs(angular_speed.radians())>1e-5)
+               body->add_torque(angular_vel.radians()*-min(angular_speed.radians()+setup.turn_rate/angular_speed.radians(), 1.0f/dt_secs));
 }