载入中...
搜索中...
未找到
BuiltinHeightmap.cpp
浏览该文件的文档.
2#include "procgen/Semantic.h"
4
5#include <string>
6
7namespace eve::procgen {
8namespace {
9
10bool genTerrainHeightmap(const Params &params, Grid2D &out, std::string &error) {
11 const int w = params.getWidth();
12 const int h = params.getHeight();
13 if (w < 1 || h < 1) {
14 error = "terrain.heightmap: width/height must be positive";
15 return false;
16 }
17 const TerrainSampler sampler = TerrainSampler::fromParams(params);
18 const TerrainBands bands = TerrainBands::fromParams(params);
19
20 const Heightmap hm = Heightmap::generate(sampler, w, h);
21 if (!hm.toGrid(out, bands)) {
22 error = "terrain.heightmap: failed to classify heightmap";
23 return false;
24 }
25
26 out.setMeta("algorithm", "terrain.heightmap");
27 out.setMeta("scale", std::to_string(sampler.getScale()));
28 out.setMeta("octaves", std::to_string(sampler.getOctaves()));
29 return true;
30}
31
32} // namespace
33
35 registry.registerAlgorithm("terrain.heightmap", genTerrainHeightmap);
36}
37
38} // namespace eve::procgen
int h
int w
std::string error
void registerAlgorithm(const std::string &id, GeneratorFn fn)
static Heightmap generate(const TerrainSampler &sampler, int width, int height)
Materialize a Heightmap by sampling sampler at every pixel center.
Definition Heightmap.cpp:69
static TerrainSampler fromParams(const Params &params)
void registerTerrainHeightmapAlgorithm(GeneratorRegistry &registry)
static TerrainBands fromParams(const Params &params)