]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/noise.h
fix server build
[dragonfireclient.git] / src / noise.h
index 6e4fedbc4d154f4be032ba61941f28adbc3dee34..ed75f316dca7d4fcca2ef48136f51951b49beacb 100644 (file)
@@ -20,6 +20,45 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef NOISE_HEADER
 #define NOISE_HEADER
 
+#include "debug.h"
+
+class PseudoRandom
+{
+public:
+       PseudoRandom(): m_next(0)
+       {
+       }
+       PseudoRandom(int seed): m_next(seed)
+       {
+       }
+       void seed(int seed)
+       {
+               m_next = seed;
+       }
+       // Returns 0...32767
+       int next()
+       {
+               m_next = m_next * 1103515245 + 12345;
+               return((unsigned)(m_next/65536) % 32768);
+       }
+       int range(int min, int max)
+       {
+               if(max-min > 32768/10)
+               {
+                       //dstream<<"WARNING: PseudoRandom::range: max > 32767"<<std::endl;
+                       assert(0);
+               }
+               if(min > max)
+               {
+                       assert(0);
+                       return max;
+               }
+               return (next()%(max-min+1))+min;
+       }
+private:
+       int m_next;
+};
+
 double easeCurve(double t);
  
 // Return value: -1 ... 1
@@ -43,10 +82,11 @@ double noise3d_perlin_abs(double x, double y, double z, int seed,
 
 enum NoiseType
 {
+       NOISE_CONSTANT_ONE,
        NOISE_PERLIN,
        NOISE_PERLIN_ABS,
        NOISE_PERLIN_CONTOUR,
-       NOISE_PERLIN_CONTOUR_FLIP_YZ
+       NOISE_PERLIN_CONTOUR_FLIP_YZ,
 };
 
 struct NoiseParams