mirror of
https://github.com/minetest/minetest.git
synced 2024-12-24 15:12:23 +01:00
Add VoxelArea::hasEmptyExtent
This commit is contained in:
parent
c0066a75cd
commit
5d08ada224
@ -139,7 +139,7 @@ void VoxelManipulator::print(std::ostream &o, INodeDefManager *ndef,
|
|||||||
void VoxelManipulator::addArea(const VoxelArea &area)
|
void VoxelManipulator::addArea(const VoxelArea &area)
|
||||||
{
|
{
|
||||||
// Cancel if requested area has zero volume
|
// Cancel if requested area has zero volume
|
||||||
if(area.getExtent() == v3s16(0,0,0))
|
if (area.hasEmptyExtent())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Cancel if m_area already contains the requested area
|
// Cancel if m_area already contains the requested area
|
||||||
@ -151,7 +151,7 @@ void VoxelManipulator::addArea(const VoxelArea &area)
|
|||||||
// Calculate new area
|
// Calculate new area
|
||||||
VoxelArea new_area;
|
VoxelArea new_area;
|
||||||
// New area is the requested area if m_area has zero volume
|
// New area is the requested area if m_area has zero volume
|
||||||
if(m_area.getExtent() == v3s16(0,0,0))
|
if(m_area.hasEmptyExtent())
|
||||||
{
|
{
|
||||||
new_area = area;
|
new_area = area;
|
||||||
}
|
}
|
||||||
|
15
src/voxel.h
15
src/voxel.h
@ -82,7 +82,7 @@ public:
|
|||||||
|
|
||||||
void addArea(const VoxelArea &a)
|
void addArea(const VoxelArea &a)
|
||||||
{
|
{
|
||||||
if(getExtent() == v3s16(0,0,0))
|
if (hasEmptyExtent())
|
||||||
{
|
{
|
||||||
*this = a;
|
*this = a;
|
||||||
return;
|
return;
|
||||||
@ -96,7 +96,7 @@ public:
|
|||||||
}
|
}
|
||||||
void addPoint(const v3s16 &p)
|
void addPoint(const v3s16 &p)
|
||||||
{
|
{
|
||||||
if(getExtent() == v3s16(0,0,0))
|
if(hasEmptyExtent())
|
||||||
{
|
{
|
||||||
MinEdge = p;
|
MinEdge = p;
|
||||||
MaxEdge = p;
|
MaxEdge = p;
|
||||||
@ -137,6 +137,15 @@ public:
|
|||||||
{
|
{
|
||||||
return MaxEdge - MinEdge + v3s16(1,1,1);
|
return MaxEdge - MinEdge + v3s16(1,1,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Because MaxEdge and MinEdge are included in the voxel area an empty extent
|
||||||
|
* is not represented by (0, 0, 0), but instead (-1, -1, -1)
|
||||||
|
*/
|
||||||
|
bool hasEmptyExtent() const
|
||||||
|
{
|
||||||
|
return MaxEdge - MinEdge == v3s16(-1, -1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
s32 getVolume() const
|
s32 getVolume() const
|
||||||
{
|
{
|
||||||
v3s16 e = getExtent();
|
v3s16 e = getExtent();
|
||||||
@ -146,7 +155,7 @@ public:
|
|||||||
{
|
{
|
||||||
// No area contains an empty area
|
// No area contains an empty area
|
||||||
// NOTE: Algorithms depend on this, so do not change.
|
// NOTE: Algorithms depend on this, so do not change.
|
||||||
if(a.getExtent() == v3s16(0,0,0))
|
if(a.hasEmptyExtent())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return(
|
return(
|
||||||
|
Loading…
Reference in New Issue
Block a user