51 lines
1.2 KiB
YAML
51 lines
1.2 KiB
YAML
$schema: "res://addons/yaml/examples/data/fimbul.generator.schema.yaml"
|
|
params:
|
|
x: float
|
|
y: float
|
|
noiseScale: float
|
|
noise2D: Callable
|
|
|
|
functions:
|
|
- name: continentShape
|
|
params: ["x", "y"]
|
|
returns: float
|
|
code: abs(cos(x * PI * 2 + PI * 0.5) * sin(y * PI))
|
|
|
|
- name: heightNoise
|
|
params: ["x", "y", "noiseScale", "noise2D"]
|
|
returns: float
|
|
code: noise2D(x * noiseScale, y * noiseScale) * 0.5 + 0.5
|
|
|
|
- name: height
|
|
dependencies: ["continentShape", "heightNoise"]
|
|
returns: float
|
|
code: continentShape * heightNoise
|
|
|
|
- name: temperature
|
|
params: ["y"]
|
|
dependencies: ["height"]
|
|
returns: float
|
|
code: y - (height - 0.4) * 2 if height > 0.4 else y
|
|
|
|
- name: precipitation
|
|
params: ["y"]
|
|
dependencies: ["temperature"]
|
|
returns: float
|
|
code: 1 - temperature
|
|
|
|
- name: biome
|
|
returns: String
|
|
dependencies: ["height", "temperature", "precipitation"]
|
|
code: |
|
|
if height < 0.2023:
|
|
return 'ocean'
|
|
if temperature >= 0.666:
|
|
return 'desert'
|
|
if temperature > 0.42 && precipitation > 0.42:
|
|
return 'rainforest'
|
|
if temperature > 0.3 && precipitation > 0.3:
|
|
return 'forest'
|
|
if temperature <= 0.21:
|
|
return 'tundra'
|
|
return 'meadows'
|