]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/server/biomes.h
0cf488105648575de4ff7f3aa1d820bbc4c0517a
[dragonblocks_alpha.git] / src / server / biomes.h
1 #ifndef _BIOMES_H_
2 #define _BIOMES_H_
3
4 #include <dragontype/number.h>
5 #include "map.h"
6 #include "perlin.h"
7
8 typedef enum
9 {
10         BIOME_MOUNTAIN,
11         BIOME_OCEAN,
12         BIOME_HILLS,
13         BIOME_COUNT,
14 } Biome;
15
16 typedef struct
17 {
18         f64 probability;
19         SeedOffset offset;
20         f64 threshold;
21         bool snow;
22         s32 (*height)(v2s32 pos, f64 factor, s32 height, void *row_data, void *block_data);
23         Node (*generate)(v3s32 pos, s32 diff, f64 humidity, f64 temperature, f64 factor, MapBlock *block, List *changed_blocks, void *row_data, void *block_data);
24         size_t block_data_size;
25         void (*preprocess_block)(MapBlock *block, List *changed_blocks, void *block_data);
26         size_t row_data_size;
27         void (*preprocess_row)(v2s32 pos, s32 height, f64 factor, void *row_data, void *block_data);
28 } BiomeDef;
29
30 extern BiomeDef biomes[BIOME_COUNT];
31
32 Biome get_biome(v2s32 pos, f64 *factor);
33
34 #endif