载入中...
搜索中...
未找到
EditingGraph.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6
7#include <map>
8#include <string>
9#include <vector>
10
11namespace eve::editing {
12
15
23
27 std::string type;
29 std::vector<GraphPinRecord> pins;
30};
31
38
41 std::string domain;
42 std::uint32_t schemaVersion = 1;
44 std::vector<GraphNodeRecord> nodes;
45 std::vector<GraphEdgeRecord> edges;
47};
48
51 bool allowed = false;
52 std::vector<Diagnostic> diagnostics;
53};
54
57public:
59 [[nodiscard]] Result<void> createNode(GraphNodeRecord node);
61 [[nodiscard]] Result<void> deleteNode(const GraphNodeId& node);
63 [[nodiscard]] Result<void> connect(GraphEdgeRecord edge, const GraphConnectionDecision& decision);
65 [[nodiscard]] Result<void> disconnect(const StableId& edge);
67 [[nodiscard]] Result<void> setNodeProperties(const GraphNodeId& node, Value properties);
69 [[nodiscard]] Result<void> setParameters(Value parameters);
71 [[nodiscard]] GraphDocumentData snapshot(std::string domain) const;
73 [[nodiscard]] Revision revision() const { return revision_; }
76 [[nodiscard]] const GraphPinRecord* findPin(const GraphPinId& pin) const;
77
78private:
79 std::map<GraphNodeId, GraphNodeRecord> nodes_;
80 std::map<StableId, GraphEdgeRecord> edges_;
81 Value parameters_;
82 Revision revision_ = 0;
83};
84
87public:
89 virtual ~IGraphDomainProvider() = default;
91 [[nodiscard]] virtual std::string domain() const = 0;
93 [[nodiscard]] virtual GraphConnectionDecision canConnect(
94 const GraphPinRecord& from, const GraphPinRecord& to) const = 0;
95};
96
97} // namespace eve::editing
std::string from
#define EVENGINE_API_PLATFORM
Definition Export.h:107
HexCoordinates to
Cell the unit walks towards on this segment.
Definition HexUnits.cpp:64
std::map< std::string, PropertyRule > properties
const RoadNode * node
const RoadEdge * edge
Move-only operation result carrying either a value or Status.
Definition Result.h:155
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Generic mutable graph model with one authoritative revision clock.
Revision revision() const
Revision.
Domain-owned typed connection policy.
virtual ~IGraphDomainProvider()=default
Releases IGraphDomainProvider resources.
virtual GraphConnectionDecision canConnect(const GraphPinRecord &from, const GraphPinRecord &to) const =0
Can connect.
virtual std::string domain() const =0
Domain.
Deterministic owning value tree shared by authoring hosts.
std::uint64_t Revision
GraphPinDirection
Direction of a typed graph pin.
Result of domain-specific connection validation.
std::vector< Diagnostic > diagnostics
Immutable graph document value sent to a domain compiler.
std::vector< GraphNodeRecord > nodes
std::vector< GraphEdgeRecord > edges
Directed connection between an output and input pin.
Generic graph node independent of its domain.
std::vector< GraphPinRecord > pins
Stable typed pin owned by a graph node.
GraphPinDirection direction