Prepared cChunkDesc for further API extension; used it as the sole container for generated chunk data, including entities / block entities.
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1200 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
219
source/Generating/ChunkDesc.cpp
Normal file
219
source/Generating/ChunkDesc.cpp
Normal file
@@ -0,0 +1,219 @@
|
||||
|
||||
// ChunkDesc.cpp
|
||||
|
||||
// Implements the cChunkDesc class representing the chunk description used while generating a chunk. This class is also exported to Lua for HOOK_CHUNK_GENERATING.
|
||||
|
||||
#include "Globals.h"
|
||||
#include "ChunkDesc.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cChunkDesc::cChunkDesc(void) :
|
||||
m_bUseDefaultBiomes(true),
|
||||
m_bUseDefaultHeight(true),
|
||||
m_bUseDefaultComposition(true),
|
||||
m_bUseDefaultStructures(true),
|
||||
m_bUseDefaultFinish(true)
|
||||
{
|
||||
memset(m_BlockTypes, 0, sizeof(cChunkDef::BlockTypes));
|
||||
memset(m_BlockMeta, 0, sizeof(cChunkDef::BlockNibbles));
|
||||
memset(m_BiomeMap, 0, sizeof(cChunkDef::BiomeMap));
|
||||
memset(m_HeightMap, 0, sizeof(cChunkDef::HeightMap));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cChunkDesc::~cChunkDesc()
|
||||
{
|
||||
// Nothing needed yet
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::FillBlocks(BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
||||
{
|
||||
const NIBBLETYPE CompressedMeta = a_BlockMeta | (a_BlockMeta << 4);
|
||||
memset(m_BlockTypes, a_BlockType, sizeof(cChunkDef::BlockTypes));
|
||||
memset(m_BlockMeta, CompressedMeta, sizeof(cChunkDef::BlockNibbles));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
||||
{
|
||||
int Index = cChunkDef::MakeIndex(a_RelX, a_RelY, a_RelZ);
|
||||
cChunkDef::SetBlock(m_BlockTypes, Index, a_BlockType);
|
||||
cChunkDef::SetNibble(m_BlockMeta, Index, a_BlockMeta);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetBlockType(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType)
|
||||
{
|
||||
cChunkDef::SetBlock(m_BlockTypes, a_RelX, a_RelY, a_RelZ, a_BlockType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BLOCKTYPE cChunkDesc::GetBlockType(int a_RelX, int a_RelY, int a_RelZ)
|
||||
{
|
||||
return cChunkDef::GetBlock(m_BlockTypes, a_RelX, a_RelY, a_RelZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
NIBBLETYPE cChunkDesc::GetBlockMeta(int a_RelX, int a_RelY, int a_RelZ)
|
||||
{
|
||||
return cChunkDef::GetNibble(m_BlockMeta, a_RelX, a_RelY, a_RelZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetBlockMeta(int a_RelX, int a_RelY, int a_RelZ, NIBBLETYPE a_BlockMeta)
|
||||
{
|
||||
cChunkDef::SetNibble(m_BlockMeta, a_RelX, a_RelY, a_RelZ, a_BlockMeta);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetBiome(int a_RelX, int a_RelZ, int a_BiomeID)
|
||||
{
|
||||
cChunkDef::SetBiome(m_BiomeMap, a_RelX, a_RelZ, (EMCSBiome)a_BiomeID);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
EMCSBiome cChunkDesc::GetBiome(int a_RelX, int a_RelZ)
|
||||
{
|
||||
return cChunkDef::GetBiome(m_BiomeMap, a_RelX, a_RelZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetHeight(int a_RelX, int a_RelZ, int a_Height)
|
||||
{
|
||||
cChunkDef::SetHeight(m_HeightMap, a_RelX, a_RelZ, a_Height);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int cChunkDesc::GetHeight(int a_RelX, int a_RelZ)
|
||||
{
|
||||
return cChunkDef::GetHeight(m_HeightMap, a_RelX, a_RelZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetUseDefaultBiomes(bool a_bUseDefaultBiomes)
|
||||
{
|
||||
m_bUseDefaultBiomes = a_bUseDefaultBiomes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cChunkDesc::IsUsingDefaultBiomes(void) const
|
||||
{
|
||||
return m_bUseDefaultBiomes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetUseDefaultHeight(bool a_bUseDefaultHeight)
|
||||
{
|
||||
m_bUseDefaultHeight = a_bUseDefaultHeight;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cChunkDesc::IsUsingDefaultHeight(void) const
|
||||
{
|
||||
return m_bUseDefaultHeight;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetUseDefaultComposition(bool a_bUseDefaultComposition)
|
||||
{
|
||||
m_bUseDefaultComposition = a_bUseDefaultComposition;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cChunkDesc::IsUsingDefaultComposition(void) const
|
||||
{
|
||||
return m_bUseDefaultComposition;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetUseDefaultStructures(bool a_bUseDefaultStructures)
|
||||
{
|
||||
m_bUseDefaultStructures = a_bUseDefaultStructures;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cChunkDesc::IsUsingDefaultStructures(void) const
|
||||
{
|
||||
return m_bUseDefaultStructures;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkDesc::SetUseDefaultFinish(bool a_bUseDefaultFinish)
|
||||
{
|
||||
m_bUseDefaultFinish = a_bUseDefaultFinish;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cChunkDesc::IsUsingDefaultFinish(void) const
|
||||
{
|
||||
return m_bUseDefaultFinish;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user