Added new merge strategy "msDifference"
This commit is contained in:
parent
ceabb372f0
commit
c4e07631c8
@ -173,6 +173,25 @@ static inline void MergeCombinatorSpongePrint(BLOCKTYPE & a_DstType, BLOCKTYPE a
|
||||
|
||||
|
||||
|
||||
/** Combinator used for cBlockArea::msDifference merging */
|
||||
static inline void MergeCombinatorDifference(BLOCKTYPE & a_DstType, BLOCKTYPE a_SrcType, NIBBLETYPE & a_DstMeta, NIBBLETYPE a_SrcMeta)
|
||||
{
|
||||
if ((a_DstType == a_SrcType) && (a_DstMeta == a_SrcMeta))
|
||||
{
|
||||
a_DstType = E_BLOCK_AIR;
|
||||
a_DstMeta = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
a_DstType = a_SrcType;
|
||||
a_DstMeta = a_SrcMeta;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// cBlockArea:
|
||||
|
||||
@ -710,6 +729,21 @@ void cBlockArea::Merge(const cBlockArea & a_Src, int a_RelX, int a_RelY, int a_R
|
||||
break;
|
||||
} // case msSpongePrint
|
||||
|
||||
case msDifference:
|
||||
{
|
||||
InternalMergeBlocks(
|
||||
m_BlockTypes, a_Src.GetBlockTypes(),
|
||||
DstMetas, SrcMetas,
|
||||
SizeX, SizeY, SizeZ,
|
||||
SrcOffX, SrcOffY, SrcOffZ,
|
||||
DstOffX, DstOffY, DstOffZ,
|
||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||
m_Size.x, m_Size.y, m_Size.z,
|
||||
MergeCombinatorDifference
|
||||
);
|
||||
break;
|
||||
} // case msDifference
|
||||
|
||||
default:
|
||||
{
|
||||
LOGWARNING("Unknown block area merge strategy: %d", a_Strategy);
|
||||
|
@ -52,6 +52,7 @@ public:
|
||||
msImprint,
|
||||
msLake,
|
||||
msSpongePrint,
|
||||
msDifference,
|
||||
} ;
|
||||
|
||||
cBlockArea(void);
|
||||
|
Loading…
Reference in New Issue
Block a user