1
0

Added the DistortedHeightmap height and composition generator.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1445 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com
2013-05-05 16:27:08 +00:00
parent 1e350218cc
commit 270560a198
8 changed files with 490 additions and 8 deletions

View File

@@ -18,6 +18,7 @@
#include "FinishGen.h"
#include "Caves.h"
#include "DistortedHeightmap.h"
#include "MineShafts.h"
#include "Noise3DGenerator.h"
#include "Ravines.h"
@@ -37,7 +38,9 @@ cComposableGenerator::cComposableGenerator(cChunkGenerator & a_ChunkGenerator) :
m_HeightGen(NULL),
m_CompositionGen(NULL),
m_Noise3DComposable(NULL),
m_NumNoise3DComposableUses(0)
m_NumNoise3DComposableUses(0),
m_DistortedHeightmap(NULL),
m_NumDistortedHeightmapUses(0)
{
}
@@ -60,7 +63,16 @@ cComposableGenerator::~cComposableGenerator()
m_StructureGens.clear();
// CompositionGen must not be freed if it is shared between HeightGenCache and CompositionGen:
if ((m_NumNoise3DComposableUses < 2) || (m_CompositionGen != m_Noise3DComposable))
int NumUsed = 1;
if (m_CompositionGen == m_Noise3DComposable)
{
NumUsed = m_NumNoise3DComposableUses;
}
else if (m_CompositionGen == m_DistortedHeightmap)
{
NumUsed = m_NumDistortedHeightmapUses;
}
if (NumUsed == 1)
{
delete m_CompositionGen;
}
@@ -241,6 +253,17 @@ void cComposableGenerator::InitHeightGen(cIniFile & a_IniFile)
float HeightAmp3 = (float)a_IniFile.GetValueSetF("Generator", "ClassicHeightAmp3", 0.5);
m_HeightGen = new cHeiGenClassic(Seed, HeightFreq1, HeightAmp1, HeightFreq2, HeightAmp2, HeightFreq3, HeightAmp3);
}
else if (NoCaseCompare(HeightGenName, "DistortedHeightmap") == 0)
{
if (m_DistortedHeightmap == NULL)
{
m_DistortedHeightmap = new cDistortedHeightmap(Seed, *m_BiomeGen);
m_DistortedHeightmap->Initialize(a_IniFile);
}
m_HeightGen = m_DistortedHeightmap;
m_NumDistortedHeightmapUses++;
// TODO: Optimize by sharing with CompoGen
}
else if (NoCaseCompare(HeightGenName, "Noise3D") == 0)
{
if (m_Noise3DComposable == NULL)
@@ -327,6 +350,16 @@ void cComposableGenerator::InitCompositionGen(cIniFile & a_IniFile)
BlockBeachBottom, BlockSea
);
}
else if (NoCaseCompare(CompoGenName, "DistortedHeightmap") == 0)
{
if (m_DistortedHeightmap == NULL)
{
m_DistortedHeightmap = new cDistortedHeightmap(m_ChunkGenerator.GetSeed(), *m_BiomeGen);
m_DistortedHeightmap->Initialize(a_IniFile);
}
m_CompositionGen = m_DistortedHeightmap;
m_NumDistortedHeightmapUses++;
}
else if (NoCaseCompare(CompoGenName, "nether") == 0)
{
m_CompositionGen = new cCompoGenNether(m_ChunkGenerator.GetSeed());