Added cBlockArea:CountNonAirBlocks API function.
This commit is contained in:
parent
46bb4788cf
commit
a3c4b7580b
@ -99,6 +99,7 @@ g_APIDesc =
|
|||||||
Clear = { Params = "", Return = "", Notes = "Clears the object, resets it to zero size" },
|
Clear = { Params = "", Return = "", Notes = "Clears the object, resets it to zero size" },
|
||||||
CopyFrom = { Params = "BlockAreaSrc", Return = "", Notes = "Copies contents from BlockAreaSrc into self" },
|
CopyFrom = { Params = "BlockAreaSrc", Return = "", Notes = "Copies contents from BlockAreaSrc into self" },
|
||||||
CopyTo = { Params = "BlockAreaDst", Return = "", Notes = "Copies contents from self into BlockAreaDst." },
|
CopyTo = { Params = "BlockAreaDst", Return = "", Notes = "Copies contents from self into BlockAreaDst." },
|
||||||
|
CountNonAirBlocks = { Params = "", Return = "number", Notes = "Returns the count of blocks that are not air. Returns 0 if blocktypes not available. Block metas are ignored (if present, air with any meta is still considered air)." },
|
||||||
Create = { Params = "SizeX, SizeY, SizeZ, [DataTypes]", Return = "", Notes = "Initializes this BlockArea to an empty area of the specified size and origin of {0, 0, 0}. Any previous contents are lost." },
|
Create = { Params = "SizeX, SizeY, SizeZ, [DataTypes]", Return = "", Notes = "Initializes this BlockArea to an empty area of the specified size and origin of {0, 0, 0}. Any previous contents are lost." },
|
||||||
Crop = { Params = "AddMinX, SubMaxX, AddMinY, SubMaxY, AddMinZ, SubMaxZ", Return = "", Notes = "Crops the specified number of blocks from each border. Modifies the size of this blockarea object." },
|
Crop = { Params = "AddMinX, SubMaxX, AddMinY, SubMaxY, AddMinZ, SubMaxZ", Return = "", Notes = "Crops the specified number of blocks from each border. Modifies the size of this blockarea object." },
|
||||||
DumpToRawFile = { Params = "FileName", Return = "", Notes = "Dumps the raw data into a file. For debugging purposes only." },
|
DumpToRawFile = { Params = "FileName", Return = "", Notes = "Dumps the raw data into a file. For debugging purposes only." },
|
||||||
|
@ -1634,6 +1634,37 @@ void cBlockArea::GetRelBlockTypeMeta(int a_RelX, int a_RelY, int a_RelZ, BLOCKTY
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
size_t cBlockArea::CountNonAirBlocks(void) const
|
||||||
|
{
|
||||||
|
// Check if blocktypes are valid:
|
||||||
|
if (m_BlockTypes == nullptr)
|
||||||
|
{
|
||||||
|
LOGWARNING("%s: BlockTypes have not been read!", __FUNCTION__);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count the blocks:
|
||||||
|
size_t res = 0;
|
||||||
|
for (int y = 0; y < m_Size.y; y++)
|
||||||
|
{
|
||||||
|
for (int z = 0; z < m_Size.z; z++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < m_Size.x; x++)
|
||||||
|
{
|
||||||
|
if (m_BlockTypes[MakeIndex(x, y, z)] != E_BLOCK_AIR)
|
||||||
|
{
|
||||||
|
++res;
|
||||||
|
}
|
||||||
|
} // for x
|
||||||
|
} // for z
|
||||||
|
} // for y
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cBlockArea::GetNonAirCropRelCoords(int & a_MinRelX, int & a_MinRelY, int & a_MinRelZ, int & a_MaxRelX, int & a_MaxRelY, int & a_MaxRelZ, BLOCKTYPE a_IgnoreBlockType)
|
void cBlockArea::GetNonAirCropRelCoords(int & a_MinRelX, int & a_MinRelY, int & a_MinRelZ, int & a_MaxRelX, int & a_MaxRelY, int & a_MaxRelZ, BLOCKTYPE a_IgnoreBlockType)
|
||||||
{
|
{
|
||||||
// Check if blocktypes are valid:
|
// Check if blocktypes are valid:
|
||||||
|
@ -303,7 +303,11 @@ public:
|
|||||||
bool HasBlockMetas (void) const { return (m_BlockMetas != nullptr); }
|
bool HasBlockMetas (void) const { return (m_BlockMetas != nullptr); }
|
||||||
bool HasBlockLights (void) const { return (m_BlockLight != nullptr); }
|
bool HasBlockLights (void) const { return (m_BlockLight != nullptr); }
|
||||||
bool HasBlockSkyLights(void) const { return (m_BlockSkyLight != nullptr); }
|
bool HasBlockSkyLights(void) const { return (m_BlockSkyLight != nullptr); }
|
||||||
|
|
||||||
|
/** Returns the count of blocks that are not air.
|
||||||
|
Returns 0 if blocktypes not available. Block metas are ignored (if present, air with any meta is still considered air). */
|
||||||
|
size_t CountNonAirBlocks(void) const;
|
||||||
|
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
/** Returns the minimum and maximum coords in each direction for the first non-ignored block in each direction.
|
/** Returns the minimum and maximum coords in each direction for the first non-ignored block in each direction.
|
||||||
|
Loading…
Reference in New Issue
Block a user