diff options
author | Stijn Buys <ingar@osirion.org> | 2008-07-26 15:44:17 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-07-26 15:44:17 +0000 |
commit | ad4b28abd9a545bebaf4dd77cb6a13863ace9843 (patch) | |
tree | ffd2bc35b18f782166eb5118cd3a1dfe2536c073 /src/render | |
parent | a9022ae546f92e93c87a08bb18f4c09f815db866 (diff) |
make statefull engine trails
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/draw.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/render/draw.cc b/src/render/draw.cc index 01cddf3..7866dbe 100644 --- a/src/render/draw.cc +++ b/src/render/draw.cc @@ -607,7 +607,7 @@ void draw_pass_model_fragments() } /* draw model lights and engines */ -void draw_pass_model_fx() +void draw_pass_model_fx(float elapsed) { float t; @@ -724,8 +724,12 @@ void draw_pass_model_fx() float u = static_cast<core::EntityControlable *>(entity)->thrust(); if (u > 0) { - float fraction = (core::application()->time() + entity->state()->fuzz()) * 4.0f * u; - fraction = fraction - floorf(fraction); + float fraction = entity->state()->state_engine_trail_offset; + fraction += elapsed * 4.0f * u; + + while (fraction - 1.0f > 0) + fraction -= 1.0f; + entity->state()->state_engine_trail_offset = fraction; for(model::Model::Engines::iterator eit = entity->model()->engines().begin(); eit != entity->model()->engines().end(); eit++) { @@ -960,7 +964,7 @@ void draw(float seconds) Dust::draw(); // draw spacedust - draw_pass_model_fx(); // draw entity lights and engines + draw_pass_model_fx(seconds); // draw entity lights and engines gl::enable(GL_LIGHTING); gl::enable(GL_RESCALE_NORMAL); |