Convert usages of PseudoRandom to PcgRandom for ore and deco placement
authorkwolekr <kwolekr@minetest.net>
Mon, 9 Nov 2015 04:40:18 +0000 (23:40 -0500)
committerkwolekr <kwolekr@minetest.net>
Mon, 9 Nov 2015 06:32:39 +0000 (01:32 -0500)
In addition to being a better random, this fixes #3228

src/mg_decoration.cpp
src/mg_decoration.h
src/mg_ore.cpp

index 846d6130b6fc1f9ecfb967e3d863004f4379adc5..1e50ba0de8fd2fb1c4b2f16245dd0af4bca49bc7 100644 (file)
@@ -87,7 +87,7 @@ void Decoration::resolveNodeNames()
 
 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;
 
        // Divide area into parts
@@ -170,7 +170,7 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
 #if 0
 void Decoration::placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
 {
-       PseudoRandom pr(blockseed + 53);
+       PcgRandom pr(blockseed + 53);
        std::vector<CutoffData> handled_cutoffs;
 
        // 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))
                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
        // In this case generate() does nothing (but doesn't *fail*)
index 16af02a1a478cd5ab840c8b0baa8d7c4b2cbbb80..ba3e9d3b258d8abf2cc880c5f5119cf5be8a0c16 100644 (file)
@@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 class Mapgen;
 class MMVManip;
-class PseudoRandom;
+class PcgRandom;
 class Schematic;
 
 enum DecorationType {
@@ -71,7 +71,7 @@ public:
        size_t placeDeco(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;
 
        u32 flags;
@@ -90,7 +90,7 @@ public:
 
 class DecoSimple : public Decoration {
 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);
        virtual int getHeight();
 
@@ -107,7 +107,7 @@ class DecoSchematic : public Decoration {
 public:
        DecoSchematic();
 
-       virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p);
+       virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p);
        virtual int getHeight();
 
        Rotation rotation;
index 16d97685a35c371f822297513aed79fc18fd9d30..6b6e0d7a783c4973943b96648776ee30598d16fb 100644 (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,
        v3s16 nmin, v3s16 nmax, u8 *biomemap)
 {
-       PseudoRandom pr(blockseed);
+       PcgRandom pr(blockseed);
        MapNode n_ore(c_ore, 0, ore_param2);
 
        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,
        v3s16 nmin, v3s16 nmax, u8 *biomemap)
 {
-       PseudoRandom pr(blockseed + 4234);
+       PcgRandom pr(blockseed + 4234);
        MapNode n_ore(c_ore, 0, ore_param2);
 
        u16 max_height = column_height_max;
@@ -240,7 +240,7 @@ OrePuff::~OrePuff()
 void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed,
        v3s16 nmin, v3s16 nmax, u8 *biomemap)
 {
-       PseudoRandom pr(blockseed + 4234);
+       PcgRandom pr(blockseed + 4234);
        MapNode n_ore(c_ore, 0, ore_param2);
 
        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,
        v3s16 nmin, v3s16 nmax, u8 *biomemap)
 {
-       PseudoRandom pr(blockseed + 2404);
+       PcgRandom pr(blockseed + 2404);
        MapNode n_ore(c_ore, 0, ore_param2);
 
        u32 sizex  = (nmax.X - nmin.X + 1);
@@ -391,7 +391,7 @@ OreVein::~OreVein()
 void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed,
        v3s16 nmin, v3s16 nmax, u8 *biomemap)
 {
-       PseudoRandom pr(blockseed + 520);
+       PcgRandom pr(blockseed + 520);
        MapNode n_ore(c_ore, 0, ore_param2);
 
        u32 sizex = (nmax.X - nmin.X + 1);