Convert usages of PseudoRandom to PcgRandom for ore and deco placement

In addition to being a better random, this fixes #3228
This commit is contained in:
kwolekr 2015-11-08 23:40:18 -05:00
parent c3e179f256
commit f3ac2517ea
3 changed files with 13 additions and 13 deletions

View File

@ -87,7 +87,7 @@ void Decoration::resolveNodeNames()
size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
{ {
PseudoRandom ps(blockseed + 53); PcgRandom ps(blockseed + 53);
int carea_size = nmax.X - nmin.X + 1; int carea_size = nmax.X - nmin.X + 1;
// Divide area into parts // Divide area into parts
@ -170,7 +170,7 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
#if 0 #if 0
void Decoration::placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) void Decoration::placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
{ {
PseudoRandom pr(blockseed + 53); PcgRandom pr(blockseed + 53);
std::vector<CutoffData> handled_cutoffs; std::vector<CutoffData> handled_cutoffs;
// Copy over the cutoffs we're interested in so we don't needlessly hold a lock // Copy over the cutoffs we're interested in so we don't needlessly hold a lock
@ -286,7 +286,7 @@ bool DecoSimple::canPlaceDecoration(MMVManip *vm, v3s16 p)
} }
size_t DecoSimple::generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) size_t DecoSimple::generate(MMVManip *vm, PcgRandom *pr, v3s16 p)
{ {
if (!canPlaceDecoration(vm, p)) if (!canPlaceDecoration(vm, p))
return 0; return 0;
@ -327,7 +327,7 @@ DecoSchematic::DecoSchematic()
} }
size_t DecoSchematic::generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) size_t DecoSchematic::generate(MMVManip *vm, PcgRandom *pr, v3s16 p)
{ {
// Schematic could have been unloaded but not the decoration // Schematic could have been unloaded but not the decoration
// In this case generate() does nothing (but doesn't *fail*) // In this case generate() does nothing (but doesn't *fail*)

View File

@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class Mapgen; class Mapgen;
class MMVManip; class MMVManip;
class PseudoRandom; class PcgRandom;
class Schematic; class Schematic;
enum DecorationType { enum DecorationType {
@ -71,7 +71,7 @@ public:
size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
//size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); //size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) = 0; virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p) = 0;
virtual int getHeight() = 0; virtual int getHeight() = 0;
u32 flags; u32 flags;
@ -90,7 +90,7 @@ public:
class DecoSimple : public Decoration { class DecoSimple : public Decoration {
public: public:
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p); virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p);
bool canPlaceDecoration(MMVManip *vm, v3s16 p); bool canPlaceDecoration(MMVManip *vm, v3s16 p);
virtual int getHeight(); virtual int getHeight();
@ -107,7 +107,7 @@ class DecoSchematic : public Decoration {
public: public:
DecoSchematic(); DecoSchematic();
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p); virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p);
virtual int getHeight(); virtual int getHeight();
Rotation rotation; Rotation rotation;

View File

@ -126,7 +126,7 @@ size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed,
v3s16 nmin, v3s16 nmax, u8 *biomemap) v3s16 nmin, v3s16 nmax, u8 *biomemap)
{ {
PseudoRandom pr(blockseed); PcgRandom pr(blockseed);
MapNode n_ore(c_ore, 0, ore_param2); MapNode n_ore(c_ore, 0, ore_param2);
u32 sizex = (nmax.X - nmin.X + 1); u32 sizex = (nmax.X - nmin.X + 1);
@ -175,7 +175,7 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed,
void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed,
v3s16 nmin, v3s16 nmax, u8 *biomemap) v3s16 nmin, v3s16 nmax, u8 *biomemap)
{ {
PseudoRandom pr(blockseed + 4234); PcgRandom pr(blockseed + 4234);
MapNode n_ore(c_ore, 0, ore_param2); MapNode n_ore(c_ore, 0, ore_param2);
u16 max_height = column_height_max; u16 max_height = column_height_max;
@ -240,7 +240,7 @@ OrePuff::~OrePuff()
void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed,
v3s16 nmin, v3s16 nmax, u8 *biomemap) v3s16 nmin, v3s16 nmax, u8 *biomemap)
{ {
PseudoRandom pr(blockseed + 4234); PcgRandom pr(blockseed + 4234);
MapNode n_ore(c_ore, 0, ore_param2); MapNode n_ore(c_ore, 0, ore_param2);
int y_start = pr.range(nmin.Y, nmax.Y); int y_start = pr.range(nmin.Y, nmax.Y);
@ -313,7 +313,7 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed,
void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed,
v3s16 nmin, v3s16 nmax, u8 *biomemap) v3s16 nmin, v3s16 nmax, u8 *biomemap)
{ {
PseudoRandom pr(blockseed + 2404); PcgRandom pr(blockseed + 2404);
MapNode n_ore(c_ore, 0, ore_param2); MapNode n_ore(c_ore, 0, ore_param2);
u32 sizex = (nmax.X - nmin.X + 1); u32 sizex = (nmax.X - nmin.X + 1);
@ -391,7 +391,7 @@ OreVein::~OreVein()
void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed,
v3s16 nmin, v3s16 nmax, u8 *biomemap) v3s16 nmin, v3s16 nmax, u8 *biomemap)
{ {
PseudoRandom pr(blockseed + 520); PcgRandom pr(blockseed + 520);
MapNode n_ore(c_ore, 0, ore_param2); MapNode n_ore(c_ore, 0, ore_param2);
u32 sizex = (nmax.X - nmin.X + 1); u32 sizex = (nmax.X - nmin.X + 1);