载入中...
搜索中...
未找到
TerrainWorldWorkspace.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4#include <memory>
5#include <string>
6
7#include "common/Result.h"
8
9namespace eve::procgen {
10class Heightmap;
11class PointSet;
12class TerrainDetailLayer;
13class TerrainBiomePreset;
14class TerrainSplatmap;
15class TerrainSpawnPlan;
16struct TerrainDetailSettings;
17struct TerrainObjectPlacementSettings;
18struct TerrainProbePlacementSettings;
19struct TerrainStampSettings;
20struct TerrainTreePlacementSettings;
21enum class TerrainDetailMode;
22enum class TerrainObjectOperationMode : std::uint8_t;
23enum class TerrainProbeOperationMode : std::uint8_t;
24enum class TerrainTreeOperationMode : std::uint8_t;
27
30 int tilesX = 1, tilesZ = 1;
31 float tileSize = 1024, tileHeight = 1000;
32 float centerX = 0, centerZ = 0;
35 int detailResolution = 1024;
36 int treeResolution = 1024;
37 int objectResolution = 1024;
40 bool worldMap = false;
41 std::string namePrefix = "Terrain";
42 std::string nameSuffix;
43};
44
47 bool details = true;
48 bool trees = true;
49 bool objects = true;
50 bool probes = true;
52 std::uint64_t sourceNamespace = 0;
53};
54
62public:
63 struct Impl;
73 TerrainWorldWorkspace& operator=(const TerrainWorldWorkspace&) = delete;
75 [[nodiscard]] Result<int> create(const TerrainWorldCreationSettings& settings);
77 [[nodiscard]] Result<int> stamp(const Heightmap& stamp, const TerrainStampSettings& settings,
78 const Heightmap& localMask, const Heightmap& globalMask);
80 [[nodiscard]] Result<int> paintSplat(const Heightmap& paint, int targetLayer,
83 [[nodiscard]] Result<int> applyDetail(const Heightmap& fitness, const TerrainDetailSettings& settings,
85 TerrainDetailMode mode, std::int32_t seed);
87 [[nodiscard]] Result<int> applyTrees(const Heightmap& fitness, const TerrainTreePlacementSettings& settings,
90 [[nodiscard]] Result<int> applyObjects(const Heightmap& fitness,
95 [[nodiscard]] Result<int> applyProbes(const Heightmap& fitness,
100 [[nodiscard]] Result<int> spawn(const TerrainSpawnPlan& plan);
102 [[nodiscard]] Result<int> spawnBiome(const TerrainBiomePreset& preset);
104 [[nodiscard]] Result<int> spawnStamper(const TerrainBiomePreset& preset);
106 [[nodiscard]] Result<TerrainWorldRunStatus> beginSpawn(const TerrainSpawnPlan& plan);
108 [[nodiscard]] Result<TerrainWorldRunStatus> beginSpawnBiome(const TerrainBiomePreset& preset);
110 [[nodiscard]] Result<TerrainWorldRunStatus> beginSpawnStamper(const TerrainBiomePreset& preset);
112 [[nodiscard]] Result<TerrainWorldRunStatus> stepSpawn(int maxRules);
114 [[nodiscard]] Result<TerrainWorldRunStatus> cancelSpawn();
116 [[nodiscard]] TerrainWorldRunStatus getSpawnStatus() const noexcept;
118 [[nodiscard]] int getSpawnCompletedRules() const noexcept;
120 [[nodiscard]] Result<int> flatten();
127 [[nodiscard]] Result<int> setHeightWorldUnits(float heightWorldUnits, float worldHeightSpan);
129 [[nodiscard]] Result<int> clearSpawns(const TerrainWorldClearSettings& settings);
131 [[nodiscard]] Result<int> copyHeightmap(int index, Heightmap& output) const;
133 [[nodiscard]] Result<int> copySplatmap(int index, TerrainSplatmap& output) const;
135 [[nodiscard]] Result<int> copyDetail(int index, TerrainDetailLayer& output) const;
137 [[nodiscard]] Result<int> copyTrees(int index, PointSet& output) const;
139 [[nodiscard]] Result<int> copyObjects(int index, PointSet& output) const;
141 [[nodiscard]] Result<int> copyProbes(int index, PointSet& output) const;
143 [[nodiscard]] Result<std::string> getTileName(int index) const;
145 [[nodiscard]] Result<double> getTileOriginX(int index) const;
147 [[nodiscard]] Result<double> getTileOriginZ(int index) const;
149 [[nodiscard]] Result<int> undo();
151 [[nodiscard]] Result<int> redo();
153 [[nodiscard]] int getTileCount() const noexcept;
155 [[nodiscard]] int getLastChangedSamples() const noexcept;
157 [[nodiscard]] int getLastAffectedTiles() const noexcept;
159 [[nodiscard]] int getOperationCount() const noexcept;
161 [[nodiscard]] int getAppliedCount() const noexcept;
162private:
163 std::unique_ptr<Impl> impl_;
164};
165} // namespace eve::procgen
ActionParameterOperation operation
std::string output
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t seed
Definition PointSet.cpp:807
Move-only, checked operation results for the common layer.
TerrainThermalSettings settings
Heightmap stamp
uint32_t index
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
Script-friendly collection of attributed 3D samples.
Definition PointSet.h:59
Own an ordered Pcg-style biome preset made from independent spawner plans. Entries and plans are copi...
Owned integer terrain-detail layer, independent of graphics and resource registries....
Own an ordered mixed-domain Pcg-style spawn recipe. Rule IDs are stable and unique....
Owning normalized terrain texture-layer weights with atomic mutation. Layers share one finite width/h...
Own a complete Pcg-style terrain grid and its height, splat, detail, tree, object and probe state....
TerrainWorldWorkspace(TerrainWorldWorkspace &&) noexcept
Terrain world workspace.
~TerrainWorldWorkspace()
Terrain world workspace.
TerrainProbeOperationMode
Mutation performed by a multi-terrain probe rule.
TerrainDetailMode
Native detail-density operation corresponding to Pcg SpawnMode.
TerrainWorldRunStatus
Observable lifecycle of a caller-driven staged world spawn.
TerrainObjectOperationMode
Mutation performed by a multi-terrain game-object operation.
TerrainTreeOperationMode
Pcg SetTerrainTrees operation branch. Add and Replace both append after upstream clearing policy.
Effective detail rule settings; density is rule density times global spawn density.
Deterministic Pcg SetTerrainGameObjects scan, collision and resource configuration.
Deterministic value settings for Pcg SetProbes terrain scanning.
Value configuration for a rectangular stamp in world X/Z coordinates.
Explicit deterministic tree placement configuration for one terrain rectangle and resource.
Select Pcg spawn domains to clear in one atomic world operation.
std::uint64_t sourceNamespace
Zero clears any source; non-zero clears only points emitted by that stable namespace.
Validated Pcg-style centered terrain-grid topology.