healing_beam_renderer.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #include "healing_beam_renderer.h"
  2. #include "../../game/systems/healing_beam.h"
  3. #include "../../game/systems/healing_beam_system.h"
  4. #include "../../game/systems/healing_colors.h"
  5. #include "../scene_renderer.h"
  6. namespace Render::GL {
  7. void render_healing_beams(Renderer *renderer, ResourceManager *,
  8. const Game::Systems::HealingBeamSystem &beam_system) {
  9. if (renderer == nullptr || beam_system.get_beam_count() == 0) {
  10. return;
  11. }
  12. float animation_time = renderer->get_animation_time();
  13. for (const auto &beam : beam_system.get_beams()) {
  14. if (beam && beam->is_active()) {
  15. float intensity = beam->get_intensity();
  16. if (intensity < 0.01F) {
  17. continue;
  18. }
  19. QVector3D color = beam->get_color();
  20. if (Game::Systems::is_roman_healing_color(color)) {
  21. continue;
  22. }
  23. renderer->healing_beam(beam->get_start(), beam->get_end(), color,
  24. beam->get_progress(), beam->get_beam_width(),
  25. intensity, animation_time);
  26. }
  27. }
  28. }
  29. } // namespace Render::GL