载入中...
搜索中...
未找到
TerrainGenerationSession.h
浏览该文件的文档.
1#pragma once
2#include <memory>
3#include <string>
4#include "common/Result.h"
5
6namespace eve::procgen {
7class Heightmap;
8struct TerrainStampSettings;
9struct TerrainThermalSettings;
10struct TerrainWaterSettings;
11struct TerrainSedimentSettings;
12enum class TerrainWaterChannel;
13struct TerrainSmoothSettings;
14struct TerrainRidgeSettings;
15struct TerrainTerraceSettings;
16struct TerrainHeightMixSettings;
33public:
48 [[nodiscard]] Result<int> reset(const Heightmap& baseline);
55 [[nodiscard]] Result<int> stamp(const Heightmap& stamp, const TerrainStampSettings& settings,
56 const Heightmap& localMask, const Heightmap& globalMask);
59 [[nodiscard]] Result<int> contrast(const Heightmap& mask, float strength, float featureSize);
62 [[nodiscard]] Result<int> smooth(const Heightmap& mask, const TerrainSmoothSettings& settings);
65 [[nodiscard]] Result<int> ridges(const Heightmap& mask, const TerrainRidgeSettings& settings);
68 [[nodiscard]] Result<int> terrace(const Heightmap& mask, const TerrainTerraceSettings& settings);
71 [[nodiscard]] Result<int> power(const Heightmap& mask, float power);
74 [[nodiscard]] Result<int> heightCurve(const Heightmap& mask, const Heightmap& curve, float minimum, float maximum);
77 [[nodiscard]] Result<int> heightMix(const Heightmap& local, const Heightmap& global,
83 [[nodiscard]] Result<int> resetSimulation(float depth = 0);
86 [[nodiscard]] Result<int> thermal(const TerrainThermalSettings& settings);
90 [[nodiscard]] Result<int> hydraulic(const TerrainWaterSettings& water, const TerrainSedimentSettings& sediment,
94 [[nodiscard]] Result<int> copySediment(Heightmap& output) const;
97 [[nodiscard]] Result<int> exportWater(Heightmap& output, TerrainWaterChannel channel) const;
100 [[nodiscard]] Result<int> replay();
102 [[nodiscard]] Result<TerrainSessionRunStatus> beginReplay();
104 [[nodiscard]] Result<TerrainSessionRunStatus> stepReplay(int maxOperations);
106 [[nodiscard]] Result<TerrainSessionRunStatus> cancelReplay();
108 [[nodiscard]] TerrainSessionRunStatus getReplayStatus() const noexcept;
110 [[nodiscard]] int getReplayCompletedOperations() const noexcept;
113 [[nodiscard]] Result<int> undo();
116 [[nodiscard]] Result<int> redo();
119 [[nodiscard]] Result<int> setOperationEnabled(int index, bool enabled);
121 [[nodiscard]] Result<bool> operationEnabled(int index) const;
124 [[nodiscard]] Result<int> copyTerrain(Heightmap& output) const;
126 [[nodiscard]] Result<void> setAccess(TerrainSessionAccess access);
128 TerrainSessionAccess getAccess() const noexcept;
130 int getOperationCount() const noexcept;
132 int getAppliedCount() const noexcept;
134 [[nodiscard]] Result<std::string> snapshotJson() const;
136 [[nodiscard]] Result<void> restoreJson(const std::string& json);
137
138private:
139 struct Command;
140 struct Impl;
141 [[nodiscard]] Result<int> append(Command command);
142 std::unique_ptr<Impl> impl_;
143 [[nodiscard]] Result<int> moveCursor(int delta);
144};
145} // namespace eve::procgen
std::string output
int mask
float contrast
#define EVENGINE_API_DOMAINS
Definition Export.h:110
float maximum[3]
float minimum[3]
std::string local
Move-only, checked operation results for the common layer.
float power
Definition RockMesh.cpp:23
TerrainWaterField water
Heightmap curve
TerrainThermalSettings settings
Heightmap stamp
TerrainThermalSettings thermal
Heightmap global
Heightmap sediment
int iterations
Definition TreeMesh.cpp:311
uint32_t index
std::uint32_t depth
Move-only operation result carrying either a value or Status.
Definition Result.h:155
In-memory terrain heightmap: a dense float grid (row-major, index = y * width + x) materialized from ...
Definition Heightmap.h:21
Owned in-memory terrain operation session; records native stamps, scalar effects and erosion....
TerrainGenerationSession(TerrainGenerationSession &&) noexcept
Transfer state; moved-from session is empty and resettable.
TerrainGenerationSession()
Construct an empty editable session.
~TerrainGenerationSession()
Destroy owned terrain and command snapshots.
TerrainSessionRunStatus
Observable lifecycle of a caller-driven staged session replay.
TerrainSessionAccess
Edit policy for the owned operation history and terrain.
TerrainWaterChannel
Stored scalar channels; Pcg erosion masks read FluxRight or VelocityX, not vector magnitude.
bool enabled
Mix-height scalar controls; delta scale is maximum-minimum, independent of clipping bounds....
Ridge controls in caller height units, with explicit clipping bounds. Defaults match the Pcg packed s...
Effective sediment coefficients from Hydraulic.compute, after UI conversion. The source hardcodes har...
Two-pass smoothing controls; radius in texels, verticality in [-1,1], strength in [0,...
Value configuration for a rectangular stamp in world X/Z coordinates.
Terrace frequency in inverse height units, interior bevel in [0,1], strength in [0,...
Explicit simulation controls for the Pcg eight-neighbor thermal kernel. Height differences are multip...
Explicit constants for the source hydraulic water-flow equations, after UI unit conversion.