#pragma once #include "SDL_events.h" #include "config/types.h" #include "uiComponent.h" #include "worldOverlay.h" #include #include class SceneShader; template class Ray; class Camera; class GameMainSelector : public UIComponent, public WorldOverlay { public: class Component { public: virtual ~Component() = default; virtual bool click(const SDL_MouseButtonEvent &, const Ray &); virtual bool move(const SDL_MouseMotionEvent &, const Ray &); virtual bool handleInput(const SDL_Event &); virtual void render(bool & open); virtual void render(const SceneShader &, const Frustum &) const; }; GameMainSelector(const Camera * c); void render() override; void render(const SceneShader & shader, const Frustum &) const override; bool handleInput(const SDL_Event & e) override; void defaultClick(const Ray & ray); std::unique_ptr target; private: const Camera * camera; };