载入中...
搜索中...
未找到
BiomeTarget.cpp
浏览该文件的文档.
32 return eve::editing::failed<BiomeAssetValue>(EditorStatus::Rejected, RuleId("editor.biome.asset"),
43 return eve::editing::failed<BiomeAssetValue>(EditorStatus::Rejected, RuleId("editor.biome.asset-number"),
59 if (!ids || ids->empty() || !names || !spatials || !priorities || !densities || !std::isfinite(*densities) || !a)
60 return eve::editing::failed<BiomeLayerValue>(EditorStatus::Rejected, RuleId("editor.biome.layer"),
70 return eve::editing::failed<BiomeLayerValue>(EditorStatus::Rejected, RuleId("editor.biome.asset"),
76PropertyDescriptor prop(std::string p, PropertyType t, EditorValue v, const char* c, double min = -1e9,
90 return std::any_of(d.begin(), d.end(), [](const auto& v) { return v.severity() == DiagnosticSeverity::Error; });
93 return eve::editing::ruleDiagnostic(eve::DiagnosticCode::InvalidArgument, RuleId(rule), severity,
154PropertyReadResult BiomeDocumentTarget::read(const SelectionSnapshot& s, const PropertyPath& p) const {
195 return EditorValue::Object{{"layers", std::move(layers)}, {"exclusions", std::move(exclusions)}};
209Result<DomainOperation> BiomeDocumentTarget::makeSet(const SelectionSnapshot& s, const PropertyPath& p,
213 if (!matches(s) || !d || mode != PropertySetMode::Absolute || !validatePropertyValue(*d, value).ok())
214 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.set"),
244 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.invalid"),
248Result<DomainOperation> BiomeDocumentTarget::makeReset(const SelectionSnapshot& s, const PropertyPath& p) const {
251 return eve::editing::failed<DomainOperation>(EditorStatus::Unsupported, RuleId("editor.biome.property"),
257 std::any_of(layers_.begin(), layers_.end(), [&](const auto& x) { return x.id == v.id || x.name == v.name; }))
258 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.layer-id"),
263 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.layer"),
269 return eve::editing::failed<DomainOperation>(EditorStatus::NotFound, RuleId("editor.biome.layer"),
278 auto l = std::find_if(c.layers_.begin(), c.layers_.end(), [&](const auto& x) { return x.id == layer; });
280 return eve::editing::failed<DomainOperation>(EditorStatus::NotFound, RuleId("editor.biome.layer"),
285 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.asset-id"),
289 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.asset"),
302 return eve::editing::failed<DomainOperation>(EditorStatus::NotFound, RuleId("editor.biome.asset"),
306Result<DomainOperation> BiomeDocumentTarget::makeSetExclusions(std::vector<std::string> v) const {
310 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.biome.exclusions"),
318 diagnostic("editor.biome.budget", DiagnosticSeverity::Error, "Biome exceeds 256 layers or exclusions"));
325 if (l.id.empty() || l.name.empty() || !ids.insert(l.id.value()).second || !names.insert(l.name).second)
330 diagnostic("editor.biome.spatial", DiagnosticSeverity::Error, "Biome layer requires a spatial asset"));
331 if (l.priority < -100000 || l.priority > 100000 || !std::isfinite(l.density) || l.density < 0 || l.density > 1)
339 diagnostic("editor.biome.asset-budget", DiagnosticSeverity::Error, "Biome layer exceeds 4096 assets"));
341 if (a.id.empty() || a.asset.empty() || !ids.insert(a.id.value()).second || !std::isfinite(a.weight) ||
349 d.push_back(diagnostic("editor.biome.empty", DiagnosticSeverity::Warning, "Biome has no layers"));
357 const auto *layers = field(op.payload, "layers"), *exclusions = field(op.payload, "exclusions");
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
Result< DomainOperation > makeCreateLayer(const BiomeLayerValue &) const
Make create layer.
Definition BiomeTarget.cpp:255
Result< DomainOperation > makeSet(const SelectionSnapshot &, const PropertyPath &, const EditorValue &, PropertySetMode) const override
Make set.
Definition BiomeTarget.cpp:209
Result< DomainOperation > makeDeleteLayer(const ObjectId &) const
Make delete layer.
Definition BiomeTarget.cpp:267
Result< DomainOperation > makeDeleteAsset(const ObjectId &) const
Make delete asset.
Definition BiomeTarget.cpp:293
PropertyReadResult read(const SelectionSnapshot &, const PropertyPath &) const override
Reads .
Definition BiomeTarget.cpp:154
Result< DomainOperation > makeReset(const SelectionSnapshot &, const PropertyPath &) const override
Make reset.
Definition BiomeTarget.cpp:248
Result< DomainOperation > makeSetExclusions(std::vector< std::string >) const
Make set exclusions.
Definition BiomeTarget.cpp:306
std::unique_ptr< IDomainOperationTarget > cloneDomainState() const override
Clones domain state.
Definition BiomeTarget.cpp:387
PropertySchema schema(const SelectionSnapshot &) const override
Schema.
Definition BiomeTarget.cpp:136
Result< void > commitDomainState(std::unique_ptr< IDomainOperationTarget >) override
Commits domain state.
Definition BiomeTarget.cpp:390
static CapabilityId propertyCapabilityId()
Capability identity published by describe() for Inspector property editing.
Definition BiomeTarget.h:69
Result< void > applyDomainOperation(const DomainOperation &) override
Applies domain operation.
Definition BiomeTarget.cpp:352
Result< DomainOperation > makeCreateAsset(const ObjectId &layer, const BiomeAssetValue &) const
Make create asset.
Definition BiomeTarget.cpp:275
void * queryCapability(const CapabilityId &) override
Query Inspector property and snapshot capabilities. @ownership Borrowed from this target; callers mus...
Definition BiomeTarget.cpp:105
eve::Result< eve::Revision > currentRevision(const SelectionSnapshot &) const override
Current revision.
Definition BiomeTarget.cpp:130
void bumpRevision()
Advance the revision without touching the dirty region.
Definition EditableTarget.h:179
Revision revisionValue() const noexcept
Return the revision as the shared protocol revision type.
Definition EditableTarget.h:169
void widenDirty()
Mark an unknown area dirty without advancing the revision.
Definition EditableTarget.h:177
virtual void clearDirtyRegion()=0
Clears dirty region.
Optional capability exposing a deterministic, persistence-safe editing snapshot.
Definition EditableTarget.h:247
static CapabilityId editingCapabilityId()
Stable capability identity shared by every editable domain target.
Definition EditableTarget.h:252
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
bool isWithinLimits(size_t maxDepth, size_t maxElements, size_t maxStringBytes) const
Validate nesting, element count and approximate string byte limits.
Definition EditingValue.cpp:50
editing::PropertyDescriptor PropertyDescriptor
Definition BiomeTarget.h:31
editing::DomainOperation DomainOperation
Definition BiomeTarget.h:19
editing::DiagnosticSeverity DiagnosticSeverity
Definition BiomeTarget.h:18
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
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
Definition Container.h:602
Stable weighted asset entry in one biome layer.
Definition BiomeTarget.h:45
Stable authored biome layer referencing a spatial asset.
Definition BiomeTarget.h:51
std::vector< PropertyDescriptor > properties
Definition EditingProperty.h:120
PropertyDescriptorLookup find(const PropertyPath &path) const
Finds find.
Definition EditingProperty.cpp:9
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39