Added new biomes to old height generators.
Now Biomal and DistortedHeight generators will work with new biomes.
This commit is contained in:
parent
41175b5549
commit
95ab73e4ed
@ -21,7 +21,7 @@ Usually you'd want to keep both numbers the same.
|
|||||||
The numbers are "relative", not absolute maximum; overhangs of a slightly larger size are possible
|
The numbers are "relative", not absolute maximum; overhangs of a slightly larger size are possible
|
||||||
due to the way that noise is calculated.
|
due to the way that noise is calculated.
|
||||||
*/
|
*/
|
||||||
const cDistortedHeightmap::sGenParam cDistortedHeightmap::m_GenParam[biNumBiomes] =
|
const cDistortedHeightmap::sGenParam cDistortedHeightmap::m_GenParam[256] =
|
||||||
{
|
{
|
||||||
/* Biome | AmpX | AmpZ */
|
/* Biome | AmpX | AmpZ */
|
||||||
/* biOcean */ { 1.5f, 1.5f},
|
/* biOcean */ { 1.5f, 1.5f},
|
||||||
@ -46,8 +46,70 @@ const cDistortedHeightmap::sGenParam cDistortedHeightmap::m_GenParam[biNumBiomes
|
|||||||
/* biForestHills */ { 6.0f, 6.0f},
|
/* biForestHills */ { 6.0f, 6.0f},
|
||||||
/* biTaigaHills */ { 8.0f, 8.0f},
|
/* biTaigaHills */ { 8.0f, 8.0f},
|
||||||
/* biExtremeHillsEdge */ { 7.0f, 7.0f},
|
/* biExtremeHillsEdge */ { 7.0f, 7.0f},
|
||||||
/* biJungle */ { 0.0f, 0.0f},
|
/* biJungle */ { 4.0f, 4.0f},
|
||||||
/* biJungleHills */ { 8.0f, 8.0f},
|
/* biJungleHills */ { 8.0f, 8.0f},
|
||||||
|
/* biJungleEdge */ { 3.0f, 3.0f}, // 23
|
||||||
|
/* biDeepOcean */ { 1.0f, 1.0f}, // 24
|
||||||
|
/* biStoneBeach */ { 1.0f, 1.0f}, // 25
|
||||||
|
/* biColdBeach */ { 1.0f, 1.0f}, // 26
|
||||||
|
/* biBirchForest */ { 3.0f, 3.0f}, // 27
|
||||||
|
/* biBirchForestHills */ { 6.0f, 6.0f}, // 28
|
||||||
|
/* biRoofedForest */ { 3.0f, 3.0f}, // 29
|
||||||
|
/* biColdTaiga */ { 0.5f, 0.5f}, // 30
|
||||||
|
/* biColdTaigaHills */ { 4.0f, 4.0f}, // 31
|
||||||
|
/* biMegaTaiga */ { 1.0f, 1.0f}, // 32
|
||||||
|
/* biMegaTaigaHills */ { 4.0f, 4.0f}, // 33
|
||||||
|
/* biExtremeHillsPlus */ {32.0f, 32.0f}, // 34 - anyone say extreme plus? Make it extreme plus, then :)
|
||||||
|
/* biSavanna */ { 2.0f, 2.0f}, // 35
|
||||||
|
/* biSavannaPlateau */ { 3.0f, 3.0f}, // 36
|
||||||
|
/* biMesa */ { 3.0f, 3.0f}, // 37
|
||||||
|
/* biMesaPlateauF */ { 3.0f, 3.0f}, // 38
|
||||||
|
/* biMesaPlateau */ { 3.0f, 3.0f}, // 39
|
||||||
|
|
||||||
|
// biomes 40 .. 128 are unused, 89 empty placeholders here:
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 40 .. 49
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 50 .. 59
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 60 .. 69
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 70 .. 79
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 80 .. 89
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 90 .. 99
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 100 .. 109
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 110 .. 119
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, // 120 .. 128
|
||||||
|
|
||||||
|
// Release 1.7 /* biome variants:
|
||||||
|
/* biSunflowerPlains */ { 1.0f, 1.0f}, // 129
|
||||||
|
/* biDesertM */ { 1.0f, 1.0f}, // 130
|
||||||
|
/* biExtremeHillsM */ {16.0f, 16.0f}, // 131
|
||||||
|
/* biFlowerForest */ { 4.0f, 4.0f}, // 132
|
||||||
|
/* biTaigaM */ { 3.0f, 3.0f}, // 133
|
||||||
|
/* biSwamplandM */ { 0.0f, 0.0f}, // 134
|
||||||
|
|
||||||
|
// Biomes 135 .. 139 unused, 5 empty placeholders here:
|
||||||
|
{}, {}, {}, {}, {}, // 135 .. 139
|
||||||
|
|
||||||
|
/* biIcePlainsSpikes */ { 1.0f, 1.0f}, // 140
|
||||||
|
|
||||||
|
// Biomes 141 .. 148 unused, 8 empty placeholders here:
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, // 141 .. 148
|
||||||
|
|
||||||
|
/* biJungleM */ { 4.0f, 4.0f}, // 149
|
||||||
|
{}, // 150
|
||||||
|
/* biJungleEdgeM */ { 3.0f, 3.0f}, // 151
|
||||||
|
{}, {}, {}, // 152 .. 154
|
||||||
|
/* biBirchForestM */ { 3.0f, 3.0f}, // 155
|
||||||
|
/* biBirchForestHillsM */ { 5.0f, 5.0f}, // 156
|
||||||
|
/* biRoofedForestM */ { 2.0f, 2.0f}, // 157
|
||||||
|
/* biColdTaigaM */ { 1.0f, 1.0f}, // 158
|
||||||
|
{}, // 159
|
||||||
|
/* biMegaSpruceTaiga */ { 3.0f, 3.0f}, // 160
|
||||||
|
/* biMegaSpruceTaigaHills */ { 3.0f, 3.0f}, // 161
|
||||||
|
/* biExtremeHillsPlusM */ {32.0f, 32.0f}, // 162
|
||||||
|
/* biSavannaM */ { 2.0f, 2.0f}, // 163
|
||||||
|
/* biSavannaPlateauM */ { 3.0f, 3.0f}, // 164
|
||||||
|
/* biMesaBryce */ { 0.5f, 0.5f}, // 165
|
||||||
|
/* biMesaPlateauFM */ { 3.0f, 3.0f}, // 166
|
||||||
|
/* biMesaPlateauM */ { 3.0f, 3.0f}, // 167
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@ -60,7 +122,8 @@ cDistortedHeightmap::cDistortedHeightmap(int a_Seed, cBiomeGen & a_BiomeGen) :
|
|||||||
m_OceanFloorSelect(a_Seed + 3000),
|
m_OceanFloorSelect(a_Seed + 3000),
|
||||||
m_BiomeGen(a_BiomeGen),
|
m_BiomeGen(a_BiomeGen),
|
||||||
m_UnderlyingHeiGen(a_Seed, a_BiomeGen),
|
m_UnderlyingHeiGen(a_Seed, a_BiomeGen),
|
||||||
m_HeightGen(m_UnderlyingHeiGen, 64)
|
m_HeightGen(m_UnderlyingHeiGen, 64),
|
||||||
|
m_IsInitialized(false)
|
||||||
{
|
{
|
||||||
m_NoiseDistortX.AddOctave((NOISE_DATATYPE)1, (NOISE_DATATYPE)0.5);
|
m_NoiseDistortX.AddOctave((NOISE_DATATYPE)1, (NOISE_DATATYPE)0.5);
|
||||||
m_NoiseDistortX.AddOctave((NOISE_DATATYPE)0.5, (NOISE_DATATYPE)1);
|
m_NoiseDistortX.AddOctave((NOISE_DATATYPE)0.5, (NOISE_DATATYPE)1);
|
||||||
@ -394,7 +457,7 @@ void cDistortedHeightmap::UpdateDistortAmps(void)
|
|||||||
void cDistortedHeightmap::GetDistortAmpsAt(BiomeNeighbors & a_Neighbors, int a_RelX, int a_RelZ, NOISE_DATATYPE & a_DistortAmpX, NOISE_DATATYPE & a_DistortAmpZ)
|
void cDistortedHeightmap::GetDistortAmpsAt(BiomeNeighbors & a_Neighbors, int a_RelX, int a_RelZ, NOISE_DATATYPE & a_DistortAmpX, NOISE_DATATYPE & a_DistortAmpZ)
|
||||||
{
|
{
|
||||||
// Sum up how many biomes of each type there are in the neighborhood:
|
// Sum up how many biomes of each type there are in the neighborhood:
|
||||||
int BiomeCounts[biNumBiomes];
|
int BiomeCounts[256];
|
||||||
memset(BiomeCounts, 0, sizeof(BiomeCounts));
|
memset(BiomeCounts, 0, sizeof(BiomeCounts));
|
||||||
int Sum = 0;
|
int Sum = 0;
|
||||||
for (int z = -8; z <= 8; z++)
|
for (int z = -8; z <= 8; z++)
|
||||||
@ -409,10 +472,6 @@ void cDistortedHeightmap::GetDistortAmpsAt(BiomeNeighbors & a_Neighbors, int a_R
|
|||||||
int IdxX = FinalX / cChunkDef::Width;
|
int IdxX = FinalX / cChunkDef::Width;
|
||||||
int ModX = FinalX % cChunkDef::Width;
|
int ModX = FinalX % cChunkDef::Width;
|
||||||
EMCSBiome Biome = cChunkDef::GetBiome(a_Neighbors[IdxX][IdxZ], ModX, ModZ);
|
EMCSBiome Biome = cChunkDef::GetBiome(a_Neighbors[IdxX][IdxZ], ModX, ModZ);
|
||||||
if ((Biome < 0) || (Biome >= ARRAYCOUNT(BiomeCounts)))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int WeightX = 9 - abs(x);
|
int WeightX = 9 - abs(x);
|
||||||
BiomeCounts[Biome] += WeightX + WeightZ;
|
BiomeCounts[Biome] += WeightX + WeightZ;
|
||||||
Sum += WeightX + WeightZ;
|
Sum += WeightX + WeightZ;
|
||||||
@ -432,6 +491,19 @@ void cDistortedHeightmap::GetDistortAmpsAt(BiomeNeighbors & a_Neighbors, int a_R
|
|||||||
NOISE_DATATYPE AmpZ = 0;
|
NOISE_DATATYPE AmpZ = 0;
|
||||||
for (unsigned int i = 0; i < ARRAYCOUNT(BiomeCounts); i++)
|
for (unsigned int i = 0; i < ARRAYCOUNT(BiomeCounts); i++)
|
||||||
{
|
{
|
||||||
|
if (BiomeCounts[i] <= 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Sanity checks for biome parameters, enable them to check the biome param table in runtime (slow):
|
||||||
|
ASSERT(m_GenParam[i].m_DistortAmpX >= 0);
|
||||||
|
ASSERT(m_GenParam[i].m_DistortAmpX < 100);
|
||||||
|
ASSERT(m_GenParam[i].m_DistortAmpX >= 0);
|
||||||
|
ASSERT(m_GenParam[i].m_DistortAmpX < 100);
|
||||||
|
*/
|
||||||
|
|
||||||
AmpX += BiomeCounts[i] * m_GenParam[i].m_DistortAmpX;
|
AmpX += BiomeCounts[i] * m_GenParam[i].m_DistortAmpX;
|
||||||
AmpZ += BiomeCounts[i] * m_GenParam[i].m_DistortAmpZ;
|
AmpZ += BiomeCounts[i] * m_GenParam[i].m_DistortAmpZ;
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ protected:
|
|||||||
NOISE_DATATYPE m_DistortAmpX;
|
NOISE_DATATYPE m_DistortAmpX;
|
||||||
NOISE_DATATYPE m_DistortAmpZ;
|
NOISE_DATATYPE m_DistortAmpZ;
|
||||||
} ;
|
} ;
|
||||||
static const sGenParam m_GenParam[biNumBiomes];
|
static const sGenParam m_GenParam[256];
|
||||||
|
|
||||||
// Distortion amplitudes for each direction, before linear upscaling
|
// Distortion amplitudes for each direction, before linear upscaling
|
||||||
NOISE_DATATYPE m_DistortAmpX[DIM_X * DIM_Z];
|
NOISE_DATATYPE m_DistortAmpX[DIM_X * DIM_Z];
|
||||||
|
@ -229,33 +229,94 @@ void cHeiGenClassic::InitializeHeightGen(cIniFile & a_IniFile)
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// cHeiGenBiomal:
|
// cHeiGenBiomal:
|
||||||
|
|
||||||
const cHeiGenBiomal::sGenParam cHeiGenBiomal::m_GenParam[biNumBiomes] =
|
const cHeiGenBiomal::sGenParam cHeiGenBiomal::m_GenParam[256] =
|
||||||
{
|
{
|
||||||
/* Fast-changing | Middle-changing | Slow-changing |*/
|
/* Fast-changing | Middle-changing | Slow-changing |*/
|
||||||
/* Biome | Freq1 | Amp1 | Freq2 | Amp2 | Freq3 | Amp3 | BaseHeight */
|
/* Biome | Freq1 | Amp1 | Freq2 | Amp2 | Freq3 | Amp3 | BaseHeight */
|
||||||
/* biOcean */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40},
|
/* biOcean */ { 0.1f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 50},
|
||||||
/* biPlains */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
/* biPlains */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
||||||
/* biDesert */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
/* biDesert */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
||||||
/* biExtremeHills */ { 0.2f, 4.0f, 0.05f, 20.0f, 0.01f, 16.0f, 100},
|
/* biExtremeHills */ { 0.2f, 4.0f, 0.05f, 20.0f, 0.01f, 16.0f, 100},
|
||||||
/* biForest */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
/* biForest */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
||||||
/* biTaiga */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
/* biTaiga */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
||||||
/* biSwampland */ { 0.1f, 1.1f, 0.05f, 1.5f, 0.02f, 2.5f, 61.5},
|
/* biSwampland */ { 0.1f, 1.1f, 0.05f, 1.5f, 0.02f, 2.5f, 61.5},
|
||||||
/* biRiver */ { 0.2f, 0.1f, 0.05f, 0.1f, 0.01f, 0.1f, 56},
|
/* biRiver */ { 0.2f, 0.1f, 0.05f, 0.1f, 0.01f, 0.1f, 56},
|
||||||
/* biNether */ { 0.1f, 0.0f, 0.01f, 0.0f, 0.01f, 0.0f, 0}, // Unused, but must be here due to indexing
|
/* biNether */ { 0.1f, 0.0f, 0.01f, 0.0f, 0.01f, 0.0f, 0}, // Unused, but must be here due to indexing
|
||||||
/* biSky */ { 0.1f, 0.0f, 0.01f, 0.0f, 0.01f, 0.0f, 0}, // Unused, but must be here due to indexing
|
/* biSky */ { 0.1f, 0.0f, 0.01f, 0.0f, 0.01f, 0.0f, 0}, // Unused, but must be here due to indexing
|
||||||
/* biFrozenOcean */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40},
|
/* biFrozenOcean */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40},
|
||||||
/* biFrozenRiver */ { 0.2f, 0.1f, 0.05f, 0.1f, 0.01f, 0.1f, 56},
|
/* biFrozenRiver */ { 0.2f, 0.1f, 0.05f, 0.1f, 0.01f, 0.1f, 56},
|
||||||
/* biIcePlains */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
/* biIcePlains */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
||||||
/* biIceMountains */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80},
|
/* biIceMountains */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80},
|
||||||
/* biMushroomIsland */ { 0.1f, 2.0f, 0.05f, 8.0f, 0.01f, 6.0f, 80},
|
/* biMushroomIsland */ { 0.1f, 2.0f, 0.05f, 8.0f, 0.01f, 6.0f, 80},
|
||||||
/* biMushroomShore */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 64},
|
/* biMushroomShore */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 64},
|
||||||
/* biBeach */ { 0.1f, 0.5f, 0.05f, 1.0f, 0.01f, 1.0f, 64},
|
/* biBeach */ { 0.1f, 0.5f, 0.05f, 1.0f, 0.01f, 1.0f, 64},
|
||||||
/* biDesertHills */ { 0.2f, 2.0f, 0.05f, 5.0f, 0.01f, 4.0f, 75},
|
/* biDesertHills */ { 0.2f, 2.0f, 0.05f, 5.0f, 0.01f, 4.0f, 75},
|
||||||
/* biForestHills */ { 0.2f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 80},
|
/* biForestHills */ { 0.2f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 80},
|
||||||
/* biTaigaHills */ { 0.2f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 80},
|
/* biTaigaHills */ { 0.2f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 80},
|
||||||
/* biExtremeHillsEdge */ { 0.2f, 3.0f, 0.05f, 16.0f, 0.01f, 12.0f, 80},
|
/* biExtremeHillsEdge */ { 0.2f, 3.0f, 0.05f, 16.0f, 0.01f, 12.0f, 80},
|
||||||
/* biJungle */ { 0.1f, 3.0f, 0.05f, 6.0f, 0.01f, 6.0f, 70},
|
/* biJungle */ { 0.1f, 3.0f, 0.05f, 6.0f, 0.01f, 6.0f, 70},
|
||||||
/* biJungleHills */ { 0.2f, 3.0f, 0.05f, 12.0f, 0.01f, 10.0f, 80},
|
/* biJungleHills */ { 0.2f, 3.0f, 0.05f, 12.0f, 0.01f, 10.0f, 80},
|
||||||
|
/* biJungleEdge */ { 0.1f, 3.0f, 0.05f, 6.0f, 0.01f, 6.0f, 70},
|
||||||
|
/* biDeepOcean */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40},
|
||||||
|
/* biStoneBeach */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40},
|
||||||
|
/* biColdBeach */ { 0.1f, 0.5f, 0.05f, 1.0f, 0.01f, 1.0f, 64},
|
||||||
|
/* biBirchForest */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
||||||
|
/* biBirchForestHills */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80},
|
||||||
|
/* biRoofedForest */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
||||||
|
/* biColdTaiga */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
||||||
|
/* biColdTaigaHills */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80},
|
||||||
|
/* biMegaTaiga */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70},
|
||||||
|
/* biMegaTaigaHills */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80},
|
||||||
|
/* biExtremeHillsPlus */ { 0.2f, 4.0f, 0.05f, 20.0f, 0.01f, 16.0f, 120},
|
||||||
|
/* biSavanna */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68},
|
||||||
|
/* biSavannaPlateau */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 80},
|
||||||
|
/* biMesa */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80},
|
||||||
|
/* biMesaPlateauF */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 80},
|
||||||
|
/* biMesaPlateau */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 80},
|
||||||
|
|
||||||
|
// biomes 40 .. 128 are unused, 89 empty placeholders here:
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 40 .. 49
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 50 .. 59
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 60 .. 69
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 70 .. 79
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 80 .. 89
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 90 .. 99
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 100 .. 109
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, // 110 .. 119
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, // 120 .. 128
|
||||||
|
|
||||||
|
/* biSunflowerPlains */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 129
|
||||||
|
/* biDesertM */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 130
|
||||||
|
/* biExtremeHillsM */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 131
|
||||||
|
/* biFlowerForest */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 132
|
||||||
|
/* biTaigaM */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 133
|
||||||
|
/* biSwamplandM */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 134
|
||||||
|
|
||||||
|
// Biomes 135 .. 139 unused, 5 empty placeholders here:
|
||||||
|
{}, {}, {}, {}, {}, // 135 .. 139
|
||||||
|
|
||||||
|
/* biIcePlainsSpikes */ { 0.1f, 2.0f, 0.05f, 12.0f, 0.01f, 10.0f, 40}, // 140
|
||||||
|
|
||||||
|
// Biomes 141 .. 148 unused, 8 empty placeholders here:
|
||||||
|
{}, {}, {}, {}, {}, {}, {}, {}, // 141 .. 148
|
||||||
|
|
||||||
|
/* biJungleM */ { 0.1f, 3.0f, 0.05f, 6.0f, 0.01f, 6.0f, 70}, // 149
|
||||||
|
{}, // 150
|
||||||
|
/* biJungleEdgeM */ { 0.1f, 3.0f, 0.05f, 6.0f, 0.01f, 6.0f, 70}, // 151
|
||||||
|
{}, {}, {}, // 152 .. 154
|
||||||
|
/* biBirchForestM */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70}, // 155
|
||||||
|
/* biBirchForestHillsM */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80}, // 156
|
||||||
|
/* biRoofedForestM */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70}, // 157
|
||||||
|
/* biColdTaigaM */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70}, // 158
|
||||||
|
{}, // 159
|
||||||
|
/* biMegaSpruceTaiga */ { 0.1f, 1.0f, 0.05f, 2.0f, 0.01f, 4.0f, 70}, // 160
|
||||||
|
/* biMegaSpruceTaigaHills */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80}, // 161
|
||||||
|
/* biExtremeHillsPlusM */ { 0.2f, 4.0f, 0.05f, 20.0f, 0.01f, 16.0f, 120}, // 162
|
||||||
|
/* biSavannaM */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 68}, // 163
|
||||||
|
/* biSavannaPlateauM */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 80}, // 164
|
||||||
|
/* biMesaBryce */ { 0.2f, 2.0f, 0.05f, 10.0f, 0.01f, 8.0f, 80}, // 165
|
||||||
|
/* biMesaPlateauFM */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 80}, // 166
|
||||||
|
/* biMesaPlateauM */ { 0.1f, 1.0f, 0.05f, 1.5f, 0.01f, 4.0f, 80}, // 167
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@ -333,7 +394,7 @@ void cHeiGenBiomal::InitializeHeightGen(cIniFile & a_IniFile)
|
|||||||
NOISE_DATATYPE cHeiGenBiomal::GetHeightAt(int a_RelX, int a_RelZ, int a_ChunkX, int a_ChunkZ, const cHeiGenBiomal::BiomeNeighbors & a_BiomeNeighbors)
|
NOISE_DATATYPE cHeiGenBiomal::GetHeightAt(int a_RelX, int a_RelZ, int a_ChunkX, int a_ChunkZ, const cHeiGenBiomal::BiomeNeighbors & a_BiomeNeighbors)
|
||||||
{
|
{
|
||||||
// Sum up how many biomes of each type there are in the neighborhood:
|
// Sum up how many biomes of each type there are in the neighborhood:
|
||||||
int BiomeCounts[biNumBiomes];
|
int BiomeCounts[256];
|
||||||
memset(BiomeCounts, 0, sizeof(BiomeCounts));
|
memset(BiomeCounts, 0, sizeof(BiomeCounts));
|
||||||
int Sum = 0;
|
int Sum = 0;
|
||||||
for (int z = -8; z <= 8; z++)
|
for (int z = -8; z <= 8; z++)
|
||||||
@ -348,10 +409,6 @@ NOISE_DATATYPE cHeiGenBiomal::GetHeightAt(int a_RelX, int a_RelZ, int a_ChunkX,
|
|||||||
int IdxX = FinalX / cChunkDef::Width;
|
int IdxX = FinalX / cChunkDef::Width;
|
||||||
int ModX = FinalX % cChunkDef::Width;
|
int ModX = FinalX % cChunkDef::Width;
|
||||||
EMCSBiome Biome = cChunkDef::GetBiome(a_BiomeNeighbors[IdxX][IdxZ], ModX, ModZ);
|
EMCSBiome Biome = cChunkDef::GetBiome(a_BiomeNeighbors[IdxX][IdxZ], ModX, ModZ);
|
||||||
if ((Biome < 0) || (Biome >= ARRAYCOUNT(BiomeCounts)))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int WeightX = 9 - abs(x);
|
int WeightX = 9 - abs(x);
|
||||||
BiomeCounts[Biome] += WeightX + WeightZ;
|
BiomeCounts[Biome] += WeightX + WeightZ;
|
||||||
Sum += WeightX + WeightZ;
|
Sum += WeightX + WeightZ;
|
||||||
@ -370,6 +427,17 @@ NOISE_DATATYPE cHeiGenBiomal::GetHeightAt(int a_RelX, int a_RelZ, int a_ChunkX,
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Sanity checks for biome parameters, enable them to check the biome param table in runtime (slow):
|
||||||
|
ASSERT(m_GenParam[i].m_HeightFreq1 >= 0);
|
||||||
|
ASSERT(m_GenParam[i].m_HeightFreq1 < 1000);
|
||||||
|
ASSERT(m_GenParam[i].m_HeightFreq2 >= 0);
|
||||||
|
ASSERT(m_GenParam[i].m_HeightFreq2 < 1000);
|
||||||
|
ASSERT(m_GenParam[i].m_HeightFreq3 >= 0);
|
||||||
|
ASSERT(m_GenParam[i].m_HeightFreq3 < 1000);
|
||||||
|
*/
|
||||||
|
|
||||||
NOISE_DATATYPE oct1 = m_Noise.CubicNoise2D(BlockX * m_GenParam[i].m_HeightFreq1, BlockZ * m_GenParam[i].m_HeightFreq1) * m_GenParam[i].m_HeightAmp1;
|
NOISE_DATATYPE oct1 = m_Noise.CubicNoise2D(BlockX * m_GenParam[i].m_HeightFreq1, BlockZ * m_GenParam[i].m_HeightFreq1) * m_GenParam[i].m_HeightAmp1;
|
||||||
NOISE_DATATYPE oct2 = m_Noise.CubicNoise2D(BlockX * m_GenParam[i].m_HeightFreq2, BlockZ * m_GenParam[i].m_HeightFreq2) * m_GenParam[i].m_HeightAmp2;
|
NOISE_DATATYPE oct2 = m_Noise.CubicNoise2D(BlockX * m_GenParam[i].m_HeightFreq2, BlockZ * m_GenParam[i].m_HeightFreq2) * m_GenParam[i].m_HeightAmp2;
|
||||||
NOISE_DATATYPE oct3 = m_Noise.CubicNoise2D(BlockX * m_GenParam[i].m_HeightFreq3, BlockZ * m_GenParam[i].m_HeightFreq3) * m_GenParam[i].m_HeightAmp3;
|
NOISE_DATATYPE oct3 = m_Noise.CubicNoise2D(BlockX * m_GenParam[i].m_HeightFreq3, BlockZ * m_GenParam[i].m_HeightFreq3) * m_GenParam[i].m_HeightAmp3;
|
||||||
|
@ -131,7 +131,7 @@ protected:
|
|||||||
float m_HeightFreq3, m_HeightAmp3;
|
float m_HeightFreq3, m_HeightAmp3;
|
||||||
float m_BaseHeight;
|
float m_BaseHeight;
|
||||||
} ;
|
} ;
|
||||||
static const sGenParam m_GenParam[biNumBiomes];
|
static const sGenParam m_GenParam[256];
|
||||||
|
|
||||||
// cTerrainHeightGen overrides:
|
// cTerrainHeightGen overrides:
|
||||||
virtual void GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap) override;
|
virtual void GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap) override;
|
||||||
|
Loading…
Reference in New Issue
Block a user