载入中...
搜索中...
未找到
MeshModifierGraph.cpp
浏览该文件的文档.
17EditorDiagnostic meshGraphDiagnostic(const char* rule, DiagnosticSeverity severity, std::string message) {
18 return eve::editing::ruleDiagnostic(eve::DiagnosticCode::InvalidArgument, RuleId(rule), severity,
31 std::find_if(node.pins.begin(), node.pins.end(), [&](const GraphPinRecord& pin) { return pin.id == id; });
63 return Result<void>::failure(Diagnostic::error(DiagnosticCode::NotFound, "unknown mesh modifier operation",
69 if (!from || !to || from->direction != GraphPinDirection::Output || to->direction != GraphPinDirection::Input ||
71 return Result<void>::failure(Diagnostic::error(DiagnosticCode::TypeMismatch, "invalid mesh modifier edge",
118Result<void> populateRuntime(const GraphDocumentData& graph, procgen::MeshModifierGraph& runtime) {
128 if (key == "splinePath" && (node.type == "deform.splinePath" || node.type == "mesh.splineTube" ||
144 const auto* closed = closedValue != object->end() ? closedValue->second.getIf<bool>() : nullptr;
184 const std::string kind = procgen::MeshModifierGraph::operationParamKind(node.type, parameterIndex);
219 auto connected = runtime.connect(from->node.value(), to->node.value(), inputIndex(*target, to->id));
255 if (operation == "deform.splinePath" || operation == "mesh.splineTube" || operation == "mesh.splineRibbon" ||
263 std::array<std::array<double, 2>, 4>{{{{-0.5, -0.5}}, {{0.5, -0.5}}, {{0.5, 0.5}}, {{-0.5, 0.5}}}})
264 points.emplace_back(EditorValue::Object{{"x", EditorValue(point[0])}, {"y", EditorValue(point[1])}});
266 EditorValue(EditorValue::Object{{"closed", EditorValue(true)}, {"points", EditorValue(std::move(points))}});
277MeshModifierGraphCompileResult MeshModifierGraphDomain::compile(const GraphDocumentData& graph) const {
282 result.diagnostics.push_back(meshGraphDiagnostic("editor.mesh-modifier.wrong-domain", DiagnosticSeverity::Error,
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:19
Deterministic CPU data-flow graph for procedural mesh deformation and composition.
Definition MeshModifierGraph.h:47
static std::string operationParamDefault(std::string_view operation, int index)
Return encoded reflected parameter default.
Definition MeshModifierGraph.cpp:2036
static int operationParamCount(std::string_view operation)
Return reflected parameter count.
Definition MeshModifierGraph.cpp:2020
static std::string operationParamKind(std::string_view operation, int index)
Return reflected parameter kind: float, int, or string.
Definition MeshModifierGraph.cpp:2030
static std::string operationParamKey(std::string_view operation, int index)
Return reflected parameter key.
Definition MeshModifierGraph.cpp:2024
static int operationInputCount(std::string_view operation)
Return required mesh input count, or -1 for an unknown operation.
Definition MeshModifierGraph.cpp:2016
Result< GraphNodeRecord > makeNode(const GraphNodeId &id, const std::string &operation) const
Construct an editor node from the runtime operation catalogue.
Definition MeshModifierGraph.cpp:239
GraphConnectionDecision canConnect(const GraphPinRecord &from, const GraphPinRecord &to) const override
Allow only mesh output-to-input edges between distinct nodes.
Definition MeshModifierGraph.cpp:227
Owning spline authoring document with transactional operations and schema-versioned snapshots.
Definition SplinePathDocument.h:91
Result< T > applied(T value, std::vector< Diagnostic > diagnostics={})
Construct an Applied result with an owning payload and optional diagnostics.
Definition EditingResult.h:43
Diagnostic ruleDiagnostic(eve::DiagnosticCode code, RuleId rule, DiagnosticSeverity severity, std::string message)
Build a common diagnostic carrying an open editing rule identity.
Definition EditingResult.h:25
editing::GraphPinRecord GraphPinRecord
Definition MaterialGraph.h:43
editing::GraphNodeRecord GraphNodeRecord
Definition MaterialGraph.h:44
Definition HeightmapBrush.h:9
editing::Diagnostic EditorDiagnostic
Definition ProcgenEditingTypes.h:10
Result< procgen::SplinePath > compileSplinePathSnapshot(const EditorValue &snapshot)
Compile a version-one spline snapshot for isolated graph preview.
Definition SplinePathDocument.cpp:601
@ InvalidArgument
@ TypeMismatch
A stable reference resolved to a different canonical domain type.
@ NotFound
@ Conflict
Result of domain-specific connection validation.
Definition EditingGraph.h:50
std::vector< Diagnostic > diagnostics
Definition EditingGraph.h:52
Immutable graph document value sent to a domain compiler.
Definition EditingGraph.h:40
Generic graph node independent of its domain.
Definition EditingGraph.h:25
Structural compilation result for a procgen.meshModifier graph document.
Definition MeshModifierGraph.h:12
std::vector< EditorDiagnostic > diagnostics
Definition MeshModifierGraph.h:15
EditorStatus status
Definition MeshModifierGraph.h:13
Revision documentRevision
Definition MeshModifierGraph.h:14
Revision-tagged owning preview from a mesh modifier graph document.
Definition MeshModifierGraph.h:19
procgen::MeshBuild mesh
Definition MeshModifierGraph.h:22
std::vector< EditorDiagnostic > diagnostics
Definition MeshModifierGraph.h:25
Revision documentRevision
Definition MeshModifierGraph.h:21
int segmentCount
Definition MeshModifierGraph.h:23
int fusedOperationCount
Definition MeshModifierGraph.h:24
EditorStatus status
Definition MeshModifierGraph.h:20