diff options
author | Stijn Buys <ingar@osirion.org> | 2011-05-11 14:48:17 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2011-05-11 14:48:17 +0000 |
commit | 1c63cbf204b1d2c667ce9f821ccb197d0ffb0ac3 (patch) | |
tree | c2d0ff7cc4a8a264657abd0ac99017a5b664ecd2 /src/game/example | |
parent | bb0f860989f84b901f80017ae0139a3fc0446dc1 (diff) |
Review of the main loop timer, converted timers from float to unsigned long,
corrected a number of timing bugs, improved client framerate stability.
Diffstat (limited to 'src/game/example')
-rw-r--r-- | src/game/example/spectator.cc | 15 | ||||
-rw-r--r-- | src/game/example/spectator.h | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/game/example/spectator.cc b/src/game/example/spectator.cc index 5fc7fc6..9ca9497 100644 --- a/src/game/example/spectator.cc +++ b/src/game/example/spectator.cc @@ -33,7 +33,7 @@ Spectator::~Spectator() { } -void Spectator::frame(float elapsed) +void Spectator::frame(const unsigned long elapsed) { // only update if necessary if (!entity_speed && ! target_thrust && !target_direction && !target_pitch && !target_roll && !target_strafe && !target_afterburner) @@ -41,9 +41,11 @@ void Spectator::frame(float elapsed) // assign thrust value from input entity_thrust = target_thrust; + + const float seconds = (float) elapsed / 1000.0f; // rotate according to input - float rotation = g_spectatorrotation->value() * elapsed; + float rotation = g_spectatorrotation->value() * seconds; get_axis().change_direction(target_direction * rotation); get_axis().change_pitch(target_pitch * rotation); get_axis().change_roll(target_roll * rotation); @@ -54,14 +56,17 @@ void Spectator::frame(float elapsed) // assign new location if (entity_speed) - get_location() += axis().forward() * entity_speed * elapsed; + get_location() += axis().forward() * entity_speed * seconds; if (target_afterburner) - get_location() += axis().forward() * maxspeed * target_afterburner * elapsed; + get_location() += axis().forward() * maxspeed * target_afterburner * seconds; if (target_strafe) - get_location() += axis().left() * maxspeed * target_strafe * elapsed; + get_location() += axis().left() * maxspeed * target_strafe * seconds; + if (target_vstrafe) + get_location() += axis().up() * maxspeed * target_vstrafe * seconds; + // set dirty flag set_dirty(); } diff --git a/src/game/example/spectator.h b/src/game/example/spectator.h index 57f223b..bd141b2 100644 --- a/src/game/example/spectator.h +++ b/src/game/example/spectator.h @@ -21,7 +21,7 @@ public: ~Spectator(); /// update the ship state - virtual void frame(float elapsed); + virtual void frame(const unsigned long elapsed); static core::Cvar *g_spectatorspeed; static core::Cvar *g_spectatorrotation; |