summaryrefslogtreecommitdiffstats
path: root/src/Noise/RidgedNoise.h
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-11-20 10:13:10 +0100
committerMattes D <github@xoft.cz>2014-11-20 10:13:10 +0100
commit288cbf12cb66ed9f026f81bb13e945c68cfefd13 (patch)
treefa97f48bbd8b871aa556c79974a2f64e76272ac0 /src/Noise/RidgedNoise.h
parentMobs: Fixed crash with terrain too high. (diff)
parentMerge pull request #1603 from mc-server/ImprovedNoise (diff)
downloadcuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar
cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.gz
cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.bz2
cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.lz
cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.xz
cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.zst
cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.zip
Diffstat (limited to 'src/Noise/RidgedNoise.h')
-rw-r--r--src/Noise/RidgedNoise.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/Noise/RidgedNoise.h b/src/Noise/RidgedNoise.h
new file mode 100644
index 000000000..69b480f60
--- /dev/null
+++ b/src/Noise/RidgedNoise.h
@@ -0,0 +1,91 @@
+
+// RidgedNoise.h
+
+// Implements the cRidgedNoise template class that generates ridged noise based on another noise provider.
+
+
+
+
+
+#pragma once
+
+
+
+
+
+template <typename N>
+class cRidgedNoise
+{
+public:
+ /** Creates a new instance with the seed set to 0. */
+ cRidgedNoise(void):
+ m_Noise(0)
+ {
+ }
+
+
+ /** Creates a new instance with the specified seed. */
+ cRidgedNoise(int a_Seed):
+ m_Noise(a_Seed)
+ {
+ }
+
+
+ /** Sets the seed for the underlying noise. */
+ void SetSeed(int a_Seed)
+ {
+ m_Noise.SetSeed(a_Seed);
+ }
+
+
+ /** Fills a 2D array with the values of the noise. */
+ void Generate2D(
+ NOISE_DATATYPE * a_Array, ///< Array to generate into [x + a_SizeX * y]
+ int a_SizeX, int a_SizeY, ///< Count of the array, in each direction
+ NOISE_DATATYPE a_StartX, NOISE_DATATYPE a_EndX, ///< Noise-space coords of the array in the X direction
+ NOISE_DATATYPE a_StartY, NOISE_DATATYPE a_EndY ///< Noise-space coords of the array in the Y direction
+ ) const
+ {
+ int ArrayCount = a_SizeX * a_SizeY;
+ m_Noise.Generate2D(
+ a_Array, a_SizeX, a_SizeY,
+ a_StartX, a_EndX,
+ a_StartY, a_EndY
+ );
+ for (int i = 0; i < ArrayCount; i++)
+ {
+ a_Array[i] = fabs(a_Array[i]);
+ }
+ }
+
+
+ /** Fills a 3D array with the values of the noise. */
+ void Generate3D(
+ NOISE_DATATYPE * a_Array, ///< Array to generate into [x + a_SizeX * y + a_SizeX * a_SizeY * z]
+ int a_SizeX, int a_SizeY, int a_SizeZ, ///< Count of the array, in each direction
+ NOISE_DATATYPE a_StartX, NOISE_DATATYPE a_EndX, ///< Noise-space coords of the array in the X direction
+ NOISE_DATATYPE a_StartY, NOISE_DATATYPE a_EndY, ///< Noise-space coords of the array in the Y direction
+ NOISE_DATATYPE a_StartZ, NOISE_DATATYPE a_EndZ ///< Noise-space coords of the array in the Z direction
+ ) const
+ {
+ int ArrayCount = a_SizeX * a_SizeY * a_SizeZ;
+ m_Noise.Generate2D(
+ a_Array, a_SizeX, a_SizeY, a_SizeZ,
+ a_StartX, a_EndX,
+ a_StartY, a_EndY,
+ a_StartZ, a_EndZ
+ );
+ for (int i = 0; i < ArrayCount; i++)
+ {
+ a_Array[i] = fabs(a_Array[i]);
+ }
+ }
+
+protected:
+ N m_Noise;
+} ;
+
+
+
+
+