载入中...
搜索中...
未找到
FluidTarget.cpp
浏览该文件的文档.
9EditorDiagnostic fluidDiagnostic(const char* rule, DiagnosticSeverity severity, std::string message) {
10 return eve::editing::ruleDiagnostic(eve::DiagnosticCode::InvalidArgument, RuleId(rule), severity,
62 if (!max || !preview || !radius || !support || !density || !gravity || gravity->size() != 3 || !viscosity ||
65 EditorStatus::Rejected, RuleId("editor.fluid.invalid-settings"), "Fluid settings are incomplete");
74 const double values[]{*radius, *support, *density, *viscosity, *yield, *cohesion, *adhesion, *damping, *velocity};
75 if (std::any_of(std::begin(values), std::end(values), [](double component) { return !std::isfinite(component); }) ||
76 *max <= 0 || *max > 10000000 || *preview < 0 || *preview > *max || *radius <= 0.0 || *support <= 0.0 ||
77 *density <= 0.0 || *viscosity < 0.0 || *yield < 0.0 || *cohesion < 0.0 || *adhesion < 0.0 || *damping < 0.0 ||
83 {static_cast<int>(*max), static_cast<int>(*preview), *radius, *support, *density, gravityComponents[0],
84 gravityComponents[1], gravityComponents[2], *viscosity, *yield, *cohesion, *adhesion, *damping, *velocity,
88PropertyDescriptor descriptor(const char* path, PropertyType type, EditorValue value, double minimum = 0.0,
121 return capability == CapabilityId("eve.editor.target.fluid-properties") ? static_cast<IPropertyProvider*>(this)
127 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.fluid.operation-mismatch"),
140eve::Result<eve::Revision> FluidSimulationTarget::currentRevision(const SelectionSnapshot& selection) const {
154 descriptor("previewParticles", PropertyType::Int, int64_t{d.previewParticles}, 0, 10000000, true),
158 descriptor("gravity", PropertyType::Vec3, EditorValue::Array{d.gravityX, d.gravityY, d.gravityZ}),
170PropertyReadResult FluidSimulationTarget::read(const SelectionSnapshot& selection, const PropertyPath& path) const {
208 EditorStatus::Unsupported, RuleId("editor.fluid.property-not-found"), "Fluid property is unknown");
215 result.push_back(fluidDiagnostic("editor.fluid.support-radius-small", DiagnosticSeverity::Error,
231 particles * std::min(512.0, ratio * ratio * ratio * 2.0) * settings_.iterations * settings_.pbfIterations);
234 result.diagnostics.push_back(fluidDiagnostic("editor.fluid.memory-budget", DiagnosticSeverity::Error,
237 result.diagnostics.push_back(fluidDiagnostic("editor.fluid.compute-budget", DiagnosticSeverity::Error,
246 return EditorValue::Object{{"schemaVersion", int64_t{1}}, {"settings", settingsValue(settings_)}};
253 return eve::editing::failed<void>(EditorStatus::Unsupported, RuleId("editor.fluid.invalid-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
eve::OptionalRef< C > capability()
Query a capability through its interface-owned stable identity.
Definition EditableTarget.h:82
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
Result< void > applyDomainOperation(const DomainOperation &operation) override
Applies domain operation.
Definition FluidTarget.cpp:125
Result< DomainOperation > makeSet(const SelectionSnapshot &selection, const PropertyPath &path, const EditorValue &value, PropertySetMode mode) const override
Make set.
Definition FluidTarget.cpp:175
Result< DomainOperation > makeReset(const SelectionSnapshot &selection, const PropertyPath &path) const override
Make reset.
Definition FluidTarget.cpp:203
Result< void > loadSnapshot(const EditorValue &snapshot)
Atomically load schema-version-one settings.
Definition FluidTarget.cpp:248
eve::Result< eve::Revision > currentRevision(const SelectionSnapshot &selection) const override
Current revision.
Definition FluidTarget.cpp:140
FluidSimulationPreview previewBudget(std::uint64_t byteBudget=256ULL *1024ULL *1024ULL, std::uint64_t neighborBudget=100000000ULL) const
Estimate bounded memory and neighbor work for preview confirmation.
Definition FluidTarget.cpp:223
std::vector< EditorDiagnostic > validate() const
Validate solver ranges and cross-property kernel constraints.
Definition FluidTarget.cpp:212
PropertySchema schema(const SelectionSnapshot &selection) const override
Schema.
Definition FluidTarget.cpp:148
PropertyReadResult read(const SelectionSnapshot &selection, const PropertyPath &path) const override
Reads .
Definition FluidTarget.cpp:170
FluidSimulationSettings settings() const
Return an immutable settings copy.
Definition FluidTarget.h:103
void * queryCapability(const CapabilityId &capability) override
Query an optional target capability.
Definition FluidTarget.cpp:120
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< PropertyDescriptor > properties
Definition EditingProperty.h:120
PropertyDescriptorLookup find(const PropertyPath &path) const
Finds find.
Definition EditingProperty.cpp:9
std::vector< SelectionItem > items
Definition EditingSelection.h:22
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39
Cost estimate used before allocating or running a fluid preview.
Definition FluidTarget.h:65
Revision documentRevision
Definition FluidTarget.h:67
std::uint64_t estimatedBytes
Definition FluidTarget.h:68
std::uint64_t estimatedNeighborChecks
Definition FluidTarget.h:69
std::vector< EditorDiagnostic > diagnostics
Definition FluidTarget.h:70
Serializable parameters matching the CPU/GPU surface fluid solver.
Definition FluidTarget.h:47
double particleRadius
Definition FluidTarget.h:50
int previewParticles
Definition FluidTarget.h:49
int pbfIterations
Definition FluidTarget.h:61
double supportRadius
Definition FluidTarget.h:51