载入中...
搜索中...
未找到
TerrainDetailLayer.h
浏览该文件的文档.
1#pragma once
2#include <cstdint>
3#include <memory>
4#include <string>
5#include <vector>
6#include "common/Result.h"
7
8namespace eve::procgen {
9class Heightmap;
10class TerrainWorldWorkspace;
11struct TerrainDetailTile;
12struct TerrainMultiTileReport;
13struct TerrainStampSettings;
36public:
44 TerrainDetailLayer& operator=(TerrainDetailLayer&&) noexcept;
48 TerrainDetailLayer& operator=(const TerrainDetailLayer&);
51 [[nodiscard]] Result<int> reset(int width, int height, int count = 0);
60 [[nodiscard]] Result<int> apply(const Heightmap& fitness, const TerrainDetailSettings& settings, int32_t seed);
62 [[nodiscard]] Result<int> sample(int x, int z) const;
64 [[nodiscard]] Result<int> sampleResource(std::uint64_t namespaceId, int x, int z) const;
66 [[nodiscard]] Result<int> clearResource(std::uint64_t namespaceId);
68 int getWidth() const noexcept;
70 int getHeight() const noexcept;
71
72private:
75 friend EVENGINE_API_DOMAINS Result<TerrainMultiTileReport> applyTerrainDetailMultiTile(
76 const std::vector<TerrainDetailTile>&, const Heightmap&, const TerrainDetailSettings&,
77 const TerrainStampSettings&, std::int32_t, bool, const std::vector<std::string>&);
78 struct Impl;
79 std::unique_ptr<Impl> impl_;
80};
81} // namespace eve::procgen
float x
Definition AnimClip.cpp:738
float z
Definition AnimClip.cpp:738
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t height
std::uint32_t width
std::uint32_t seed
Definition PointSet.cpp:807
Move-only, checked operation results for the common layer.
std::uint32_t count
TerrainThermalSettings settings
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 integer terrain-detail layer, independent of graphics and resource registries....
TerrainDetailLayer()
Construct an empty layer.
~TerrainDetailLayer()
Release owned counts.
TerrainDetailLayer(TerrainDetailLayer &&) noexcept
Transfer ownership; moved-from layer is empty and resettable.
Owning script-safe multi-terrain detail transaction workspace. Input layers are copied on insertion....
Own a complete Pcg-style terrain grid and its height, splat, detail, tree, object and probe state....
TerrainDetailMode
Native detail-density operation corresponding to Pcg SpawnMode.
Effective detail rule settings; density is rule density times global spawn density.
std::uint64_t namespaceId
Stable resource namespace; zero addresses the compatibility/default layer.
Borrowed mutable detail layer participating in one synchronous world operation.
Completed multi-tile stamp statistics and Pcg-compatible affected-pixel mappings.
Value configuration for a rectangular stamp in world X/Z coordinates.