载入中...
搜索中...
未找到
RoadNetworkEditTarget.h
浏览该文件的文档.
48 static constexpr const char* kDisconnectEdgeIntersection = "road.edge.disconnect-intersection.v1";
66 EVENGINE_API_ORCHESTRATION RoadNetworkEditTarget(std::string id, procgen::road::RoadNetwork& network);
68 [[nodiscard]] static EVENGINE_API_ORCHESTRATION std::unique_ptr<RoadNetworkEditTarget> createOwned(std::string id);
75 EVENGINE_API_ORCHESTRATION void* queryCapability(const editing::CapabilityId& capability) override;
85 [[nodiscard]] EVENGINE_API_ORCHESTRATION editing::GizmoSnapshot gizmo(std::size_t maximumPrimitives = 4096,
101 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<void> loadSnapshot(const EditorValue& snapshot);
105 [[nodiscard]] EVENGINE_API_ORCHESTRATION std::unique_ptr<editing::IDomainOperationTarget> cloneDomainState()
118 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeMoveNode(std::uint32_t nodeId,
127 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSetNodeJunctionRadius(
135 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSetNodeJunctionControl(
155 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeMergeNodesAndConnect(
163 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSetEdgeControlPoints(
171 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSetEdgeStyle(
180 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSetEdgeLaneCounts(
188 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeReverseEdge(
198 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeReconnectEdgeEndpoint(
208 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeReconnectEdgeEndpointAndConnect(
219 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSnapEdgeEndpoint(
228 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeDetachEdgeEndpoint(
247 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeSplitEdgeAtPosition(
263 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeConnectNodeAtPosition(
264 std::uint32_t sourceNodeId, std::uint32_t edgeId, procgen::road::RoadControlPoint position, float maxDistance,
276 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeConnectEdgeIntersection(
307 std::uint32_t from, std::uint32_t to, std::vector<procgen::road::RoadControlPoint> points, int lanesForward = 2,
321 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeAddEdgeAndConnect(
322 std::uint32_t from, std::uint32_t to, std::vector<procgen::road::RoadControlPoint> points, int lanesForward = 2,
336 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeAddLaneLink(
343 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeRemoveLaneLink(
346 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeBlockLaneLink(
349 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeUnblockLaneLink(
356 [[nodiscard]] EVENGINE_API_ORCHESTRATION EditorResult<editing::DomainOperation> makeConnectAllTurns(
373[[nodiscard]] EVENGINE_API_ORCHESTRATION editing::Result<void> registerRoadNetworkEditingCommands(
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Optional candidate/publish capability for atomic domain operations.
Definition EditingTargetOperations.h:26
Editable-target capability that applies owning domain operations.
Definition EditingTargetOperations.h:11
eve::OptionalRef< C > capability()
Query a capability through its interface-owned stable identity.
Definition EditableTarget.h:82
Optional capability exposing a deterministic, persistence-safe editing snapshot.
Definition EditableTarget.h:247
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
Owning directed road graph with lane connectivity.
Definition RoadNetwork.h:19
Transaction target that edits stable RoadNetwork node/edge ids.
Definition RoadNetworkEditTarget.h:27
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeRemoveLaneLink(const procgen::road::RoadLaneConnection &link) const
Create an undoable removal of one exact manual lane connection.
Definition RoadNetworkEditOperations.cpp:669
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeBlockLaneLink(procgen::road::RoadLaneConnection link) const
Plan a persistent prohibited turn, atomically removing an active exact link when present.
Definition RoadNetworkEditOperations.cpp:687
static constexpr const char * kConnectNodeAtPosition
Definition RoadNetworkEditTarget.h:45
static constexpr const char * kSplitEdgeAtPosition
Definition RoadNetworkEditTarget.h:40
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSetEdgeLaneCounts(std::uint32_t edgeId, int lanesForward, int lanesBackward) const
Create an undoable lane-count replacement, including links invalidated by a shrink.
Definition RoadNetworkEditOperations.cpp:169
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeReconnectEdgeEndpoint(std::uint32_t edgeId, bool fromEndpoint, std::uint32_t nodeId) const
Create an undoable operation reconnecting one road endpoint to an existing node.
Definition RoadNetworkEditOperations.cpp:227
static constexpr const char * kSplitEdge
Definition RoadNetworkEditTarget.h:39
static constexpr const char * kUnsplitEdge
Definition RoadNetworkEditTarget.h:41
EVENGINE_API_ORCHESTRATION EditorResult< void > loadSnapshot(const EditorValue &snapshot)
Atomically replace the network from a validated version-one snapshot.
Definition RoadNetworkEditTarget.cpp:884
static constexpr const char * kDetachEdgeEndpoint
Definition RoadNetworkEditTarget.h:37
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeAddNode(float x, float y, float z, float junctionRadius=6.f) const
Create an undoable node insertion with a reserved stable id.
Definition RoadNetworkEditOperations.cpp:544
EVENGINE_API_ORCHESTRATION EditorResult< void > commitDomainState(std::unique_ptr< editing::IDomainOperationTarget > candidate) override
Definition RoadNetworkEditTarget.cpp:954
EVENGINE_API_ORCHESTRATION editing::TargetDescriptor describe() const override
Describe the target for tools and automation.
Definition RoadNetworkEditTarget.cpp:789
EVENGINE_API_ORCHESTRATION std::unique_ptr< editing::IDomainOperationTarget > cloneDomainState() const override
Clone the complete target state into an owning detached candidate.
Definition RoadNetworkEditTarget.cpp:949
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSplitEdge(std::uint32_t edgeId, std::size_t controlPointIndex, float junctionRadius=6.f) const
Create an undoable split at an authored interior control point.
Definition RoadNetworkEditOperations.cpp:363
static constexpr const char * kDisconnectEdgeIntersection
Definition RoadNetworkEditTarget.h:48
static constexpr const char * kUnmergeNodes
Definition RoadNetworkEditTarget.h:44
static constexpr const char * kConnectEdgeIntersection
Definition RoadNetworkEditTarget.h:47
static constexpr const char * kRemoveLaneLinks
Definition RoadNetworkEditTarget.h:58
static constexpr const char * kSetEdgePoints
Definition RoadNetworkEditTarget.h:32
static constexpr const char * kRestoreEdge
Definition RoadNetworkEditTarget.h:51
static constexpr const char * kReconnectEdgeEndpoint
Definition RoadNetworkEditTarget.h:36
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeReverseEdge(std::uint32_t edgeId) const
Create a self-inverse operation that reverses an edge and all direction-relative metadata.
Definition RoadNetworkEditOperations.cpp:211
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeConnectAllTurns(std::uint32_t nodeId) const
Plan all missing legal turn links at one node as one atomic undoable operation.
Definition RoadNetworkEditOperations.cpp:723
static constexpr const char * kBlockLaneLink
Definition RoadNetworkEditTarget.h:55
EVENGINE_API_ORCHESTRATION EditorResult< void > applyDomainOperation(const editing::DomainOperation &operation) override
Apply one validated domain operation.
Definition RoadNetworkEditApply.cpp:11
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSetEdgeStyle(std::uint32_t edgeId, procgen::road::RoadStyle style) const
Create an undoable stable-id edge style replacement operation.
Definition RoadNetworkEditOperations.cpp:148
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeReconnectEdgeEndpointAndConnect(std::uint32_t edgeId, bool fromEndpoint, std::uint32_t nodeId) const
Atomically reconnect one endpoint and add missing turns involving that edge at the new junction.
Definition RoadNetworkEditOperations.cpp:269
static constexpr const char * kDisconnectNodeAtPosition
Definition RoadNetworkEditTarget.h:46
static constexpr const char * kRemoveLaneLink
Definition RoadNetworkEditTarget.h:54
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSnapEdgeEndpoint(std::uint32_t edgeId, bool fromEndpoint, float maxDistance, bool connectTurns=true) const
Snap one endpoint to the nearest distinct node inside an explicit 3D radius.
Definition RoadNetworkEditOperations.cpp:290
static constexpr const char * kRestoreNode
Definition RoadNetworkEditTarget.h:49
static constexpr const char * kMoveNode
Definition RoadNetworkEditTarget.h:29
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSplitEdgeAtPosition(std::uint32_t edgeId, procgen::road::RoadControlPoint position, float maxDistance, float junctionRadius=6.f) const
Create an undoable nearest-centerline split from a world position.
Definition RoadNetworkEditOperations.cpp:393
EVENGINE_API_ORCHESTRATION EditorValue snapshotValue() const override
Serialize the complete editable network as eve.procgen.roadNetwork schema version 1.
Definition RoadNetworkEditTarget.cpp:860
static constexpr const char * kReattachEdgeEndpoint
Definition RoadNetworkEditTarget.h:38
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSetNodeJunctionControl(std::uint32_t nodeId, procgen::road::RoadJunctionControl control) const
Create an undoable junction traffic-control replacement operation.
Definition RoadNetworkEditOperations.cpp:52
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeAddEdge(std::uint32_t from, std::uint32_t to, std::vector< procgen::road::RoadControlPoint > points, int lanesForward=2, int lanesBackward=0, procgen::road::RoadStyle style={}) const
Create an undoable edge insertion with a reserved stable id.
Definition RoadNetworkEditOperations.cpp:579
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSetEdgeControlPoints(std::uint32_t edgeId, std::vector< procgen::road::RoadControlPoint > points) const
Create an undoable stable-id spline replacement operation.
Definition RoadNetworkEditOperations.cpp:127
static constexpr const char * kSetEdgeLanes
Definition RoadNetworkEditTarget.h:34
static constexpr const char * kMergeNodes
Definition RoadNetworkEditTarget.h:42
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeConnectNodeAtPosition(std::uint32_t sourceNodeId, std::uint32_t edgeId, procgen::road::RoadControlPoint position, float maxDistance, float junctionRadius=6.f, int lanesForward=1, int lanesBackward=0, procgen::road::RoadStyle style={}) const
Atomically split a road at a world position and add a branch from an existing node.
Definition RoadNetworkEditOperations.cpp:422
static constexpr const char * kMergeNodesAndConnect
Definition RoadNetworkEditTarget.h:43
static constexpr const char * kRestoreLaneLinks
Definition RoadNetworkEditTarget.h:57
EVENGINE_API_ORCHESTRATION void * queryCapability(const editing::CapabilityId &capability) override
Query an optional stable capability.
Definition RoadNetworkEditTarget.cpp:794
static constexpr const char * kRemoveEdge
Definition RoadNetworkEditTarget.h:52
EVENGINE_API_ORCHESTRATION editing::GizmoSnapshot gizmo(std::size_t maximumPrimitives=4096, bool showLabels=true) const
Build a renderer-neutral authoring overlay from stable road identities.
Definition RoadNetworkEditTarget.cpp:800
static constexpr const char * kSetEdgeStyle
Definition RoadNetworkEditTarget.h:33
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeRemoveEdge(std::uint32_t edgeId) const
Create an undoable edge removal including its affected lane links.
Definition RoadNetworkEditOperations.cpp:627
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeRemoveNode(std::uint32_t nodeId) const
Create an undoable removal for an isolated stable-id node.
Definition RoadNetworkEditOperations.cpp:562
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeAddEdgeAndConnect(std::uint32_t from, std::uint32_t to, std::vector< procgen::road::RoadControlPoint > points, int lanesForward=2, int lanesBackward=0, procgen::road::RoadStyle style={}) const
Create an edge and every missing endpoint turn involving that edge as one undoable operation.
Definition RoadNetworkEditOperations.cpp:598
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeConnectEdgeIntersection(std::uint32_t firstEdgeId, std::uint32_t secondEdgeId, float maximumHeightDelta=0.5f, float junctionRadius=6.f) const
Atomically convert one unique same-level crossing into a connected junction.
Definition RoadNetworkEditOperations.cpp:475
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeMergeNodesAndConnect(std::uint32_t keepNodeId, std::uint32_t removeNodeId, float maxDistance) const
Atomically merge nearby endpoint nodes and generate every missing legal turn at the result.
Definition RoadNetworkEditOperations.cpp:78
static EVENGINE_API_ORCHESTRATION std::unique_ptr< RoadNetworkEditTarget > createOwned(std::string id)
Create an editor-owned empty road target for automation/composition hosts.
Definition RoadNetworkEditTarget.cpp:781
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeAddLaneLink(procgen::road::RoadLaneConnection link) const
Create an undoable manual lane connection.
Definition RoadNetworkEditOperations.cpp:651
static constexpr const char * kSetNodeRadius
Definition RoadNetworkEditTarget.h:30
static constexpr const char * kUnblockLaneLink
Definition RoadNetworkEditTarget.h:56
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeUnblockLaneLink(const procgen::road::RoadLaneConnection &link) const
Plan removal of one persistent prohibited turn without automatically activating it.
Definition RoadNetworkEditOperations.cpp:705
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeDetachEdgeEndpoint(std::uint32_t edgeId, bool fromEndpoint) const
Create an undoable operation detaching one endpoint onto a new coincident stable node.
Definition RoadNetworkEditOperations.cpp:325
static constexpr const char * kRemoveNode
Definition RoadNetworkEditTarget.h:50
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeSetNodeJunctionRadius(std::uint32_t nodeId, float junctionRadius) const
Create an undoable junction-radius replacement operation.
Definition RoadNetworkEditOperations.cpp:32
EVENGINE_API_ORCHESTRATION RoadNetworkEditTarget(std::string id, procgen::road::RoadNetwork &network)
Bind an editor target to an externally owned road network.
Definition RoadNetworkEditTarget.cpp:778
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeMoveNode(std::uint32_t nodeId, float x, float y, float z) const
Create an undoable stable-id node move operation.
Definition RoadNetworkEditOperations.cpp:12
static constexpr const char * kReverseEdge
Definition RoadNetworkEditTarget.h:35
static constexpr const char * kRestoreLaneLink
Definition RoadNetworkEditTarget.h:53
static constexpr const char * kSetNodeControl
Definition RoadNetworkEditTarget.h:31
EVENGINE_API_ORCHESTRATION EditorResult< editing::DomainOperation > makeMergeNodes(std::uint32_t keepNodeId, std::uint32_t removeNodeId, float maxDistance) const
Create an undoable endpoint-node merge within an explicit 3D snap distance.
Definition RoadNetworkEditOperations.cpp:72
RoadJunctionControl
Authoritative traffic-control policy applied to every approach of one junction node.
Definition RoadTypes.h:43
Definition HeightmapBrush.h:9
editing::Result< void > registerRoadNetworkEditingCommands(editing::IEditingCommandRegistry ®istry)
Register stable road topology commands with an existing editing host.
Definition RoadNetworkEditingCommands.cpp:11
Immutable revision-tagged overlay snapshot consumed by any viewport renderer.
Definition EditingGizmo.h:27
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39
One authored control point on a road centerline (world space, Y-up).
Definition RoadTypes.h:12
Cross-section and structural style for one road edge.
Definition RoadTypes.h:19