forked from minetest/minetest
-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Allow more than 255 biomes, document new maximum (minetest#9855)
Change biomemap data type from u8 to u16. New technical (not practical) maximum is 65535 biomes.
- Loading branch information
Showing
11 changed files
with
55 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2010-2018 celeron55, Perttu Ahola <[email protected]> | ||
Copyright (C) 2010-2018 kwolekr, Ryan Kwolek <[email protected]> | ||
Copyright (C) 2015-2018 paramat | ||
Copyright (C) 2010-2020 celeron55, Perttu Ahola <[email protected]> | ||
Copyright (C) 2015-2020 paramat | ||
Copyright (C) 2010-2016 kwolekr, Ryan Kwolek <[email protected]> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
|
@@ -69,7 +69,7 @@ CavesNoiseIntersection::~CavesNoiseIntersection() | |
|
||
|
||
void CavesNoiseIntersection::generateCaves(MMVManip *vm, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
assert(vm); | ||
assert(biomemap); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2010-2018 kwolekr, Ryan Kwolek <[email protected]> | ||
Copyright (C) 2015-2018 paramat | ||
Copyright (C) 2015-2020 paramat | ||
Copyright (C) 2010-2016 kwolekr, Ryan Kwolek <[email protected]> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
|
@@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc., | |
|
||
#define VMANIP_FLAG_CAVE VOXELFLAG_CHECKED1 | ||
|
||
typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include | ||
|
||
class GenerateNotifier; | ||
|
||
/* | ||
|
@@ -44,7 +46,7 @@ class CavesNoiseIntersection | |
NoiseParams *np_cave2, s32 seed, float cave_width); | ||
~CavesNoiseIntersection(); | ||
|
||
void generateCaves(MMVManip *vm, v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
void generateCaves(MMVManip *vm, v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
|
||
private: | ||
const NodeDefManager *m_ndef; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2010-2018 celeron55, Perttu Ahola <[email protected]> | ||
Copyright (C) 2013-2018 kwolekr, Ryan Kwolek <[email protected]> | ||
Copyright (C) 2015-2018 paramat | ||
Copyright (C) 2010-2020 celeron55, Perttu Ahola <[email protected]> | ||
Copyright (C) 2015-2020 paramat | ||
Copyright (C) 2013-2016 kwolekr, Ryan Kwolek <[email protected]> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
|
@@ -38,7 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc., | |
#define MG_DECORATIONS 0x20 | ||
#define MG_BIOMES 0x40 | ||
|
||
typedef u8 biome_t; // copy from mg_biome.h to avoid an unnecessary include | ||
typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include | ||
|
||
class Settings; | ||
class MMVManip; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2014-2018 kwolekr, Ryan Kwolek <[email protected]> | ||
Copyright (C) 2014-2018 paramat | ||
Copyright (C) 2014-2020 paramat | ||
Copyright (C) 2014-2016 kwolekr, Ryan Kwolek <[email protected]> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
|
@@ -32,7 +32,7 @@ class BiomeManager; | |
//// Biome | ||
//// | ||
|
||
typedef u8 biome_t; | ||
typedef u16 biome_t; | ||
|
||
#define BIOME_NONE ((biome_t)0) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2014-2018 kwolekr, Ryan Kwolek <[email protected]> | ||
Copyright (C) 2015-2018 paramat | ||
Copyright (C) 2015-2020 paramat | ||
Copyright (C) 2014-2016 kwolekr, Ryan Kwolek <[email protected]> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
|
@@ -146,7 +146,7 @@ ObjDef *OreScatter::clone() const | |
|
||
|
||
void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
PcgRandom pr(blockseed); | ||
MapNode n_ore(c_ore, 0, ore_param2); | ||
|
@@ -170,7 +170,7 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, | |
|
||
if (biomemap && !biomes.empty()) { | ||
u32 index = sizex * (z0 - nmin.Z) + (x0 - nmin.X); | ||
std::unordered_set<u8>::const_iterator it = biomes.find(biomemap[index]); | ||
auto it = biomes.find(biomemap[index]); | ||
if (it == biomes.end()) | ||
continue; | ||
} | ||
|
@@ -208,7 +208,7 @@ ObjDef *OreSheet::clone() const | |
|
||
|
||
void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
PcgRandom pr(blockseed + 4234); | ||
MapNode n_ore(c_ore, 0, ore_param2); | ||
|
@@ -237,7 +237,7 @@ void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, | |
continue; | ||
|
||
if (biomemap && !biomes.empty()) { | ||
std::unordered_set<u8>::const_iterator it = biomes.find(biomemap[index]); | ||
auto it = biomes.find(biomemap[index]); | ||
if (it == biomes.end()) | ||
continue; | ||
} | ||
|
@@ -285,7 +285,7 @@ ObjDef *OrePuff::clone() const | |
|
||
|
||
void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
PcgRandom pr(blockseed + 4234); | ||
MapNode n_ore(c_ore, 0, ore_param2); | ||
|
@@ -312,7 +312,7 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, | |
continue; | ||
|
||
if (biomemap && !biomes.empty()) { | ||
std::unordered_set<u8>::const_iterator it = biomes.find(biomemap[index]); | ||
auto it = biomes.find(biomemap[index]); | ||
if (it == biomes.end()) | ||
continue; | ||
} | ||
|
@@ -366,7 +366,7 @@ ObjDef *OreBlob::clone() const | |
|
||
|
||
void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
PcgRandom pr(blockseed + 2404); | ||
MapNode n_ore(c_ore, 0, ore_param2); | ||
|
@@ -388,7 +388,7 @@ void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, | |
|
||
if (biomemap && !biomes.empty()) { | ||
u32 bmapidx = sizex * (z0 - nmin.Z) + (x0 - nmin.X); | ||
std::unordered_set<u8>::const_iterator it = biomes.find(biomemap[bmapidx]); | ||
auto it = biomes.find(biomemap[bmapidx]); | ||
if (it == biomes.end()) | ||
continue; | ||
} | ||
|
@@ -451,7 +451,7 @@ ObjDef *OreVein::clone() const | |
|
||
|
||
void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
PcgRandom pr(blockseed + 520); | ||
MapNode n_ore(c_ore, 0, ore_param2); | ||
|
@@ -485,7 +485,7 @@ void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, | |
|
||
if (biomemap && !biomes.empty()) { | ||
u32 bmapidx = sizex * (z - nmin.Z) + (x - nmin.X); | ||
std::unordered_set<u8>::const_iterator it = biomes.find(biomemap[bmapidx]); | ||
auto it = biomes.find(biomemap[bmapidx]); | ||
if (it == biomes.end()) | ||
continue; | ||
} | ||
|
@@ -532,7 +532,7 @@ ObjDef *OreStratum::clone() const | |
|
||
|
||
void OreStratum::generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) | ||
{ | ||
PcgRandom pr(blockseed + 4234); | ||
MapNode n_ore(c_ore, 0, ore_param2); | ||
|
@@ -560,7 +560,7 @@ void OreStratum::generate(MMVManip *vm, int mapseed, u32 blockseed, | |
for (int z = nmin.Z; z <= nmax.Z; z++) | ||
for (int x = nmin.X; x <= nmax.X; x++, index++) { | ||
if (biomemap && !biomes.empty()) { | ||
std::unordered_set<u8>::const_iterator it = biomes.find(biomemap[index]); | ||
auto it = biomes.find(biomemap[index]); | ||
if (it == biomes.end()) | ||
continue; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2014-2018 kwolekr, Ryan Kwolek <[email protected]> | ||
Copyright (C) 2015-2018 paramat | ||
Copyright (C) 2015-2020 paramat | ||
Copyright (C) 2014-2016 kwolekr, Ryan Kwolek <[email protected]> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
|
@@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., | |
#include "noise.h" | ||
#include "nodedef.h" | ||
|
||
typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include | ||
|
||
class Noise; | ||
class Mapgen; | ||
class MMVManip; | ||
|
@@ -64,7 +66,7 @@ class Ore : public ObjDef, public NodeResolver { | |
float nthresh; // threshold for noise at which an ore is placed | ||
NoiseParams np; // noise for distribution of clusters (NULL for uniform scattering) | ||
Noise *noise = nullptr; | ||
std::unordered_set<u8> biomes; | ||
std::unordered_set<biome_t> biomes; | ||
|
||
Ore() = default;; | ||
virtual ~Ore(); | ||
|
@@ -73,7 +75,7 @@ class Ore : public ObjDef, public NodeResolver { | |
|
||
size_t placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); | ||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap) = 0; | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap) = 0; | ||
|
||
protected: | ||
void cloneTo(Ore *def) const; | ||
|
@@ -86,7 +88,7 @@ class OreScatter : public Ore { | |
ObjDef *clone() const; | ||
|
||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
}; | ||
|
||
class OreSheet : public Ore { | ||
|
@@ -100,7 +102,7 @@ class OreSheet : public Ore { | |
float column_midpoint_factor; | ||
|
||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
}; | ||
|
||
class OrePuff : public Ore { | ||
|
@@ -118,7 +120,7 @@ class OrePuff : public Ore { | |
virtual ~OrePuff(); | ||
|
||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
}; | ||
|
||
class OreBlob : public Ore { | ||
|
@@ -128,7 +130,7 @@ class OreBlob : public Ore { | |
ObjDef *clone() const; | ||
|
||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
}; | ||
|
||
class OreVein : public Ore { | ||
|
@@ -145,7 +147,7 @@ class OreVein : public Ore { | |
virtual ~OreVein(); | ||
|
||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
}; | ||
|
||
class OreStratum : public Ore { | ||
|
@@ -162,7 +164,7 @@ class OreStratum : public Ore { | |
virtual ~OreStratum(); | ||
|
||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, | ||
v3s16 nmin, v3s16 nmax, u8 *biomemap); | ||
v3s16 nmin, v3s16 nmax, biome_t *biomemap); | ||
}; | ||
|
||
class OreManager : public ObjDefManager { | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters