载入中...
搜索中...
未找到
ProcgenScriptTarget.cpp
浏览该文件的文档.
14EditorDiagnostic diagnostic(const char* rule, editing::DiagnosticSeverity severity, std::string message) {
15 return eve::editing::ruleDiagnostic(eve::DiagnosticCode::InvalidArgument, editing::RuleId(rule), severity,
32std::string requireString(const EditorValue& object, const char* key, std::string fallback = {}) {
84 return capability == propertyCapabilityId() ? static_cast<editing::IPropertyProvider*>(this) : nullptr;
136const procgen::ParamDescriptor* ProcgenScriptDocumentTarget::findParam(const std::string& key) const {
249Result<ProcgenScriptModuleSpec> ProcgenScriptDocumentTarget::parseSpec(std::string uri, std::string id,
294 param.displayName = requireString(rowValue, "displayName", requireString(rowValue, "label", param.key));
388 const editing::SelectionSnapshot& selection, const editing::PropertyPath& path, const EditorValue& value,
405 content.getIf<EditorValue::Object>() ? *content.getIf<EditorValue::Object>() : EditorValue::Object{};
428 diagnostics.push_back(diagnostic("editor.procgen-script.kind", editing::DiagnosticSeverity::Error,
436 diagnostics.push_back(diagnostic("editor.procgen-script.parameter", editing::DiagnosticSeverity::Error,
445Result<void> ProcgenScriptDocumentTarget::applyDomainOperation(const editing::DomainOperation& operation) {
446 if (operation.target != editing::TargetId(id_) || operation.type != "procgen.script.replace.v1")
447 return eve::editing::failed<void>(EditorStatus::Rejected, editing::RuleId("editor.procgen-script.operation"),
449 const auto parsed = parseSpec(requireString(operation.payload, "uri"), requireString(operation.payload, "id"),
458 return eve::editing::failed<void>(EditorStatus::Rejected, editing::RuleId("editor.procgen-script.payload"),
465 return eve::editing::failed<void>(EditorStatus::Rejected, editing::RuleId("editor.procgen-script.invalid"),
473std::unique_ptr<editing::IDomainOperationTarget> ProcgenScriptDocumentTarget::cloneDomainState() const {
481 return eve::editing::failed<void>(EditorStatus::Conflict, editing::RuleId("editor.procgen-script.candidate"),
496 return eve::editing::failed<void>(EditorStatus::Unsupported, editing::RuleId("editor.procgen-script.snapshot"),
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
bool ok() const noexcept
Whether this result represents a non-failure outcome.
Definition Result.h:480
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
eve::OptionalRef< C > capability()
Query a capability through its interface-owned stable identity.
Definition EditableTarget.h:82
UI-independent property access for an immutable selection snapshot.
Definition EditingProperty.h:139
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
Revisioned Params document for a script-hosted procedural generator.
Definition ProcgenScriptTarget.h:47
Result< void > applyDomainOperation(const editing::DomainOperation &) override
Applies domain operation.
Definition ProcgenScriptTarget.cpp:445
Result< void > loadSnapshot(const EditorValue &)
Loads snapshot.
Definition ProcgenScriptTarget.cpp:491
Result< editing::DomainOperation > makeSet(const editing::SelectionSnapshot &, const editing::PropertyPath &, const EditorValue &, editing::PropertySetMode) const override
Make set.
Definition ProcgenScriptTarget.cpp:387
Result< editing::DomainOperation > makeLoadModule(ProcgenScriptModuleSpec spec) const
Replace module identity and schema, remapping values (drop unknown, fill defaults).
Definition ProcgenScriptTarget.cpp:354
eve::Result< eve::Revision > currentRevision(const editing::SelectionSnapshot &) const override
Current revision.
Definition ProcgenScriptTarget.cpp:92
const procgen::ParamDescriptor * findParam(const std::string &key) const
Find one reflected parameter by stable key.
Definition ProcgenScriptTarget.cpp:136
editing::PropertySchema schema(const editing::SelectionSnapshot &) const override
Schema.
Definition ProcgenScriptTarget.cpp:142
std::unique_ptr< editing::IDomainOperationTarget > cloneDomainState() const override
Clones domain state.
Definition ProcgenScriptTarget.cpp:473
Result< void > commitDomainState(std::unique_ptr< editing::IDomainOperationTarget >) override
Commits domain state.
Definition ProcgenScriptTarget.cpp:477
editing::PropertyReadResult read(const editing::SelectionSnapshot &, const editing::PropertyPath &) const override
Reads .
Definition ProcgenScriptTarget.cpp:164
static editing::CapabilityId propertyCapabilityId()
Capability identity published by describe() for Inspector editing.
Definition ProcgenScriptTarget.h:53
void * queryCapability(const editing::CapabilityId &) override
Query Inspector property capability.
Definition ProcgenScriptTarget.cpp:83
Result< editing::DomainOperation > makeReset(const editing::SelectionSnapshot &, const editing::PropertyPath &) const override
Make reset.
Definition ProcgenScriptTarget.cpp:415
const std::vector< procgen::ParamDescriptor > & params() const
Params.
Definition ProcgenScriptTarget.h:114
static Result< ProcgenScriptModuleSpec > parseSpec(std::string uri, std::string id, std::string displayName, std::string kind, const EditorValue &schema)
Parse a schema array into a module spec.
Definition ProcgenScriptTarget.cpp:249
ProcgenScriptDocumentTarget(std::string id)
Construct an empty generator document.
Definition ProcgenScriptTarget.cpp:73
EVENGINE_API_PLATFORM bool hasErrors(const std::vector< DnutDiagnostic > &diagnostics)
Return whether any diagnostic is an error.
Definition DnutLexer.cpp:233
@ Absolute
@ Advanced
@ Runtime
Result< T > applied(T value, std::vector< Diagnostic > diagnostics={})
Construct an Applied result with an owning payload and optional diagnostics.
Definition EditingResult.h:43
Result< void > validatePropertyValue(const PropertyDescriptor &descriptor, const Value &value)
Validate property value.
Definition EditingProperty.cpp:138
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
constexpr HexDirection next(HexDirection d) noexcept
The next direction clockwise (NW wraps to NE).
Definition HexMetrics.h:76
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
bool readNumber(const EditorValue &value, const char *name, float &output)
Definition RoadNetworkEditTarget.cpp:30
Definition HeightmapBrush.h:9
editing::Diagnostic EditorDiagnostic
Definition ProcgenEditingTypes.h:10
@ String
@ Boolean
@ Choice
@ Integer
@ InvalidArgument
Definition Container.h:602
std::vector< PropertyDescriptor > properties
Definition EditingProperty.h:120
PropertyDescriptorLookup find(const PropertyPath &path) const
Finds find.
Definition EditingProperty.cpp:9
std::vector< SelectionItem > items
Definition EditingSelection.h:22
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39
UI-independent metadata for one procedural recipe parameter.
Definition ParamSchema.h:14
Authored identity and reflected parameter schema for one script generator.
Definition ProcgenScriptTarget.h:26
std::string displayName
Definition ProcgenScriptTarget.h:29
std::vector< procgen::ParamDescriptor > params
Definition ProcgenScriptTarget.h:31
std::string kind
Definition ProcgenScriptTarget.h:30
std::string uri
Definition ProcgenScriptTarget.h:27