diff options
Diffstat (limited to 'src/game/effects.cpp')
-rw-r--r-- | src/game/effects.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/game/effects.cpp b/src/game/effects.cpp new file mode 100644 index 0000000..99c8be8 --- /dev/null +++ b/src/game/effects.cpp @@ -0,0 +1,37 @@ +#include "game.hpp" + +namespace game { + +effect_t::effect_t(state_t *game_) : world::entity_t(ET_EFFECT) +{ + game = game_; +} + +fx_tracer_t::fx_tracer_t(state_t *game_, v2f_t x0_, v2f_t x1_) : effect_t(game_) +{ + ttl = game->now + 0.07; + + x0 = x0_; + x1 = x1_; + + render_bounds[0] = x0; + render_bounds[1] = x1; + render_bounds = render_bounds.norm(); +} + +void fx_tracer_t::render_to(render::state_t *render) +{ + v2f_t x0l, x1l; + float t; + + t = 1.0f - (ttl - game->now) / 0.07f * 0.7f; + + x0l[0] = lerp(x0[0], x1[0], t); + x0l[1] = lerp(x0[1], x1[1], t); + x1l[0] = lerp(x0[0], x1[0], t + 0.3f); + x1l[1] = lerp(x0[1], x1[1], t + 0.3f); + + render->render_line(x0l, x1l, sf::Color::Yellow); +} + +} // namespace game |