载入中...
搜索中...
未找到
VirtualGeometryTarget.cpp
浏览该文件的文档.
15PropertyDescriptor prop(std::string path, PropertyType type, EditorValue value, const char* category, double minimum,
29 return std::any_of(d.begin(), d.end(), [](const auto& v) { return v.severity() == DiagnosticSeverity::Error; });
32VirtualGeometryDocumentTarget::VirtualGeometryDocumentTarget(std::string id) : id_(std::move(id)) {}
41 return c == CapabilityId("eve.editor.target.virtualgeometry-properties") ? static_cast<IPropertyProvider*>(this)
45 return s.items.size() == 1 && s.items.front().target == TargetId(id_) && s.items.front().item.value() == id_;
47eve::Result<eve::Revision> VirtualGeometryDocumentTarget::currentRevision(const SelectionSnapshot& s) const {
87PropertyReadResult VirtualGeometryDocumentTarget::read(const SelectionSnapshot& s, const PropertyPath& p) const {
130Result<DomainOperation> VirtualGeometryDocumentTarget::makeSet(const SelectionSnapshot& s, const PropertyPath& p,
135 if (!matches(s) || !d || mode != PropertySetMode::Absolute || !validatePropertyValue(*d, value).ok())
136 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.set"),
165 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.invalid"),
174 EditorStatus::Unsupported, RuleId("editor.virtualgeometry.property"), "Unknown VirtualGeometry property");
186 v.builder.maxTrianglesPerCluster < 1 || v.builder.maxTrianglesPerCluster > 512 || v.builder.minLodLevels < 1 ||
188 !std::isfinite(v.builder.lodTargetRatio) || v.builder.lodTargetRatio <= 0 || v.builder.lodTargetRatio >= 1)
192 if (!std::isfinite(v.previewFov) || v.previewFov < 1 || v.previewFov > 179 || v.previewHeight < 16 ||
193 v.previewHeight > 16384 || !std::isfinite(v.errorPixels) || v.errorPixels <= 0 || v.errorPixels > 100 ||
204 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.operation"),
210 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.source"),
219 const char* ifields[] = {"maxVertices", "maxTriangles", "levels", "mergeFactor", "height", "samples"};
224 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.integer"),
228 float* floats[] = {&v.builder.lodTargetRatio, &v.previewFov, &v.errorPixels, &v.nearDistance, &v.farDistance};
234 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.number"),
241 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.virtualgeometry.invalid"),
248std::unique_ptr<IDomainOperationTarget> VirtualGeometryDocumentTarget::cloneDomainState() const {
255 return eve::editing::failed<void>(EditorStatus::Conflict, RuleId("editor.virtualgeometry.candidate"),
267 return eve::editing::failed<void>(EditorStatus::Unsupported, RuleId("editor.virtualgeometry.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
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
const std::string & value() const noexcept
Returns the exact legacy or canonical compatibility spelling.
Definition Identity.h:362
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.
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
Revisioned VirtualGeometry importer preset.
Definition VirtualGeometryTarget.h:64
PropertyReadResult read(const SelectionSnapshot &selection, const PropertyPath &path) const override
Reads .
Definition VirtualGeometryTarget.cpp:87
Result< DomainOperation > makeSet(const SelectionSnapshot &selection, const PropertyPath &path, const EditorValue &value, PropertySetMode mode) const override
Make set.
Definition VirtualGeometryTarget.cpp:130
Result< void > loadSnapshot(const EditorValue &snapshot)
Loads snapshot.
Definition VirtualGeometryTarget.cpp:263
Result< void > commitDomainState(std::unique_ptr< IDomainOperationTarget > candidate) override
Commits domain state.
Definition VirtualGeometryTarget.cpp:251
eve::Result< eve::Revision > currentRevision(const SelectionSnapshot &selection) const override
Current revision.
Definition VirtualGeometryTarget.cpp:47
std::unique_ptr< IDomainOperationTarget > cloneDomainState() const override
Clones domain state.
Definition VirtualGeometryTarget.cpp:248
PropertySchema schema(const SelectionSnapshot &selection) const override
Schema.
Definition VirtualGeometryTarget.cpp:54
std::vector< EditorDiagnostic > validate() const
Validate builder invariants, CPU budgets and preview sweep.
Definition VirtualGeometryTarget.cpp:177
VirtualGeometryDocumentTarget(std::string id)
Virtual geometry document target.
Definition VirtualGeometryTarget.cpp:32
Result< DomainOperation > makeReset(const SelectionSnapshot &selection, const PropertyPath &path) const override
Make reset.
Definition VirtualGeometryTarget.cpp:169
Result< void > applyDomainOperation(const DomainOperation &operation) override
Applies domain operation.
Definition VirtualGeometryTarget.cpp:201
void * queryCapability(const CapabilityId &capability) override
Query an optional target capability.
Definition VirtualGeometryTarget.cpp:40
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
editing::PropertyType PropertyType
Definition VirtualGeometryTarget.h:39
editing::PropertyDescriptor PropertyDescriptor
Definition VirtualGeometryTarget.h:32
editing::Value EditorValue
Definition VirtualGeometryTarget.h:26
editing::TargetId TargetId
Definition VirtualGeometryTarget.h:44
editing::PropertyPath PropertyPath
Definition VirtualGeometryTarget.h:34
editing::CapabilityId CapabilityId
Definition VirtualGeometryTarget.h:19
@ InvalidArgument
@ PreconditionViolation
Definition Container.h:602
std::vector< std::string > affectedProperties
Definition EditingProtocol.h:52
PropertyDescriptorLookup find(const PropertyPath &path) const
Finds find.
Definition EditingProperty.cpp:9
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39
int maxTrianglesPerCluster
Definition Builder.h:36
int minLodLevels
Definition Builder.h:37
int maxVerticesPerCluster
Definition Builder.h:35
float lodTargetRatio
Definition Builder.h:39
int mergeFactor
Definition Builder.h:38
Authored virtual-geometry import and LOD-preview settings.
Definition VirtualGeometryTarget.h:48
int previewHeight
Definition VirtualGeometryTarget.h:52
float farDistance
Definition VirtualGeometryTarget.h:55
float previewFov
Definition VirtualGeometryTarget.h:51
virtualgeometry::VirtualGeometryBuilder::Options builder
Definition VirtualGeometryTarget.h:50
float errorPixels
Definition VirtualGeometryTarget.h:53
int distanceSamples
Definition VirtualGeometryTarget.h:56
std::string sourceAsset
Definition VirtualGeometryTarget.h:49
float nearDistance
Definition VirtualGeometryTarget.h:54