载入中...
搜索中...
未找到
ProcgenScriptEditor.h
浏览该文件的文档.
1#pragma once
2
12
13#include <cstdint>
14#include <string>
15#include <unordered_map>
16#include <vector>
17
18namespace eve::procgen {
19class PointSet;
20}
21
22namespace eve::procgen_editor {
23
37public:
39 explicit ProcgenScriptEditor(std::string targetId);
40
43
45 const procgen_editing::ProcgenScriptDocumentTarget& target() const noexcept { return target_; }
46
51 [[nodiscard]] procgen_editing::Result<void> configureWorkspace(editor::EditorWorkspace& workspace) const;
52
54 [[nodiscard]] procgen_editing::Result<void> loadModule(std::string uri, std::string id,
55 std::string displayName, std::string kind,
56 const procgen_editing::EditorValue& schema);
57
59 [[nodiscard]] procgen_editing::Result<void> setParam(std::string key,
62 [[nodiscard]] procgen_editing::Result<void> setInt(std::string key, int value);
64 [[nodiscard]] procgen_editing::Result<void> setFloat(std::string key, double value);
66 [[nodiscard]] procgen_editing::Result<void> setBool(std::string key, bool value);
68 [[nodiscard]] procgen_editing::Result<void> setString(std::string key, std::string value);
69
78 [[nodiscard]] procgen_editing::Result<void> publishPreview(const procgen::PointSet* points,
79 std::string stage, std::uint64_t expectedRevision);
86 [[nodiscard]] procgen_editing::Result<void> publishStage(const procgen::PointSet* points, std::string stage);
87 [[nodiscard]] procgen_editing::Result<void> failPreview(std::string message,
88 std::uint64_t expectedRevision);
90 [[nodiscard]] procgen_editing::Result<void> selectStage(std::string stage);
92 [[nodiscard]] procgen_editing::Result<void> setPointBudget(int budget);
97 [[nodiscard]] procgen_editing::Result<void> setLive(bool enabled);
98
101
102 bool canUndo() const noexcept { return transactions_.canUndo(); }
104 bool canRedo() const noexcept { return transactions_.canRedo(); }
106 bool isDirty() const noexcept { return dirty_; }
108 bool isContinuousRebuild() const noexcept { return continuousRebuild_; }
110 std::uint64_t revision() const noexcept { return target_.revision(); }
112 std::uint64_t previewRevision() const noexcept { return previewRevision_; }
114 int pointBudget() const noexcept { return pointBudget_; }
116 std::string moduleId() const { return target_.moduleId(); }
118 std::string moduleUri() const { return target_.uri(); }
120 std::string displayName() const { return target_.displayName(); }
122 std::string kind() const { return target_.kind(); }
124 std::string selectedStage() const { return selectedStage_; }
126 std::string previewFailureSummary() const { return previewFailureSummary_; }
127
129 int paramCount() const { return static_cast<int>(target_.params().size()); }
131 std::string paramKey(int index) const;
133 std::string paramLabel(int index) const;
135 std::string paramKind(int index) const;
137 float paramMinimum(int index) const;
139 float paramMaximum(int index) const;
141 float paramStep(int index) const;
143 int paramChoiceCount(int index) const;
145 std::string paramChoice(int paramIndex, int choiceIndex) const;
147 int getInt(const std::string& key) const;
149 float getFloat(const std::string& key) const;
151 bool getBool(const std::string& key) const;
153 std::string getString(const std::string& key) const;
154
156 int stageCount() const { return static_cast<int>(stageOrder_.size()); }
158 std::string stageName(int index) const;
160 int pointCount() const;
162 float pointX(int index) const;
164 float pointZ(int index) const;
166 std::uint32_t pointSeed(int index) const;
167
168private:
169 struct PreviewPoint {
170 float x = 0;
171 float z = 0;
172 std::uint32_t seed = 1;
173 };
174
175 [[nodiscard]] procgen_editing::Result<void> commit(
177 editor::SelectionSnapshot selection() const;
185 const procgen::ParamDescriptor* paramAt(int index) const;
193 const procgen::PointSet* points) const;
194 const std::vector<PreviewPoint>& displayedPoints() const;
195
199 std::unordered_map<std::string, std::vector<PreviewPoint>> stages_;
200 std::vector<std::string> stageOrder_;
201 std::string selectedStage_;
202 std::string previewFailureSummary_;
203 std::uint64_t txSequence_ = 0;
204 std::uint64_t previewRevision_ = 0;
205 int pointBudget_ = 100000;
206 bool dirty_ = false;
207 bool continuousRebuild_ = false;
208};
209
210} // namespace eve::procgen_editor
ActionParameterOperation operation
double value
float x
Definition AnimClip.cpp:738
float z
Definition AnimClip.cpp:738
std::string label
#define EVENGINE_API_EDITORS
Definition Export.h:112
std::string message
std::uint32_t key
TokenKind kind
std::uint32_t seed
Definition PointSet.cpp:807
std::string uri
std::uint32_t targetId
std::shared_ptr< const std::vector< glm::vec2 > > points
uint32_t index
Move-only operation result carrying either a value or Status.
Definition Result.h:155
In-process authority for a single editable runtime or document target.
Deterministic owning value tree shared by authoring hosts.
Composition model shared by project-specific developer and runtime editors.
Local transaction coordinator backed by an injected edit authority.
Script-friendly collection of attributed 3D samples.
Definition PointSet.h:59
Revisioned Params document for a script-hosted procedural generator.
Workspace controller for one encapsulated procedural script module.
std::string moduleUri() const
Module uri.
std::string selectedStage() const
Selected stage.
bool isContinuousRebuild() const noexcept
True when the presenter should rebuild after every committed parameter edit.
std::string displayName() const
Display name.
std::uint64_t previewRevision() const noexcept
Preview revision.
std::uint64_t revision() const noexcept
Revision.
std::string previewFailureSummary() const
Empty when the last publish succeeded; otherwise the failPreview summary.
ProcgenScriptEditor(const ProcgenScriptEditor &)=delete
int pointBudget() const noexcept
Point budget.
bool isDirty() const noexcept
True when dirty.
const procgen_editing::ProcgenScriptDocumentTarget & target() const noexcept
Borrow the authoritative generator document.
ProcgenScriptEditor & operator=(const ProcgenScriptEditor &)=delete
bool enabled
SelectionSnapshot public API.
UI-independent metadata for one procedural recipe parameter.
Definition ParamSchema.h:14
Authored identity and reflected parameter schema for one script generator.