Owned integer terrain-detail layer, independent of graphics and resource registries. Each instance is an independent owning value; explicit copies deep-copy all counts for transaction snapshots. Caller serializes access on its owning thread. Every operation evaluates privately and publishes once; no callback, borrowed raster or mutable view survives a call. Each apply owns a named detail-thinning RNG stream initialized by its explicit signed seed. Replay uses same-build float arithmetic, X-major iteration and conditional source RNG draws. This layer covers one complete aligned terrain and owns independent density rasters keyed by stable resource namespace. Multi-terrain windows and renderer instancing remain in their existing domain owners. 更多...
#include <TerrainDetailLayer.h>
类 | |
| struct | Impl |
Public 成员函数 | |
| TerrainDetailLayer () | |
| Construct an empty layer. | |
| ~TerrainDetailLayer () | |
| Release owned counts. | |
| TerrainDetailLayer (TerrainDetailLayer &&) noexcept | |
| Transfer ownership; moved-from layer is empty and resettable. | |
| TerrainDetailLayer & | operator= (TerrainDetailLayer &&) noexcept |
| Transfer ownership, releasing previous counts. | |
| TerrainDetailLayer (const TerrainDetailLayer &) | |
| Create an independent deep value copy for transactional snapshots. | |
| TerrainDetailLayer & | operator= (const TerrainDetailLayer &) |
| Replace with an independent deep value copy. | |
| Result< int > | reset (int width, int height, int count=0) |
| Reset positive dimensions and uniform nonnegative count atomically. | |
| Result< int > | apply (const Heightmap &fitness, const TerrainDetailSettings &settings, int32_t seed) |
| Apply a finite aligned fitness map with source thinning and nearest-even integer rounding. | |
| Result< int > | sample (int x, int z) const |
| Read an integer value copy; empty state or invalid coordinates return InvalidArgument. | |
| Result< int > | sampleResource (std::uint64_t namespaceId, int x, int z) const |
| Read one resource layer without exposing mutable storage; an absent namespace reads as zero. | |
| Result< int > | clearResource (std::uint64_t namespaceId) |
| Remove one resource layer atomically and return its changed cell count. | |
| int | getWidth () const noexcept |
| Return width, zero when empty or moved-from. | |
| int | getHeight () const noexcept |
| Return height, zero when empty or moved-from. | |
友元 | |
| class | TerrainWorldWorkspace |
| class | TerrainMultiDetailWorkspace |
| EVENGINE_API_DOMAINS Result< TerrainMultiTileReport > | applyTerrainDetailMultiTile (const std::vector< TerrainDetailTile > &, const Heightmap &, const TerrainDetailSettings &, const TerrainStampSettings &, std::int32_t, bool, const std::vector< std::string > &) |
| Apply one shared Pcg detail-distribution raster to every selected tile atomically. | |
详细描述
Owned integer terrain-detail layer, independent of graphics and resource registries. Each instance is an independent owning value; explicit copies deep-copy all counts for transaction snapshots. Caller serializes access on its owning thread. Every operation evaluates privately and publishes once; no callback, borrowed raster or mutable view survives a call. Each apply owns a named detail-thinning RNG stream initialized by its explicit signed seed. Replay uses same-build float arithmetic, X-major iteration and conditional source RNG draws. This layer covers one complete aligned terrain and owns independent density rasters keyed by stable resource namespace. Multi-terrain windows and renderer instancing remain in their existing domain owners.
在文件 TerrainDetailLayer.h 第 35 行定义.
构造及析构函数说明
◆ TerrainDetailLayer() [1/3]
|
default |
Construct an empty layer.
◆ ~TerrainDetailLayer()
|
default |
Release owned counts.
◆ TerrainDetailLayer() [2/3]
|
defaultnoexcept |
Transfer ownership; moved-from layer is empty and resettable.
◆ TerrainDetailLayer() [3/3]
| eve::procgen::TerrainDetailLayer::TerrainDetailLayer | ( | const TerrainDetailLayer & | other | ) |
Create an independent deep value copy for transactional snapshots.
在文件 TerrainDetailLayer.cpp 第 76 行定义.
成员函数说明
◆ apply()
| Result< int > eve::procgen::TerrainDetailLayer::apply | ( | const Heightmap & | fitness, |
| const TerrainDetailSettings & | settings, | ||
| int32_t | seed | ||
| ) |
Apply a finite aligned fitness map with source thinning and nearest-even integer rounding.
- 参数
-
fitness Borrowed matching finite raster; scalar values may exceed [0,1]. settings Finite unit thresholds and nonnegative density below INT_MAX; mode must be known. seed Explicit detail-thinning stream seed; zero is normalized to one, negative uses uint32 bits.
- 返回
- Changed cell count or InvalidArgument; failure/allocation exception preserves every count. Replace clears the selected resource layer before generation. Add/Remove preserve rejected cells but clamp accepted cells to the target density, even if the previous count was already above that density.
在文件 TerrainDetailLayer.cpp 第 117 行定义.
引用了 eve::procgen::Heightmap::data(), eve::procgen::Heightmap::getHeight(), eve::procgen::Heightmap::getWidth(), index, eve::procgen::raster_detail::invalid(), random, eve::procgen::Remove, eve::procgen::Replace, resource, seed, settings, eve::Result< T >::success(), target, value, x , 以及 z.
◆ clearResource()
| Result< int > eve::procgen::TerrainDetailLayer::clearResource | ( | std::uint64_t | namespaceId | ) |
Remove one resource layer atomically and return its changed cell count.
在文件 TerrainDetailLayer.cpp 第 104 行定义.
引用了 count, found, eve::procgen::raster_detail::invalid() , 以及 eve::Result< T >::success().
◆ getHeight()
|
noexcept |
Return height, zero when empty or moved-from.
在文件 TerrainDetailLayer.cpp 第 83 行定义.
◆ getWidth()
|
noexcept |
Return width, zero when empty or moved-from.
在文件 TerrainDetailLayer.cpp 第 82 行定义.
◆ operator=() [1/2]
| TerrainDetailLayer & eve::procgen::TerrainDetailLayer::operator= | ( | const TerrainDetailLayer & | other | ) |
Replace with an independent deep value copy.
在文件 TerrainDetailLayer.cpp 第 78 行定义.
◆ operator=() [2/2]
|
defaultnoexcept |
Transfer ownership, releasing previous counts.
◆ reset()
| Result< int > eve::procgen::TerrainDetailLayer::reset | ( | int | width, |
| int | height, | ||
| int | count = 0 |
||
| ) |
Reset positive dimensions and uniform nonnegative count atomically.
- 返回
- Initialized cell count or InvalidArgument; dimension product must fit int.
在文件 TerrainDetailLayer.cpp 第 84 行定义.
引用了 count, height, eve::procgen::raster_detail::invalid(), eve::Result< T >::success() , 以及 width.
◆ sample()
| Result< int > eve::procgen::TerrainDetailLayer::sample | ( | int | x, |
| int | z | ||
| ) | const |
Read an integer value copy; empty state or invalid coordinates return InvalidArgument.
在文件 TerrainDetailLayer.cpp 第 94 行定义.
引用了 eve::procgen::raster_detail::invalid(), eve::Result< T >::success(), x , 以及 z.
◆ sampleResource()
| Result< int > eve::procgen::TerrainDetailLayer::sampleResource | ( | std::uint64_t | namespaceId, |
| int | x, | ||
| int | z | ||
| ) | const |
Read one resource layer without exposing mutable storage; an absent namespace reads as zero.
在文件 TerrainDetailLayer.cpp 第 98 行定义.
引用了 found, eve::procgen::raster_detail::invalid(), eve::Result< T >::success(), x , 以及 z.
友元及相关函数文档
◆ applyTerrainDetailMultiTile
|
friend |
Apply one shared Pcg detail-distribution raster to every selected tile atomically.
- 参数
-
tiles Borrowed distinct initialized detail owners with matching dimensions and aligned world geometry. operationFitness Borrowed finite raster matching the calculated shared operation rectangle. settings Pcg detail mode, thresholds and target density. operationSettings World-space operation rectangle used to derive per-tile mappings. seed Explicit signed seed for one XorshiftPlus stream shared across tiles in descriptor order. worldMapOperation Select ordinary or world-map tiles. validTerrainNames Optional exact allow-list.
- 返回
- Affected mappings and changed-cell total, or InvalidArgument; all layers publish together. @ownership Retains no pointer or raster. Caller exclusively owns every layer on one thread for the call.
◆ TerrainMultiDetailWorkspace
|
friend |
在文件 TerrainDetailLayer.h 第 74 行定义.
◆ TerrainWorldWorkspace
|
friend |
在文件 TerrainDetailLayer.h 第 73 行定义.
该类的文档由以下文件生成:
- src/modules/procgen/heightmap/TerrainDetailLayer.h
- src/modules/procgen/heightmap/TerrainDetailLayer.cpp