载入中...
搜索中...
未找到
SurfaceFluidTarget.cpp
浏览该文件的文档.
10 return eve::editing::ruleDiagnostic(eve::DiagnosticCode::InvalidArgument, RuleId(rule), severity,
69 if (std::any_of(std::begin(finite), std::end(finite), [](double v) { return !std::isfinite(v); }))
76 s.diffusion < 0 || s.evaporation < 0 || s.maxWetness <= 0 || s.velocityStretch < 0 || s.maxAspectRatio < 1 ||
77 s.surfaceOffset < 0 || s.dryRoughness < 0 || s.dryRoughness > 1 || s.wetRoughness < 0 || s.wetRoughness > 1 ||
78 s.drySpecular < 0 || s.drySpecular > 1 || s.wetSpecular < 0 || s.wetSpecular > 1 || s.wetDarkening < 0 ||
103 return eve::editing::failed<SurfaceFluidSettings>(EditorStatus::Rejected, RuleId("editor.surface-fluid.fields"),
136 return eve::editing::failed<SurfaceFluidSettings>(EditorStatus::Rejected, RuleId("editor.surface-fluid.fields"),
142 EditorStatus::Rejected, RuleId("editor.surface-fluid.invalid"), "Surface fluid settings are invalid");
145PropertyDescriptor descriptor(const char* path, PropertyType type, EditorValue defaultValue, const char* category,
171 return c == CapabilityId("eve.editor.target.surface-fluid-properties") ? static_cast<IPropertyProvider*>(this)
177eve::Result<eve::Revision> SurfaceFluidTarget::currentRevision(const SelectionSnapshot& s) const {
189 descriptor("gravity", PropertyType::Vec3, EditorValue::Array{d.gravityX, d.gravityY, d.gravityZ}, "droplet"),
192 descriptor("adhesionAcceleration", PropertyType::Float, d.adhesionAcceleration, "droplet", 0, 100000, true),
193 descriptor("maxCrossings", PropertyType::Int, int64_t{d.maxCrossings}, "droplet", 1, 1024, true),
194 descriptor("contactAngleDegrees", PropertyType::Float, d.contactAngleDegrees, "droplet", 0.001, 179.999, true),
195 descriptor("mergeRadiusScale", PropertyType::Float, d.mergeRadiusScale, "droplet", 0.0001, 1000, true),
196 descriptor("trailDeposition", PropertyType::Float, d.trailDeposition, "droplet", 0, 1000, true),
198 descriptor("reattachDistance", PropertyType::Float, d.reattachDistance, "droplet", 0, 1000, true),
213PropertyReadResult SurfaceFluidTarget::read(const SelectionSnapshot& s, const PropertyPath& p) const {
218Result<DomainOperation> SurfaceFluidTarget::makeSet(const SelectionSnapshot& s, const PropertyPath& p,
223 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.surface-fluid.set"),
242Result<DomainOperation> SurfaceFluidTarget::makeReset(const SelectionSnapshot& s, const PropertyPath& p) const {
245 return eve::editing::failed<DomainOperation>(EditorStatus::Unsupported, RuleId("editor.surface-fluid.property"),
251 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.surface-fluid.operation"),
260std::vector<EditorDiagnostic> SurfaceFluidTarget::validate() const { return validateSettings(settings_); }
262 return EditorValue::Object{{"schemaVersion", int64_t{1}}, {"settings", settingsValue(settings_)}};
268 return eve::editing::failed<void>(EditorStatus::Unsupported, RuleId("editor.surface-fluid.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
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
PropertyReadResult read(const SelectionSnapshot &selection, const PropertyPath &path) const override
Reads .
Definition SurfaceFluidTarget.cpp:213
PropertySchema schema(const SelectionSnapshot &selection) const override
Schema.
Definition SurfaceFluidTarget.cpp:184
eve::Result< eve::Revision > currentRevision(const SelectionSnapshot &selection) const override
Current revision.
Definition SurfaceFluidTarget.cpp:177
Result< DomainOperation > makeSet(const SelectionSnapshot &selection, const PropertyPath &path, const EditorValue &value, PropertySetMode mode) const override
Make set.
Definition SurfaceFluidTarget.cpp:218
void * queryCapability(const CapabilityId &capability) override
Query an optional target capability.
Definition SurfaceFluidTarget.cpp:170
EditorValue snapshotValue() const
Capture schema-version-one settings.
Definition SurfaceFluidTarget.cpp:261
Result< void > applyDomainOperation(const DomainOperation &operation) override
Applies domain operation.
Definition SurfaceFluidTarget.cpp:249
Result< DomainOperation > makeReset(const SelectionSnapshot &selection, const PropertyPath &path) const override
Make reset.
Definition SurfaceFluidTarget.cpp:242
Result< void > loadSnapshot(const EditorValue &snapshot)
Atomically load and validate persisted settings.
Definition SurfaceFluidTarget.cpp:264
std::vector< EditorDiagnostic > validate() const
Validate numerical safety and material response relationships.
Definition SurfaceFluidTarget.cpp:260
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
Definition FluidRuntime.cpp:5
editing::PropertyDescriptor PropertyDescriptor
Definition FluidTarget.h:30
editing::DiagnosticSeverity DiagnosticSeverity
Definition FluidTarget.h:19
editing::Diagnostic EditorDiagnostic
Definition FluidTarget.h:22
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
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
Renderer-neutral droplet motion, wet-film and wet-material authoring values.
Definition SurfaceFluidTarget.h:49