载入中...
搜索中...
未找到
TerrainStreaming.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6
7#include <cstddef>
8#include <cstdint>
9#include <memory>
10#include <string>
11#include <unordered_map>
12#include <utility>
13#include <vector>
14
15namespace eve::procgen {
16
19 int loaded = 0;
20 int evicted = 0;
21 int pending = 0;
22 int failed = 0;
23 int resident = 0;
24};
25
28 float height = 0.f, flowAccumulation = 0.f, lakeDepth = 0.f;
29 float flowVectorX = 0.f, flowVectorY = 0.f;
30 float temperature = 0.f, moisture = 0.f;
32 bool river = false, lake = false;
34};
35
43
52public:
54 bool open(const uint8_t *data, size_t size, std::string *error = nullptr);
59 [[nodiscard]] Result<void> openSource(std::shared_ptr<const ITerrainArchiveSource> source);
60 void clear();
61
67 TerrainStreamStats streamAround(int worldX, int worldY, int radiusChunks,
68 int maxLoads = 0, std::string *error = nullptr);
69
71 const TerrainChunkData *getChunk(int chunkX, int chunkY) const;
73 bool sampleCell(int worldX, int worldY, TerrainSample &out) const;
75 bool sampleHeight(float worldX, float worldY, float &out) const;
80 bool getReceiver(int worldX, int worldY, int &receiverX, int &receiverY) const;
87 bool traceFlow(int worldX, int worldY, int maxSteps,
88 std::vector<std::pair<int, int>> &out) const;
95 bool buildWindow(int originX, int originY, int width, int height,
96 TerrainStreamingWindow &out) const;
97
99 int getResidentCount() const { return int(resident_.size()); }
101 const TerrainAsset &asset() const { return asset_; }
102
103private:
104 static uint64_t key(int chunkX, int chunkY);
105 TerrainAsset asset_;
106 std::unordered_map<uint64_t, TerrainChunkData> resident_;
107};
108
109} // namespace eve::procgen
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t key
std::uint32_t height
std::uint32_t width
std::string error
Definition Package.cpp:60
float size
Definition TreeMesh.cpp:156
const UnitySourceAsset & source
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
Versioned, random-access terrain archive.
Runtime decoded-chunk cache for an EVTR terrain asset.
int getResidentCount() const
Returns the resident count.
const TerrainAsset & asset() const
Asset.
Biome
Biome public API.
ClimateMap public API.
HydrologyMap public API.
Decoded terrain chunk containing all baked runtime layers.
TerrainSample public API.
TerrainStreamStats public API.
A rectangular, globally addressed terrain window assembled from resident chunks.