mode_indicator.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "../gl/mesh.h"
  3. #include <QVector3D>
  4. #include <memory>
  5. namespace Render::Geom {
  6. constexpr int k_mode_type_attack = 0;
  7. constexpr int k_mode_type_guard = 1;
  8. constexpr int k_mode_type_hold = 2;
  9. constexpr int k_mode_type_patrol = 3;
  10. constexpr float k_indicator_height_base = 2.5F;
  11. constexpr float k_indicator_size = 0.4F;
  12. constexpr float k_indicator_alpha = 0.85F;
  13. constexpr float k_indicator_height_multiplier = 2.0F;
  14. constexpr float k_frustum_cull_margin = 1.5F;
  15. const QVector3D k_attack_mode_color(1.0F, 0.3F, 0.3F);
  16. const QVector3D k_guard_mode_color(0.3F, 0.5F, 1.0F);
  17. const QVector3D k_hold_mode_color(1.0F, 0.6F, 0.2F);
  18. const QVector3D k_patrol_mode_color(0.5F, 0.5F, 0.5F);
  19. class ModeIndicator {
  20. public:
  21. static auto get_attack_mode_mesh() -> Render::GL::Mesh *;
  22. static auto get_guard_mode_mesh() -> Render::GL::Mesh *;
  23. static auto get_hold_mode_mesh() -> Render::GL::Mesh *;
  24. static auto get_patrol_mode_mesh() -> Render::GL::Mesh *;
  25. private:
  26. static auto create_attack_mode_mesh() -> std::unique_ptr<Render::GL::Mesh>;
  27. static auto create_guard_mode_mesh() -> std::unique_ptr<Render::GL::Mesh>;
  28. static auto create_hold_mode_mesh() -> std::unique_ptr<Render::GL::Mesh>;
  29. static auto create_patrol_mode_mesh() -> std::unique_ptr<Render::GL::Mesh>;
  30. static std::unique_ptr<Render::GL::Mesh> s_attack_mesh;
  31. static std::unique_ptr<Render::GL::Mesh> s_guard_mesh;
  32. static std::unique_ptr<Render::GL::Mesh> s_hold_mesh;
  33. static std::unique_ptr<Render::GL::Mesh> s_patrol_mesh;
  34. };
  35. } // namespace Render::Geom