载入中...
搜索中...
未找到
RoadNetworkEditOperations.cpp
浏览该文件的文档.
12EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeMoveNode(std::uint32_t nodeId, float x, float y,
16 return reject<editing::DomainOperation>("editor.road.node", "Road node does not exist", EditorStatus::NotFound);
72EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeMergeNodes(std::uint32_t keepNodeId,
84 std::uint32_t keepNodeId, std::uint32_t removeNodeId, float maxDistance, bool connectTurns) const {
92 const bool referencesAffectedEdge = std::any_of(affectedEdges.begin(), affectedEdges.end(), [&](const auto& edge) {
99 const bool referencesAffectedEdge = std::any_of(affectedEdges.begin(), affectedEdges.end(), [&](const auto& edge) {
117 operation.inverse = encodeUnmergeNodes(removedNode.value(), affectedEdges, affectedLinks, affectedBlockedLinks);
148EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeSetEdgeStyle(std::uint32_t edgeId,
200 operation.inverse = encodeLaneCounts(edgeId, edge.value().lanesForward, edge.value().lanesBackward, removedLinks,
211EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeReverseEdge(std::uint32_t edgeId) const {
312 if (distanceSquared < bestSquared || (distanceSquared == bestSquared && node.id < bestNodeId)) {
352 operation.inverse = encodeReattachEndpoint(edgeId, fromEndpoint, oldNodeId, detached.value(), removedLinks,
363EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeSplitEdge(std::uint32_t edgeId,
383 operation.inverse = encodeUnsplit(original.value(), originalLinks, originalBlockedLinks, split.value().nodeId,
387 operation.affectedObjects.emplace_back(targetId(), "edge/" + std::to_string(split.value().secondEdgeId));
394 std::uint32_t edgeId, procgen::road::RoadControlPoint position, float maxDistance, float junctionRadius) const {
411 operation.payload = encodePositionSplit(edgeId, position, maxDistance, junctionRadius, split.value());
412 operation.inverse = encodeUnsplit(original.value(), originalLinks, originalBlockedLinks, split.value().nodeId,
416 operation.affectedObjects.emplace_back(targetId(), "edge/" + std::to_string(split.value().secondEdgeId));
448 auto branchId = candidate.addEdge(sourceNodeId, split.value().nodeId, std::move(branchPoints), lanesForward,
460 operation.payload = encodeConnectAtPosition(edgeId, position, maxDistance, junctionRadius, split.value(),
462 operation.inverse = encodeDisconnectAtPosition(original.value(), originalLinks, originalBlockedLinks,
467 operation.affectedObjects.emplace_back(targetId(), "node/" + std::to_string(split.value().nodeId));
469 operation.affectedObjects.emplace_back(targetId(), "edge/" + std::to_string(split.value().secondEdgeId));
488 auto intersection = findUniqueInteriorIntersection(first.value(), second.value(), maximumHeightDelta);
508 auto firstSplit = candidate.splitEdgeAtSplineParameter(firstEdgeId, intersection.value().firstParameter,
511 auto secondSplit = candidate.splitEdgeAtSplineParameter(secondEdgeId, intersection.value().secondParameter,
515 auto moved = candidate.setNodePosition(firstSplit.value().nodeId, mergedPoint.x, mergedPoint.y, mergedPoint.z);
517 moved = candidate.setNodePosition(secondSplit.value().nodeId, mergedPoint.x, mergedPoint.y, mergedPoint.z);
519 auto merged = candidate.mergeNodes(firstSplit.value().nodeId, secondSplit.value().nodeId, 1e-3f);
528 operation.payload = encodeIntersectionConnect(firstEdgeId, secondEdgeId, intersection.value().firstParameter,
544EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeAddNode(float x, float y, float z,
562EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeRemoveNode(std::uint32_t nodeId) const {
580 std::uint32_t from, std::uint32_t to, std::vector<procgen::road::RoadControlPoint> points, int lanesForward,
627EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeRemoveEdge(std::uint32_t edgeId) const {
723EditorResult<editing::DomainOperation> RoadNetworkEditTarget::makeConnectAllTurns(std::uint32_t nodeId) const {
Result< int > reconnectEdgeEndpoint(std::uint32_t edgeId, bool fromEndpoint, std::uint32_t nodeId)
Reconnect one edge endpoint to an existing node and prune connections left at the old junction.
Definition RoadNetwork.cpp:732
Result< void > removeNode(std::uint32_t nodeId)
Remove an isolated node.
Definition RoadNetwork.cpp:1022
Result< void > unblockLaneLink(const RoadLaneConnection &link)
Remove one exact persistent lane-link prohibition.
Definition RoadNetwork.cpp:392
Result< void > setEdgeStyle(std::uint32_t edgeId, RoadStyle style)
Replace edge style atomically.
Definition RoadNetwork.cpp:520
Result< void > addLaneLink(RoadLaneConnection link)
Register one legal turn inside a shared junction node.
Definition RoadNetwork.cpp:356
Result< RoadEdgeSplitResult > splitEdgeAtSplineParameter(std::uint32_t edgeId, float parameter, float junctionRadius=6.f, std::uint32_t nodeId=0, std::uint32_t secondEdgeId=0)
Split at a normalized parameter on the same Catmull-Rom centerline used by road baking.
Definition RoadNetwork.cpp:826
Result< std::uint32_t > detachEdgeEndpoint(std::uint32_t edgeId, bool fromEndpoint)
Detach one edge endpoint onto a new coincident stable node.
Definition RoadNetwork.cpp:777
Result< void > removeLaneLink(const RoadLaneConnection &link)
Remove one exact lane-to-lane connection.
Definition RoadNetwork.cpp:403
Result< void > reverseEdge(std::uint32_t edgeId)
Atomically reverse one edge while preserving its physical lanes, links, and side-object intervals.
Definition RoadNetwork.cpp:704
Result< RoadEdgeSplitResult > splitEdgeAtPosition(std::uint32_t edgeId, RoadControlPoint position, float maxDistance, float junctionRadius=6.f)
Project a world position onto the baked Catmull-Rom centerline and split at the nearest point.
Definition RoadNetwork.cpp:945
Result< void > setNodeJunctionRadius(std::uint32_t nodeId, float junctionRadius)
Replace one node's positive junction trim radius.
Definition RoadNetwork.cpp:575
Result< void > setNodeJunctionControl(std::uint32_t nodeId, RoadJunctionControl control)
Replace one node's authoritative traffic-control policy.
Definition RoadNetwork.cpp:588
Result< std::uint32_t > addEdge(std::uint32_t from, std::uint32_t to, std::vector< RoadControlPoint > controlPoints, int lanesForward=2, int lanesBackward=0, RoadStyle style={})
Insert a non-degenerate directed edge between two distinct live nodes.
Definition RoadNetwork.cpp:247
Result< bool > blockLaneLink(RoadLaneConnection link)
Persistently forbid one exact legal lane connection and remove it if currently active.
Definition RoadNetwork.cpp:372
Result< RoadEdgeSplitResult > splitEdge(std::uint32_t edgeId, std::size_t controlPointIndex, float junctionRadius=6.f)
Split an edge at one authored interior control point as a single topology mutation.
Definition RoadNetwork.cpp:821
Result< int > connectAllTurns(std::uint32_t nodeId)
Auto-connect all forward and backward lane ports at one node.
Definition RoadNetwork.cpp:414
const std::vector< RoadLaneConnection > & laneLinks() const noexcept
Lane links.
Definition RoadNetwork.h:249
Result< std::uint32_t > addNode(float x, float y, float z, float junctionRadius=6.f)
Insert a junction node after validating finite coordinates.
Definition RoadNetwork.cpp:219
Result< void > setEdgeControlPoints(std::uint32_t edgeId, std::vector< RoadControlPoint > controlPoints)
Replace one edge spline while preserving its node-owned endpoint positions.
Definition RoadNetwork.cpp:651
const std::vector< RoadLaneConnection > & blockedLaneLinks() const noexcept
Borrow deterministic persistent turn prohibitions until the next network mutation.
Definition RoadNetwork.h:251
Result< void > restoreEdge(RoadEdge edge)
Restore an edge with an explicit stable id for undo/import paths.
Definition RoadNetwork.cpp:295
Result< int > setEdgeLaneCounts(std::uint32_t edgeId, int lanesForward, int lanesBackward)
Atomically replace directional lane counts and remove links that become out of range.
Definition RoadNetwork.cpp:676
Result< int > mergeNodes(std::uint32_t keepNodeId, std::uint32_t removeNodeId, float maxDistance)
Atomically merge one nearby endpoint node into another stable node.
Definition RoadNetwork.cpp:601
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
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< 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< 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
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
static constexpr const char * kRemoveEdge
Definition RoadNetworkEditTarget.h:52
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
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 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
Result< T > applied(T value, std::vector< Diagnostic > diagnostics={})
Construct an Applied result with an owning payload and optional diagnostics.
Definition EditingResult.h:43
RoadJunctionControl
Authoritative traffic-control policy applied to every approach of one junction node.
Definition RoadTypes.h:43
RoadLaneDirection
Travel direction of a lane relative to the authored edge centerline.
Definition RoadTypes.h:79
EditorValue encodeReconnectEndpoint(std::uint32_t edgeId, bool fromEndpoint, std::uint32_t nodeId, const std::vector< procgen::road::RoadLaneConnection > &restoreLinks, const std::vector< procgen::road::RoadLaneConnection > &restoreBlockedLinks)
Definition RoadNetworkEditTarget.cpp:356
EditorValue encodeNode(std::uint32_t id, float x, float y, float z)
Definition RoadNetworkEditTarget.cpp:134
EditorValue encodeIntersectionConnect(std::uint32_t firstEdgeId, std::uint32_t secondEdgeId, float firstParameter, float secondParameter, procgen::road::RoadControlPoint mergedPoint, float maximumHeightDelta, float junctionRadius, const procgen::road::RoadEdgeSplitResult &firstSplit, const procgen::road::RoadEdgeSplitResult &secondSplit)
Definition RoadNetworkEditTarget.cpp:592
EditorValue encodeSplit(std::uint32_t edgeId, std::size_t controlPointIndex, float junctionRadius, const procgen::road::RoadEdgeSplitResult &result)
Definition RoadNetworkEditTarget.cpp:420
EditorValue encodeDisconnectAtPosition(const procgen::road::RoadEdge &original, const std::vector< procgen::road::RoadLaneConnection > &originalLinks, const std::vector< procgen::road::RoadLaneConnection > &originalBlockedLinks, std::uint32_t nodeId, std::uint32_t secondEdgeId, std::uint32_t branchEdgeId)
Definition RoadNetworkEditTarget.cpp:572
EditorValue encodeUnmergeNodes(const procgen::road::RoadNode &removedNode, const std::vector< procgen::road::RoadEdge > &affectedEdges, const std::vector< procgen::road::RoadLaneConnection > &affectedLinks, const std::vector< procgen::road::RoadLaneConnection > &affectedBlockedLinks)
Definition RoadNetworkEditTarget.cpp:475
EditorValue encodeConnectAtPosition(std::uint32_t edgeId, procgen::road::RoadControlPoint position, float maxDistance, float junctionRadius, const procgen::road::RoadEdgeSplitResult &split, const procgen::road::RoadEdge &branch)
Definition RoadNetworkEditTarget.cpp:552
EditorValue encodeLink(const procgen::road::RoadLaneConnection &link)
Definition RoadNetworkEditTarget.cpp:263
EditorValue encodeIntersectionDisconnect(const procgen::road::RoadEdge &first, const procgen::road::RoadEdge &second, const std::vector< procgen::road::RoadLaneConnection > &links, const std::vector< procgen::road::RoadLaneConnection > &blockedLinks, std::uint32_t sharedNodeId, std::uint32_t firstSecondEdgeId, std::uint32_t secondSecondEdgeId)
Definition RoadNetworkEditTarget.cpp:640
EditorValue encodeMergeNodes(std::uint32_t keepNodeId, std::uint32_t removeNodeId, float maxDistance)
Definition RoadNetworkEditTarget.cpp:463
EditorValue encodeEdge(std::uint32_t id, const std::vector< procgen::road::RoadControlPoint > &points)
Definition RoadNetworkEditTarget.cpp:159
EditorValue encodeNodeRadius(std::uint32_t id, float junctionRadius)
Definition RoadNetworkEditTarget.cpp:138
EditorValue encodeEdgeRecord(const procgen::road::RoadEdge &edge, const std::vector< procgen::road::RoadLaneConnection > &links, const std::vector< procgen::road::RoadLaneConnection > &blockedLinks)
Definition RoadNetworkEditTarget.cpp:699
EditorValue encodeNodeControl(std::uint32_t id, procgen::road::RoadJunctionControl control)
Definition RoadNetworkEditTarget.cpp:146
EditorValue encodeUnsplit(const procgen::road::RoadEdge &edge, const std::vector< procgen::road::RoadLaneConnection > &links, const std::vector< procgen::road::RoadLaneConnection > &blockedLinks, std::uint32_t nodeId, std::uint32_t secondEdgeId)
Definition RoadNetworkEditTarget.cpp:534
EditorValue encodeDetachEndpoint(std::uint32_t edgeId, bool fromEndpoint, std::uint32_t nodeId)
Definition RoadNetworkEditTarget.cpp:380
EditorValue encodeLinks(const std::vector< procgen::road::RoadLaneConnection > &links)
Definition RoadNetworkEditTarget.cpp:302
bool decodeEdgeRecord(const EditorValue &value, procgen::road::RoadEdge &edge, std::vector< procgen::road::RoadLaneConnection > &links, std::vector< procgen::road::RoadLaneConnection > *blockedLinks)
Definition RoadNetworkEditTarget.cpp:719
EditorValue encodeReattachEndpoint(std::uint32_t edgeId, bool fromEndpoint, std::uint32_t oldNodeId, std::uint32_t detachedNodeId, const std::vector< procgen::road::RoadLaneConnection > &restoreLinks, const std::vector< procgen::road::RoadLaneConnection > &restoreBlockedLinks)
Definition RoadNetworkEditTarget.cpp:394
Result< RoadIntersection > findUniqueInteriorIntersection(const procgen::road::RoadEdge &first, const procgen::road::RoadEdge &second, float maximumHeightDelta)
Definition RoadNetworkEditTarget.cpp:55
EditorValue encodeLaneCounts(std::uint32_t edgeId, int lanesForward, int lanesBackward, const std::vector< procgen::road::RoadLaneConnection > &restoreLinks, const std::vector< procgen::road::RoadLaneConnection > &restoreBlockedLinks)
Definition RoadNetworkEditTarget.cpp:323
EditorValue encodeBlockedLink(const procgen::road::RoadLaneConnection &link, bool restoreActive)
Definition RoadNetworkEditTarget.cpp:284
EditorValue encodePositionSplit(std::uint32_t edgeId, procgen::road::RoadControlPoint position, float maxDistance, float junctionRadius, const procgen::road::RoadEdgeSplitResult &result)
Definition RoadNetworkEditTarget.cpp:441
EditorValue encodeStyle(std::uint32_t id, const procgen::road::RoadStyle &style)
Definition RoadNetworkEditTarget.cpp:167
EditorValue encodeNodeRecord(const procgen::road::RoadNode &node)
Definition RoadNetworkEditTarget.cpp:231
Definition HeightmapBrush.h:9
Definition Container.h:602
One authored control point on a road centerline (world space, Y-up).
Definition RoadTypes.h:12
Directed centerline edge with optional reverse lanes.
Definition RoadTypes.h:61
One legal lane-to-lane connection inside a junction.
Definition RoadTypes.h:90
Cross-section and structural style for one road edge.
Definition RoadTypes.h:19