hover_tracker.h 739 B

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include "game/systems/picking_service.h"
  3. #include <memory>
  4. namespace Engine::Core {
  5. class World;
  6. using EntityID = unsigned int;
  7. } // namespace Engine::Core
  8. namespace Render::GL {
  9. class Camera;
  10. }
  11. class HoverTracker {
  12. public:
  13. HoverTracker(Game::Systems::PickingService *pickingService);
  14. auto update_hover(float sx, float sy, Engine::Core::World &world,
  15. const Render::GL::Camera &camera, int viewportWidth,
  16. int viewportHeight) -> Engine::Core::EntityID;
  17. [[nodiscard]] auto getLastHoveredEntity() const -> Engine::Core::EntityID {
  18. return m_hoveredEntityId;
  19. }
  20. private:
  21. Game::Systems::PickingService *m_pickingService;
  22. Engine::Core::EntityID m_hoveredEntityId = 0;
  23. };