#pragma once #include "gameMainSelector.h" #include "worldOverlay.h" #include #include #include template class Ray; class EditNetwork : public GameMainSelector::Component, public WorldOverlay { public: explicit EditNetwork(Network *); bool click(const SDL_MouseButtonEvent &, const Ray &) override; bool move(const SDL_MouseMotionEvent &, const Ray &) override; bool handleInput(const SDL_Event &) override; void render(const SceneShader &, const Frustum &) const override; void render(bool & open) override; private: [[nodiscard]] std::optional resolveRay(const Ray &) const; Network * network; bool continuousMode {false}; std::optional currentStart; Link::Collection candidates; }; template class EditNetworkOf : public EditNetwork { public: template explicit EditNetworkOf(P &&... params) : EditNetwork(gameState->world.findOrCreate(), std::forward

(params)...) { } };