载入中...
搜索中...
未找到
VegetationFieldTarget.cpp
浏览该文件的文档.
28editing::Value transformValue(const editing::StableId& id, const graphics::VegetationElement& element) {
30 {"id", id.value()}, {"center", vec3(element.center)}, {"extents", vec3(element.extents)}, {"yaw", element.yaw}};
33editing::PropertyDescriptor property(std::string path, editing::PropertyType type, editing::Value defaultValue,
67 if (!elements.ok()) return editing::Result<std::unique_ptr<VegetationFieldTarget>>::failure(elements.status());
73 {editing::StableId("element-" + std::to_string(index + 1)), std::move(elements.value()[index])});
98const VegetationFieldTarget::Entry* VegetationFieldTarget::selected(const editing::SelectionSnapshot& selection) const {
102 std::find_if(entries_.begin(), entries_.end(), [&](const Entry& entry) { return entry.id == item; });
108 std::find_if(entries_.begin(), entries_.end(), [&](const Entry& entry) { return entry.id.value() == id; });
112eve::Result<eve::Revision> VegetationFieldTarget::currentRevision(const editing::SelectionSnapshot& selection) const {
124 property("element.center", editing::PropertyType::Vec3, vec3({0.f, 0.f, 0.f}), -1000000, 1000000, "m"),
130editing::PropertyReadResult VegetationFieldTarget::read(const editing::SelectionSnapshot& selection,
141editing::Result<editing::DomainOperation> VegetationFieldTarget::replacement(const Entry& before, const Entry& after,
157 const editing::SelectionSnapshot& selection, glm::vec3 center, glm::vec3 extents, float yaw) const {
170 for (const Entry& entry : entries_) values.push_back(entry.id == after.id ? after.value : entry.value);
176editing::Result<editing::DomainOperation> VegetationFieldTarget::makeSet(const editing::SelectionSnapshot& selection,
209 for (const Entry& entry : entries_) values.push_back(entry.id == after.id ? after.value : entry.value);
215editing::Result<editing::DomainOperation> VegetationFieldTarget::makeReset(const editing::SelectionSnapshot& selection,
225editing::Result<void> VegetationFieldTarget::validateAndPublish(const std::vector<Entry>& entries) {
231 return editing::failed<void>(editing::Status::Failed, editing::RuleId("editor.vegetation-field.allocation"),
237 return result.ok() ? editing::applied<void>() : editing::Result<void>::failure(result.status());
249editing::Result<void> VegetationFieldTarget::applyDomainOperation(const editing::DomainOperation& operation) {
250 if (operation.target != targetId() || operation.type != "vegetation-field.element.transform.v1")
251 return editing::failed<void>(editing::Status::Rejected, editing::RuleId("editor.vegetation-field.operation"),
257 return editing::failed<void>(editing::Status::NotFound, editing::RuleId("editor.vegetation-field.element"),
264 return editing::failed<void>(editing::Status::Rejected, editing::RuleId("editor.vegetation-field.transform"),
269 return editing::failed<void>(editing::Status::Rejected, editing::RuleId("editor.vegetation-field.transform"),
283std::unique_ptr<editing::IDomainOperationTarget> VegetationFieldTarget::cloneDomainState() const {
293 return editing::failed<void>(editing::Status::Conflict, editing::RuleId("editor.vegetation-field.candidate"),
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
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
Backend-independent, owning vegetation influence field. Single writer; concurrent const evaluation is...
Definition VegetationField.h:86
Result< std::vector< VegetationElement > > snapshotElements() const
Return an owning, priority-ordered element snapshot for revision-safe editor previews.
Definition VegetationField.cpp:53
Result< void > replace(const VegetationGlobals &globals, std::span< const VegetationElement > elements)
Validate and atomically replace the entire field; failure preserves prior state.
Definition VegetationField.cpp:63
VegetationGlobals globalValues() const
Return detached global defaults; concurrent reads require no writer. No callbacks.
Definition VegetationField.h:89
uint64_t revision() const
Monotonic successful-publication revision for derived render snapshots.
Definition VegetationField.h:91
Owning editor document whose runtime projection is one VegetationField. Element IDs remain stable whi...
Definition VegetationFieldTarget.h:20
@ Runtime
Definition OffscreenPreview.cpp:12
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ Conflict
Definition Container.h:602
std::vector< PropertyDescriptor > properties
Definition EditingProperty.h:120
std::vector< SelectionItem > items
Definition EditingSelection.h:22
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39