载入中...
搜索中...
未找到
VolumeFluidCodec.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4#include "common/Value.h"
10
11namespace eve::fluids {
13[[nodiscard]] EVENGINE_API_DOMAINS Value encodeFluidRendererSettings(const FluidRendererSettings& settings);
15[[nodiscard]] EVENGINE_API_DOMAINS Result<FluidRendererSettings> decodeFluidRendererSettings(const Value& value);
17[[nodiscard]] EVENGINE_API_DOMAINS Value
18encodeVolumeFluidEmitterBlueprint3D(const VolumeFluidEmitterBlueprint3D& blueprint);
20[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidEmitterBlueprint3D> decodeVolumeFluidEmitterBlueprint3D(
21 const Value& value);
23[[nodiscard]] EVENGINE_API_DOMAINS Value
24encodeVolumeGranularEmitterBlueprint3D(const VolumeGranularEmitterBlueprint3D& blueprint);
26[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeGranularEmitterBlueprint3D> decodeVolumeGranularEmitterBlueprint3D(
27 const Value& value);
30 const VolumeFluidEmitterBlueprintApplication3D& application);
32[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluidFoam(const VolumeFluidFoamSnapshot& snapshot);
34[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidFoamSnapshot> decodeVolumeFluidFoam(const Value& value);
36[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluidDiffuse(const VolumeFluidDiffuseSnapshot& snapshot);
38[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidDiffuseSnapshot> decodeVolumeFluidDiffuse(const Value& value);
40[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDiffuseParticle>> decodeVolumeFluidDiffuseParticles(
41 const Value& value);
43[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluid(const VolumeFluidSnapshot& snapshot);
45[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidSnapshot> decodeVolumeFluid(const Value& value);
47[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluidEmission(const VolumeFluidEmission& emission);
49[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidEmission> decodeVolumeFluidEmission(const Value& value);
51[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidParticle>> decodeVolumeFluidParticles(
52 const Value& value);
54[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluidEmitterState(const VolumeFluidEmitterSnapshot& state);
56[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidEmitterSnapshot> decodeVolumeFluidEmitterState(const Value& value);
58[[nodiscard]] EVENGINE_API_DOMAINS Value
59encodeVolumeFluidEmitterCheckpoint(const VolumeFluidEmitterCheckpoint& checkpoint);
61[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidEmitterCheckpoint> decodeVolumeFluidEmitterCheckpoint(
62 const Value& value);
64[[nodiscard]] Result<VolumeFluidNozzlePose> decodeVolumeFluidNozzlePose(const Value& value);
66[[nodiscard]] Result<std::vector<VolumeFluidCollider>> decodeVolumeFluidColliders(const Value& value);
68[[nodiscard]] Value encodeVolumeFluidCollider(const VolumeFluidCollider& collider);
70[[nodiscard]] Result<std::vector<VolumeFluidSdfCollider>> decodeVolumeFluidSdfColliders(const Value& value);
72[[nodiscard]] Value encodeVolumeFluidSdfCollider(const VolumeFluidSdfCollider& collider);
74[[nodiscard]] Result<std::vector<VolumeFluidHeightFieldCollider>> decodeVolumeFluidHeightFieldColliders(
75 const Value& value);
77[[nodiscard]] Value encodeVolumeFluidHeightFieldCollider(const VolumeFluidHeightFieldCollider& collider);
79[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidSdfPose>> decodeVolumeFluidSdfPoses(
80 const Value& value);
82[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluidSdfPose(const VolumeFluidSdfPose& pose);
84[[nodiscard]] Value encodeVolumeFluidContacts(const std::vector<VolumeFluidContact>& contacts);
86[[nodiscard]] Value encodeVolumeFluidContactEvents(const std::vector<VolumeFluidContactEvent>& events);
88[[nodiscard]] Value encodeVolumeFluidParticles(const std::vector<VolumeFluidParticle>& particles);
90[[nodiscard]] Value encodeVolumeFluidParticleEvents(const VolumeFluidParticleEventBatch& batch);
92[[nodiscard]] Result<VolumeFluidMaterial> decodeVolumeFluidMaterial(const Value& value);
94[[nodiscard]] Result<std::vector<VolumeFluidThermalRule>> decodeVolumeFluidThermalRules(const Value& value);
96[[nodiscard]] Value encodeVolumeFluidThermalRule(const VolumeFluidThermalRule& rule);
98[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidViscosityColorKey>> decodeVolumeFluidViscosityColors(
99 const Value& value);
101[[nodiscard]] Result<std::vector<VolumeFluidColorKey>> decodeVolumeFluidColorGradient(const Value& value);
103[[nodiscard]] Result<std::vector<glm::vec3>> decodeVolumeFluidFieldPositions(const Value& value);
105[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidWindZone>> decodeVolumeFluidWindZones(
106 const Value& value);
108[[nodiscard]] EVENGINE_API_DOMAINS Value encodeVolumeFluidWindZone(const VolumeFluidWindZone& zone);
110[[nodiscard]] Value encodeVolumeFluidFieldSamples(const std::vector<VolumeFluidFieldSample>& samples);
112[[nodiscard]] Value encodeVolumeFluidRayHits(const std::vector<VolumeFluidRayHit>& hits);
114[[nodiscard]] Value encodeVolumeFluidDistanceHits(const std::vector<VolumeFluidDistanceHit>& hits);
116[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidQueryShape>> decodeVolumeFluidQueries(
117 const Value& value);
119[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<glm::vec4>> decodeVolumeFluidColors(const Value& value);
121[[nodiscard]] Value encodeVolumeFluidQueryHits(const std::vector<VolumeFluidQueryHit>& hits);
123[[nodiscard]] Result<std::vector<VolumeFluidSimplex>> decodeVolumeFluidSimplexes(const Value& value);
125[[nodiscard]] Result<std::vector<VolumeFluidStitch>> decodeVolumeFluidStitches(const Value& value);
127[[nodiscard]] Value encodeVolumeFluidSimplexHits(const std::vector<VolumeFluidSimplexHit>& hits);
128} // namespace eve::fluids
double value
eve::EntitySpatialPose pose
#define EVENGINE_API_DOMAINS
Definition Export.h:110
Battle::Events events
TerrainThermalSettings settings
Owning, renderer-independent dynamic values.
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
GLSL compute kernels for the GPU surface-flow solver.
Definition FluidTarget.h:12
Value encodeVolumeFluid(const VolumeFluidSnapshot &snapshot)
Canonical schema-17 value projection, shared by JSON, scripts and authoring.
Result< std::vector< VolumeFluidViscosityColorKey > > decodeVolumeFluidViscosityColors(const Value &value)
Strict owning decode of at most 32 transient viscosity color keys; application validates domains.
Result< VolumeGranularEmitterBlueprint3D > decodeVolumeGranularEmitterBlueprint3D(const Value &value)
Strictly decodes one owning Fluid3D granular-emitter blueprint value.
Result< FluidRendererSettings > decodeFluidRendererSettings(const Value &value)
Strictly decodes one complete owning Fluid3D-renderer settings value.
Value encodeVolumeFluidEmitterBlueprint3D(const VolumeFluidEmitterBlueprint3D &blueprint)
Projects default or caller-prepared Fluid3D-emitter blueprint values.
Result< std::vector< VolumeFluidQueryShape > > decodeVolumeFluidQueries(const Value &value)
Strict owning decode of at most 256 transient mixed query descriptions.
Value encodeVolumeFluidContacts(const std::vector< VolumeFluidContact > &contacts)
Projects last-step contacts, including world-space point and opposite impulse.
Result< VolumeFluidMaterial > decodeVolumeFluidMaterial(const Value &value)
Strict transient material decode; paint validates numeric domains before mutation.
Value encodeVolumeFluidFieldSamples(const std::vector< VolumeFluidFieldSample > &samples)
Projects owning field samples, preserving query order.
Result< std::vector< VolumeFluidSdfPose > > decodeVolumeFluidSdfPoses(const Value &value)
Strict transient decode of at most 16 SDF transform-only updates.
Value encodeVolumeFluidWindZone(const VolumeFluidWindZone &zone)
Projects one complete wind-zone description for script construction.
Value encodeVolumeFluidSimplexHits(const std::vector< VolumeFluidSimplexHit > &hits)
Projects owning Fluid3D-compatible simplex query results.
Result< VolumeFluidNozzlePose > decodeVolumeFluidNozzlePose(const Value &value)
Strict transient pose-argument decode; advanceMoving validates the unit quaternion.
Result< std::vector< VolumeFluidSimplex > > decodeVolumeFluidSimplexes(const Value &value)
Strict owning decode of at most 65536 point, edge or triangle topology entries.
Result< std::vector< VolumeFluidWindZone > > decodeVolumeFluidWindZones(const Value &value)
Strict owning decode of at most 64 transient Fluid3D-style wind zones.
Value encodeVolumeFluidCollider(const VolumeFluidCollider &collider)
Projects an owning collider description for script construction.
Value encodeVolumeFluidContactEvents(const std::vector< VolumeFluidContactEvent > &events)
Projects owning Enter/Stay/Exit contact lifecycle events.
Value encodeVolumeFluidHeightFieldCollider(const VolumeFluidHeightFieldCollider &collider)
Projects one complete owning regular height field.
Value encodeVolumeFluidSdfCollider(const VolumeFluidSdfCollider &collider)
Projects one complete owning SDF collider.
Result< std::vector< glm::vec4 > > decodeVolumeFluidColors(const Value &value)
Strict owning decode of at most 256 transient linear RGBA colors.
Result< std::vector< VolumeFluidStitch > > decodeVolumeFluidStitches(const Value &value)
Strict owning decode of at most 65536 Fluid3DStitcher particle pairs.
Result< VolumeFluidEmitterSnapshot > decodeVolumeFluidEmitterState(const Value &value)
Strict version-1 controller-state decode; unsupported fields, kinds and phase values fail.
Value encodeVolumeFluidParticles(const std::vector< VolumeFluidParticle > &particles)
Projects an owning particle batch without copying the live solver.
Value encodeVolumeFluidDiffuse(const VolumeFluidDiffuseSnapshot &snapshot)
Projects the owning version-1 secondary particle pool state.
Result< std::vector< VolumeFluidHeightFieldCollider > > decodeVolumeFluidHeightFieldColliders(const Value &value)
Strict owning decode of at most 16 regular sampled height fields.
Value encodeVolumeFluidSdfPose(const VolumeFluidSdfPose &pose)
Projects one transform-only SDF update for script construction.
Result< std::vector< VolumeFluidDiffuseParticle > > decodeVolumeFluidDiffuseParticles(const Value &value)
Strict transient batch decode of at most 65536 particles; emit validates domains.
Value encodeFluidRendererSettings(const FluidRendererSettings &settings)
Projects one complete Fluid3D-renderer settings value.
Value encodeVolumeFluidQueryHits(const std::vector< VolumeFluidQueryHit > &hits)
Projects owning mixed-query hits with their source query indices.
Result< std::vector< glm::vec3 > > decodeVolumeFluidFieldPositions(const Value &value)
Strict owning decode of up to 65536 transient world-space field query positions.
Result< VolumeFluidFoamSnapshot > decodeVolumeFluidFoam(const Value &value)
Strict decode with atomic-controller validation; rejects unknown fields and versions.
EVENGINE_API_DOMAINS Result< VolumeFluidSnapshot > decodeVolumeFluid(const Value &value)
Strict owning decode; unknown/missing fields, unsupported versions and invalid state are rejected.
Value encodeVolumeFluidThermalRule(const VolumeFluidThermalRule &rule)
Owning default-rule projection for script construction.
Result< std::vector< VolumeFluidColorKey > > decodeVolumeFluidColorGradient(const Value &value)
Strict owning decode of a 2..32-key normalized linear RGBA gradient.
Result< VolumeFluidDiffuseSnapshot > decodeVolumeFluidDiffuse(const Value &value)
Strict bounded decode; validates the entire pool before returning owning state.
Result< VolumeFluidEmission > decodeVolumeFluidEmission(const Value &value)
Strict structural decode; nozzle/material domain validation occurs atomically at emission.
Result< std::vector< VolumeFluidSdfCollider > > decodeVolumeFluidSdfColliders(const Value &value)
Strict owning decode of at most 16 sampled SDF colliders.
Value encodeVolumeFluidEmitterBlueprintApplication3D(const VolumeFluidEmitterBlueprintApplication3D &application)
Projects the complete native solver/emission setup produced from a blueprint.
Result< std::vector< VolumeFluidThermalRule > > decodeVolumeFluidThermalRules(const Value &value)
Strict owning decode of at most 1024 transient thermal rules; step validates domains.
Result< std::vector< VolumeFluidParticle > > decodeVolumeFluidParticles(const Value &value)
Decodes an owning emission batch without serializing the live solver; admission validates domains.
Value encodeVolumeFluidParticleEvents(const VolumeFluidParticleEventBatch &batch)
Projects one owning bounded particle lifecycle-event drain.
Value encodeVolumeFluidEmission(const VolumeFluidEmission &emission)
Encodes a version-9 emission description including precomputed points and particle state.
Value encodeVolumeFluidFoam(const VolumeFluidFoamSnapshot &snapshot)
Projects owning schema-1 foam settings, credit text and RNG state.
Value encodeVolumeFluidDistanceHits(const std::vector< VolumeFluidDistanceHit > &hits)
Projects owning signed-distance hits including captured particle values.
Value encodeVolumeFluidEmitterState(const VolumeFluidEmitterSnapshot &state)
Encodes controller state without converting phase text to VM floating point.
Result< std::vector< VolumeFluidCollider > > decodeVolumeFluidColliders(const Value &value)
Strict transient collider batch decode; setColliders validates geometry atomically.
Value encodeVolumeFluidRayHits(const std::vector< VolumeFluidRayHit > &hits)
Projects owning ray hits including captured particle values.
Value encodeVolumeFluidEmitterCheckpoint(const VolumeFluidEmitterCheckpoint &checkpoint)
Encodes one version-1 solver/emission/controller checkpoint.
Result< VolumeFluidEmitterCheckpoint > decodeVolumeFluidEmitterCheckpoint(const Value &value)
Strictly decodes and validates all owning checkpoint members without publishing state.
Value encodeVolumeGranularEmitterBlueprint3D(const VolumeGranularEmitterBlueprint3D &blueprint)
Projects default or caller-prepared Fluid3D granular-emitter blueprint values.
Result< VolumeFluidEmitterBlueprint3D > decodeVolumeFluidEmitterBlueprint3D(const Value &value)
Strictly decodes one owning Fluid3D-emitter blueprint value.