summaryrefslogtreecommitdiff
path: root/src/game/effects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/effects.cpp')
-rw-r--r--src/game/effects.cpp37
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