载入中...
搜索中...
未找到
SurfaceFluidTarget.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8
9#include <string>
10#include <vector>
11
12namespace eve::fluids {
13class SurfaceDropletSimulation;
14struct SurfaceFluidRenderParams;
15struct SurfaceWetnessParams;
16} // namespace eve::fluids
17
18namespace eve::fluids_editing {
19
22using DomainOperation = editing::DomainOperation;
23using EditRegion = editing::EditRegion;
25
26using editing::Result;
28using EditorValue = editing::Value;
29using IDomainOperationTarget = editing::IDomainOperationTarget;
30using IEditableTarget = editing::IEditableTarget;
31using IPropertyProvider = editing::IPropertyProvider;
32using PropertyDescriptor = editing::PropertyDescriptor;
34using PropertyPath = editing::PropertyPath;
35using PropertyReadResult = editing::PropertyReadResult;
37using PropertySchema = editing::PropertySchema;
42using SelectionSnapshot = editing::SelectionSnapshot;
43using TargetDescriptor = editing::TargetDescriptor;
45
47
50 double gravityX = 0.0, gravityY = -9.8, gravityZ = 0.0;
51 double friction = 1.5, maxSpeed = 12.0, adhesionAcceleration = 12.0;
52 int maxCrossings = 16;
54 double airDrag = 0.08, reattachDistance = 0.035;
55 double diffusion = 0.18, evaporation = 0.025, maxWetness = 1.0;
56 double velocityStretch = 0.30, maxAspectRatio = 2.6, surfaceOffset = 0.001;
57 double dryRoughness = 0.48, wetRoughness = 0.08;
58 double drySpecular = 0.35, wetSpecular = 0.92;
59 double wetDarkening = 0.12, normalStrength = 0.18;
60
62 auto operator<=>(const SurfaceFluidSettings&) const = default;
63};
64
67 public virtual IEditableTarget,
69 public IPropertyProvider {
70public:
72 explicit SurfaceFluidTarget(std::string id);
74 TargetId targetId() const override { return TargetId(id_); }
76 TargetDescriptor describe() const override;
79 void* queryCapability(const CapabilityId& capability) override;
81 Result<void> applyDomainOperation(const DomainOperation& operation) override;
83 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
85 PropertySchema schema(const SelectionSnapshot& selection) const override;
87 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
89 Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
90 const EditorValue& value, PropertySetMode mode) const override;
92 Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
93 const PropertyPath& path) const override;
95 SurfaceFluidSettings settings() const { return settings_; }
97 std::vector<EditorDiagnostic> validate() const;
99 EditorValue snapshotValue() const;
101 Result<void> loadSnapshot(const EditorValue& snapshot);
102
103private:
105 bool matches(const SelectionSnapshot& selection) const;
106 std::string id_;
107 SurfaceFluidSettings settings_;
108};
109
117
118} // namespace eve::fluids_editing
LogicalId target
ActionParameterOperation operation
double value
float wetness
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
std::string path
Definition PlayHost.cpp:110
Move-only operation result carrying either a value or Status.
Definition Result.h:155
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Dirty region and revision shared by every editable document target.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
UI-independent property access for an immutable selection snapshot.
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
CPU reference solver for droplets moving over static, rigid or deforming surfaces.
Optional bridge copying a validated document into live fluid components.
Reversible document for surface droplets, wet traces and material response.
SurfaceFluidSettings settings() const
Return immutable authored values.
TargetId targetId() const override
Target id.
eve::Severity DiagnosticSeverity
std::uint64_t Revision
StrongId< TargetIdTag > TargetId
Definition EditingIds.h:57
eve::Diagnostic Diagnostic
PropertyType
PropertyType public API.
StrongId< RuleIdTag > RuleId
Definition EditingIds.h:60
PropertySetMode
PropertySetMode public API.
PropertyFlag
PropertyFlag public API.
eve::StatusCode Status
StrongId< CapabilityIdTag > CapabilityId
Definition EditingIds.h:61
eve::Result< T > Result
Result< void > validatePropertyValue(const PropertyDescriptor &descriptor, const Value &value)
Validate property value.
PropertyReadState
PropertyReadState public API.
editing::TargetId TargetId
Definition FluidTarget.h:42
editing::PropertyDescriptor PropertyDescriptor
Definition FluidTarget.h:30
editing::PropertyPath PropertyPath
Definition FluidTarget.h:32
editing::EditRegion EditRegion
Definition FluidTarget.h:21
editing::DiagnosticSeverity DiagnosticSeverity
Definition FluidTarget.h:19
editing::PropertyType PropertyType
Definition FluidTarget.h:37
editing::Status EditorStatus
Definition FluidTarget.h:25
editing::PropertyReadResult PropertyReadResult
Definition FluidTarget.h:33
editing::Revision Revision
Definition FluidTarget.h:38
editing::Value EditorValue
Definition FluidTarget.h:26
editing::SelectionSnapshot SelectionSnapshot
Definition FluidTarget.h:40
editing::DomainOperation DomainOperation
Definition FluidTarget.h:20
editing::IPropertyProvider IPropertyProvider
Definition FluidTarget.h:29
editing::PropertySchema PropertySchema
Definition FluidTarget.h:35
editing::PropertyFlag PropertyFlag
Definition FluidTarget.h:31
editing::IEditableTarget IEditableTarget
Definition FluidTarget.h:28
editing::PropertySetMode PropertySetMode
Definition FluidTarget.h:36
editing::IDomainOperationTarget IDomainOperationTarget
Definition FluidTarget.h:27
editing::RuleId RuleId
Definition FluidTarget.h:39
editing::CapabilityId CapabilityId
Definition FluidTarget.h:18
editing::Diagnostic EditorDiagnostic
Definition FluidTarget.h:22
editing::PropertyReadState PropertyReadState
Definition FluidTarget.h:34
editing::TargetDescriptor TargetDescriptor
Definition FluidTarget.h:41
GLSL compute kernels for the GPU surface-flow solver.
Definition FluidTarget.h:12
DomainOperation public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.
Tuning for converting simulated droplets into render instances.
Parameters controlling persistent wet-film traces on a triangle surface.
Renderer-neutral droplet motion, wet-film and wet-material authoring values.
auto operator<=>(const SurfaceFluidSettings &) const =default
Operator <=>.