载入中...
搜索中...
未找到
EditorSurfaceFluidPreview.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7
8#include <array>
9#include <cstdint>
10#include <vector>
11
12namespace eve::editor {
13
16 std::uint32_t triangle = 0;
17 std::array<double, 3> barycentric{1.0, 0.0, 0.0};
18 double volume = 1.0;
19 std::array<double, 3> velocity{0.0, 0.0, 0.0};
21 auto operator<=>(const SurfaceFluidPreviewSeed&) const = default;
22};
23
28 int width = 512;
29 int height = 512;
30 double seconds = 0.0;
31 double fixedStep = 1.0 / 60.0;
32 std::vector<std::array<double, 3>> positions;
33 std::vector<std::uint32_t> indices;
34 std::vector<std::array<double, 2>> uvs;
35 std::vector<SurfaceFluidPreviewSeed> seeds;
36 std::size_t maximumVertices = 1000000;
37 std::size_t maximumDroplets = 100000;
38 std::size_t maximumSteps = 1000000;
39};
40
43 std::uint64_t id = 0;
44 std::array<double, 3> position{};
45 std::array<double, 3> normal{};
46 std::array<double, 3> majorAxis{};
47 std::array<double, 3> minorAxis{};
48 double capHeight = 0.0;
49 double wetness = 0.0;
51 auto operator<=>(const SurfaceFluidPreviewDroplet&) const = default;
52};
53
56 EditorStatus status = EditorStatus::Failed;
58 double simulatedSeconds = 0.0;
59 std::vector<SurfaceFluidPreviewDroplet> droplets;
60 std::vector<double> vertexWetness;
61 std::vector<EditorDiagnostic> diagnostics;
62};
63
71
74public:
76 virtual ~ISurfaceFluidPreviewRenderer() = default;
78 virtual Result<void> draw(const SurfaceFluidPreviewSnapshot& snapshot) = 0;
79};
80
83public:
88 : previews_(previews), renderer_(renderer) {}
92
93private:
94 GraphicsOffscreenPreviewService* previews_ = nullptr;
95 ISurfaceFluidPreviewRenderer* renderer_ = nullptr;
96};
97
98} // namespace eve::editor
LogicalId target
#define EVENGINE_API_EDITORS
Definition Export.h:112
const GltfImportRequest & request
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
Narrow host boundary for drawing a validated fluid preview snapshot.
virtual Result< void > draw(const SurfaceFluidPreviewSnapshot &snapshot)=0
Draw droplets and wetness using the host's chosen 2D or 3D presentation.
virtual ~ISurfaceFluidPreviewRenderer()=default
Releases ISurfaceFluidPreviewRenderer resources.
Builds and rasterizes surface-fluid scrub frames through shared Canvas readback.
SurfaceFluidOffscreenPreviewService(GraphicsOffscreenPreviewService *previews, ISurfaceFluidPreviewRenderer *renderer)
Surface fluid offscreen preview service.
Rebuilds an isolated surface simulation for deterministic forward/backward scrub.
Reversible document for surface droplets, wet traces and material response.
Concrete Graphics/Canvas preview bridge with revision-safe artifact storage.
eve::editing::Revision Revision
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
Renderer-neutral world-space droplet cap produced by one scrub replay.
auto operator<=>(const SurfaceFluidPreviewDroplet &) const =default
Operator <=>.
Complete deterministic input needed to replay a surface-fluid scrub.
std::vector< std::array< double, 2 > > uvs
std::vector< std::array< double, 3 > > positions
std::vector< SurfaceFluidPreviewSeed > seeds
One stable droplet seed in material-space triangle coordinates.
auto operator<=>(const SurfaceFluidPreviewSeed &) const =default
Operator <=>.
Revision-bound result containing droplet geometry and per-vertex wetness.
std::vector< SurfaceFluidPreviewDroplet > droplets