载入中...
搜索中...
未找到
MaterialGraph.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7
8#include <string>
9#include <unordered_map>
10#include <vector>
11
12namespace eve::material_editing {
13
17using editing::GraphConnectionDecision;
18using editing::GraphDocument;
19using editing::GraphDocumentData;
20using editing::GraphEdgeRecord;
21using editing::GraphNodeRecord;
23using editing::GraphPinRecord;
24using editing::IGraphDomainProvider;
26using editing::RuleId;
27using editing::Status;
29using editing::StrongIdHash;
30using editing::TaskContext;
31using editing::TaskId;
32using editing::TaskOutcome;
33using editing::TaskService;
35using editing::Value;
36using editing::Result;
40
50
53 EditorStatus status = EditorStatus::Failed;
55 std::string shaderArtifact;
56 std::vector<EditorDiagnostic> diagnostics;
57};
58
61public:
63 std::string domain() const override { return "material"; }
65 GraphConnectionDecision canConnect(const GraphPinRecord& from, const GraphPinRecord& to) const override;
67 MaterialCompileResult compile(const GraphDocumentData& graph) const;
68};
69
77public:
79 Result<TaskId> compile(const DocumentId& document, const GraphDocumentData& graph,
80 const MaterialGraphDomain& domain);
82 Result<TaskId> compileAsync(const DocumentId& document, GraphDocumentData graph,
83 const MaterialGraphDomain& domain, TaskService& tasks);
85 Result<void> cancel(const TaskId& task);
87 Result<MaterialCompileResult> result(const TaskId& task) const;
89 Result<void> publishPreview(const DocumentId& document, Revision currentRevision, const TaskId& task);
91 std::string previewArtifact(const DocumentId& document) const;
92
93private:
94 struct Task {
95 DocumentId document;
97 TaskService* service = nullptr;
98 };
99
100 std::unordered_map<TaskId, Task, StrongIdHash<TaskId>> tasks_;
101 std::unordered_map<DocumentId, std::string, StrongIdHash<DocumentId>> previews_;
102 std::uint64_t taskSequence_ = 0;
103};
104
105} // namespace eve::material_editing
std::string from
void * service
#define EVENGINE_API_BACKENDS
Definition Export.h:108
HexCoordinates to
Cell the unit walks towards on this segment.
Definition HexUnits.cpp:64
std::map< std::string, std::vector< std::string > > graph
Definition Package.cpp:59
A structured explanation of a failed, degraded, or noteworthy result.
Definition Diagnostic.h:94
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Id128 public API.
Definition Identity.h:112
Generic mutable graph model with one authoritative revision clock.
Domain-owned typed connection policy.
Single-worker background queue shared by editor domains.
Deterministic owning value tree shared by authoring hosts.
Revision-aware material compile result and preview publication service.
Minimal material domain with typed pin validation and deterministic compile artifacts.
std::string domain() const override
Domain.
eve::Severity DiagnosticSeverity
std::uint64_t Revision
GraphPinDirection
Direction of a typed graph pin.
eve::Diagnostic Diagnostic
StrongId< StableIdTag > StableId
Definition EditingIds.h:64
StrongId< RuleIdTag > RuleId
Definition EditingIds.h:60
eve::StatusCode Status
TaskState
Observable lifecycle of a background editor task.
eve::Result< T > Result
StrongId< TaskIdTag > TaskId
Definition EditingIds.h:70
StrongId< DocumentIdTag > DocumentId
Definition EditingIds.h:67
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
Result of domain-specific connection validation.
Immutable graph document value sent to a domain compiler.
Directed connection between an output and input pin.
Generic graph node independent of its domain.
Stable typed pin owned by a graph node.
Material graph compilation value; artifact is published separately.
std::vector< EditorDiagnostic > diagnostics