载入中...
搜索中...
未找到
FluidRuntime.cpp
浏览该文件的文档.
2
4
6
8 fluids::FluidSimulation* simulation) const {
9 if (!simulation)
10 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.fluid.runtime-required"),
11 "Fluid parameter application requires a live simulation");
12 const auto diagnostics = target.validate();
13 for (const auto& diagnostic : diagnostics)
14 if (diagnostic.severity() == DiagnosticSeverity::Error)
15 return eve::editing::failed<void>(EditorStatus::Rejected, eve::editing::diagnosticRule(diagnostic),
16 diagnostic.message());
17 const FluidSimulationSettings settings = target.settings();
18 if (simulation->maxParticles() != settings.maxParticles)
19 return eve::editing::failed<void>(EditorStatus::Conflict, RuleId("editor.fluid.capacity-mismatch"),
20 "Fluid capacity is immutable; rebuild the preview simulation first");
21 auto& params = simulation->params();
22 params.particleRadius = static_cast<float>(settings.particleRadius);
23 params.supportRadius = static_cast<float>(settings.supportRadius);
24 params.restDensity = static_cast<float>(settings.restDensity);
25 params.gravity = {static_cast<float>(settings.gravityX), static_cast<float>(settings.gravityY),
26 static_cast<float>(settings.gravityZ)};
27 params.viscosity = static_cast<float>(settings.viscosity);
28 params.yieldStress = static_cast<float>(settings.yieldStress);
29 params.cohesion = static_cast<float>(settings.cohesion);
30 params.adhesion = static_cast<float>(settings.adhesion);
31 params.damping = static_cast<float>(settings.damping);
32 params.maxVelocity = static_cast<float>(settings.maximumVelocity);
33 params.iterations = settings.iterations;
34 params.pbfIterations = settings.pbfIterations;
35 return eve::editing::applied<void>();
36}
37
38} // namespace eve::fluids_editing
LogicalId target
TerrainThermalSettings settings
Move-only operation result carrying either a value or Status.
Definition Result.h:155
CPU reference surface-flow solver.
int maxParticles() const
Max particles.
FluidParams & params()
Params.
Result< void > apply(const FluidSimulationTarget &target, fluids::FluidSimulation *simulation) const
Apply validated mutable solver parameters; capacity remains runtime-owned.
Reversible property document for fluid simulation authoring.
Definition FluidTarget.h:77
std::vector< ParamSpec > params
RuleId diagnosticRule(const Diagnostic &diagnostic)
Return the projected editing rule, or an empty RuleId when absent.
editing::RuleId RuleId
Definition FluidTarget.h:39
float particleRadius
Resting particle radius in world units.
Definition FluidMath.h:28
Serializable parameters matching the CPU/GPU surface fluid solver.
Definition FluidTarget.h:47