From 5d08ada2241569501fa22bfc5e5cde0ee7dfd0c7 Mon Sep 17 00:00:00 2001
From: unknown <gregory.currie@gmail.com>
Date: Tue, 13 Jan 2015 23:23:31 +1000
Subject: [PATCH] Add VoxelArea::hasEmptyExtent

---
 src/voxel.cpp |  4 ++--
 src/voxel.h   | 15 ++++++++++++---
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/voxel.cpp b/src/voxel.cpp
index 1299a5296..02da42459 100644
--- a/src/voxel.cpp
+++ b/src/voxel.cpp
@@ -139,7 +139,7 @@ void VoxelManipulator::print(std::ostream &o, INodeDefManager *ndef,
 void VoxelManipulator::addArea(const VoxelArea &area)
 {
 	// Cancel if requested area has zero volume
-	if(area.getExtent() == v3s16(0,0,0))
+	if (area.hasEmptyExtent())
 		return;
 
 	// Cancel if m_area already contains the requested area
@@ -151,7 +151,7 @@ void VoxelManipulator::addArea(const VoxelArea &area)
 	// Calculate new area
 	VoxelArea new_area;
 	// 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;
 	}
diff --git a/src/voxel.h b/src/voxel.h
index 53b6edbc7..52274ac19 100644
--- a/src/voxel.h
+++ b/src/voxel.h
@@ -82,7 +82,7 @@ class VoxelArea
 
 	void addArea(const VoxelArea &a)
 	{
-		if(getExtent() == v3s16(0,0,0))
+		if (hasEmptyExtent())
 		{
 			*this = a;
 			return;
@@ -96,7 +96,7 @@ class VoxelArea
 	}
 	void addPoint(const v3s16 &p)
 	{
-		if(getExtent() == v3s16(0,0,0))
+		if(hasEmptyExtent())
 		{
 			MinEdge = p;
 			MaxEdge = p;
@@ -137,6 +137,15 @@ class VoxelArea
 	{
 		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
 	{
 		v3s16 e = getExtent();
@@ -146,7 +155,7 @@ class VoxelArea
 	{
 		// No area contains an empty area
 		// NOTE: Algorithms depend on this, so do not change.
-		if(a.getExtent() == v3s16(0,0,0))
+		if(a.hasEmptyExtent())
 			return false;
 
 		return(
-- 
GitLab