载入中...
搜索中...
未找到
ProcgenScriptTarget.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
9
10#include <cstdint>
11#include <string>
12#include <vector>
13
14namespace eve::procgen_editing {
15
18using EditorValue = editing::Value;
19using editing::Result;
20
27 std::string uri;
28 std::string id;
29 std::string displayName;
30 std::string kind = "points";
31 std::vector<procgen::ParamDescriptor> params;
32};
33
48public:
50 explicit ProcgenScriptDocumentTarget(std::string id);
51
55 return editing::CapabilityId("eve.editor.target.procgen-script-properties");
56 }
57
59 editing::TargetId targetId() const override { return editing::TargetId(id_); }
61 std::uint64_t revision() const override { return revision_; }
63 editing::EditRegion dirtyRegion() const override { return dirty_; }
65 void clearDirtyRegion() override { dirty_.clear(); }
67 editing::TargetDescriptor describe() const override;
73 void* queryCapability(const editing::CapabilityId&) override;
75 Result<void> applyDomainOperation(const editing::DomainOperation&) override;
77 std::unique_ptr<editing::IDomainOperationTarget> cloneDomainState() const override;
79 Result<void> commitDomainState(std::unique_ptr<editing::IDomainOperationTarget>) override;
81 eve::Result<eve::Revision> currentRevision(const editing::SelectionSnapshot&) const override;
83 editing::PropertySchema schema(const editing::SelectionSnapshot&) const override;
86 const editing::PropertyPath&) const override;
90 editing::PropertySetMode) const override;
93 const editing::PropertyPath&) const override;
94
99 static Result<ProcgenScriptModuleSpec> parseSpec(std::string uri, std::string id, std::string displayName,
100 std::string kind, const EditorValue& schema);
101
104
106 const std::string& uri() const { return uri_; }
108 const std::string& moduleId() const { return moduleId_; }
110 const std::string& displayName() const { return displayName_; }
112 const std::string& kind() const { return kind_; }
114 const std::vector<procgen::ParamDescriptor>& params() const { return params_; }
116 const EditorValue::Object& values() const { return values_; }
125 const procgen::ParamDescriptor* findParam(const std::string& key) const;
126
128 std::vector<EditorDiagnostic> validate() const;
130 EditorValue snapshotValue() const;
132 Result<void> loadSnapshot(const EditorValue&);
133
134private:
136 bool matches(const editing::SelectionSnapshot&) const;
138 EditorValue contentValue() const;
140 EditorValue schemaValue() const;
144 static editing::PropertyType propertyType(procgen::ParamKind kind);
146 void applySpec(ProcgenScriptModuleSpec spec);
147
148 std::string id_;
149 std::string uri_;
150 std::string moduleId_;
151 std::string displayName_;
152 std::string kind_ = "points";
153 std::vector<procgen::ParamDescriptor> params_;
154 EditorValue::Object values_;
155 editing::Revision revision_ = 1;
156 editing::EditRegion dirty_;
157};
158
159} // namespace eve::procgen_editing
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
std::uint32_t key
TokenKind kind
std::string uri
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
Optional candidate/publish capability for atomic domain operations.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
UI-independent property access for an immutable selection snapshot.
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
std::map< std::string, Value > Object
Revisioned Params document for a script-hosted procedural generator.
editing::EditRegion dirtyRegion() const override
Dirty region.
void clearDirtyRegion() override
Clears dirty region.
const std::string & moduleId() const
Module id.
editing::TargetId targetId() const override
Target id.
std::uint64_t revision() const override
Revision.
const std::string & displayName() const
Display name.
static editing::CapabilityId propertyCapabilityId()
Capability identity published by describe() for Inspector editing.
const EditorValue::Object & values() const
Values.
const std::vector< procgen::ParamDescriptor > & params() const
Params.
const char * defaultValue
std::uint64_t Revision
eve::Diagnostic Diagnostic
PropertyType
PropertyType public API.
PropertySetMode
PropertySetMode public API.
eve::StatusCode Status
eve::Result< T > Result
editing::Diagnostic EditorDiagnostic
ParamKind
Semantic type used by schema-driven recipe parameter editors.
Definition ParamSchema.h:11
DomainOperation public API.
EditRegion public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.
UI-independent metadata for one procedural recipe parameter.
Definition ParamSchema.h:14
Authored identity and reflected parameter schema for one script generator.
std::vector< procgen::ParamDescriptor > params