summaryrefslogtreecommitdiff
path: root/ui/editNetwork.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-05-11 12:22:19 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2025-05-11 12:22:19 +0100
commitacb76ffa0f45c5369e103f8868356d333ab2d954 (patch)
tree8ef1116b45b2a3e7e59b4b490ca5c90d48d31081 /ui/editNetwork.h
parentLink helper to get an End pointer based on position (diff)
downloadilt-acb76ffa0f45c5369e103f8868356d333ab2d954.tar.bz2
ilt-acb76ffa0f45c5369e103f8868356d333ab2d954.tar.xz
ilt-acb76ffa0f45c5369e103f8868356d333ab2d954.zip
Build networks with new interface
Diffstat (limited to 'ui/editNetwork.h')
-rw-r--r--ui/editNetwork.h34
1 files changed, 9 insertions, 25 deletions
diff --git a/ui/editNetwork.h b/ui/editNetwork.h
index 4155534..e155105 100644
--- a/ui/editNetwork.h
+++ b/ui/editNetwork.h
@@ -1,6 +1,5 @@
#pragma once
-#include "game/geoData.h"
#include "gameMainSelector.h"
#include "worldOverlay.h"
#include <game/gamestate.h>
@@ -13,40 +12,25 @@ class EditNetwork : public GameMainSelector::Component, public WorldOverlay {
public:
explicit EditNetwork(Network *);
- bool click(const SDL_MouseButtonEvent & e, const Ray<GlobalPosition3D> &) override;
- bool move(const SDL_MouseMotionEvent & e, const Ray<GlobalPosition3D> &) override;
- bool handleInput(const SDL_Event & e) override;
+ bool click(const SDL_MouseButtonEvent &, const Ray<GlobalPosition3D> &) override;
+ bool move(const SDL_MouseMotionEvent &, const Ray<GlobalPosition3D> &) override;
+ bool handleInput(const SDL_Event &) override;
void render(const SceneShader &, const Frustum &) const override;
void render(bool & open) override;
- using NetworkClickPos = std::variant<GlobalPosition3D, Node::Ptr>;
-
- class Builder {
- public:
- virtual ~Builder() = default;
- virtual void render(const SceneShader & shader, const Frustum &) const;
- virtual std::string hint() const = 0;
- virtual void click(Network *, const GeoData *, const SDL_MouseButtonEvent &, const Ray<GlobalPosition3D> &) = 0;
- virtual void move(Network *, const GeoData *, const SDL_MouseMotionEvent &, const Ray<GlobalPosition3D> &) = 0;
-
- static void setHeightsFor(Network *, const Link::CCollection &, GeoData::SetHeightsOpts = {});
-
- using Ptr = std::unique_ptr<Builder>;
-
- protected:
- SharedCollection<const Link> candidateLinks;
- };
-
private:
+ [[nodiscard]] std::optional<CreationDefinitionEnd> resolveRay(const Ray<GlobalPosition3D> &) const;
+
Network * network;
- Builder::Ptr builder;
- Texture blue;
+ bool continuousMode {false};
+ std::optional<CreationDefinitionEnd> currentStart;
+ Link::Collection candidates;
};
template<typename T> class EditNetworkOf : public EditNetwork {
public:
template<typename... P>
- explicit EditNetworkOf(P &&... p) : EditNetwork(gameState->world.findOrCreate<T>(), std::forward<P>(p)...)
+ explicit EditNetworkOf(P &&... params) : EditNetwork(gameState->world.findOrCreate<T>(), std::forward<P>(params)...)
{
}
};