summaryrefslogtreecommitdiffstats
path: root/source/Generating/EndGen.h
diff options
context:
space:
mode:
authormadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2013-06-22 20:41:08 +0200
committermadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2013-06-22 20:41:08 +0200
commit9dd0486faf6f52eb40e47f003d4c02eefc28c8f9 (patch)
tree3ca4ff0762816fe69ff0f7baf22232c9d30cf8f6 /source/Generating/EndGen.h
parentMade redstone lamps turn on when powered and turn off when not powered. (diff)
downloadcuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.tar
cuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.tar.gz
cuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.tar.bz2
cuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.tar.lz
cuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.tar.xz
cuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.tar.zst
cuberite-9dd0486faf6f52eb40e47f003d4c02eefc28c8f9.zip
Diffstat (limited to 'source/Generating/EndGen.h')
-rw-r--r--source/Generating/EndGen.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/source/Generating/EndGen.h b/source/Generating/EndGen.h
new file mode 100644
index 000000000..cd316ed67
--- /dev/null
+++ b/source/Generating/EndGen.h
@@ -0,0 +1,69 @@
+
+// EndGen.h
+
+// Declares the cEndGen class representing the generator for the End, both as a HeightGen and CompositionGen
+
+
+
+
+
+#pragma once
+
+#include "ComposableGenerator.h"
+#include "../Noise.h"
+
+
+
+
+
+class cEndGen :
+ public cTerrainHeightGen,
+ public cTerrainCompositionGen
+{
+public:
+ cEndGen(int a_Seed);
+
+ void Initialize(cIniFile & a_IniFile);
+
+protected:
+
+ /// Seed for the noise
+ int m_Seed;
+
+ /// The Perlin noise used for generating
+ cPerlinNoise m_Perlin;
+
+ // XYZ size of the "island", in blocks:
+ int m_IslandSizeX;
+ int m_IslandSizeY;
+ int m_IslandSizeZ;
+
+ // XYZ Frequencies of the noise functions:
+ NOISE_DATATYPE m_FrequencyX;
+ NOISE_DATATYPE m_FrequencyY;
+ NOISE_DATATYPE m_FrequencyZ;
+
+ // Minimum and maximum chunk coords for chunks inside the island area. Chunks outside won't get calculated at all
+ int m_MinChunkX, m_MaxChunkX;
+ int m_MinChunkZ, m_MaxChunkZ;
+
+ // Noise array for the last chunk (in the noise range)
+ int m_LastChunkX;
+ int m_LastChunkZ;
+ NOISE_DATATYPE m_NoiseArray[17 * 17 * 257]; // x + 17 * z + 17 * 17 * y
+
+ /// Unless the LastChunk coords are equal to coords given, prepares the internal state (noise array)
+ void PrepareState(int a_ChunkX, int a_ChunkZ);
+
+ /// Generates the m_NoiseArray array for the current chunk
+ void GenerateNoiseArray(void);
+
+ /// Returns true if the chunk is outside of the island's dimensions
+ bool IsChunkOutsideRange(int a_ChunkX, int a_ChunkZ);
+
+ // cTerrainHeightGen overrides:
+ virtual void GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap) override;
+
+ // cTerrainCompositionGen overrides:
+ virtual void ComposeTerrain(cChunkDesc & a_ChunkDesc) override;
+} ;