mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Add VoxelArea::hasEmptyExtent
This commit is contained in:
		@@ -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;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								src/voxel.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/voxel.h
									
									
									
									
									
								
							@@ -82,7 +82,7 @@ public:
 | 
			
		||||
 | 
			
		||||
	void addArea(const VoxelArea &a)
 | 
			
		||||
	{
 | 
			
		||||
		if(getExtent() == v3s16(0,0,0))
 | 
			
		||||
		if (hasEmptyExtent())
 | 
			
		||||
		{
 | 
			
		||||
			*this = a;
 | 
			
		||||
			return;
 | 
			
		||||
@@ -96,7 +96,7 @@ public:
 | 
			
		||||
	}
 | 
			
		||||
	void addPoint(const v3s16 &p)
 | 
			
		||||
	{
 | 
			
		||||
		if(getExtent() == v3s16(0,0,0))
 | 
			
		||||
		if(hasEmptyExtent())
 | 
			
		||||
		{
 | 
			
		||||
			MinEdge = p;
 | 
			
		||||
			MaxEdge = p;
 | 
			
		||||
@@ -137,6 +137,15 @@ public:
 | 
			
		||||
	{
 | 
			
		||||
		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 @@ public:
 | 
			
		||||
	{
 | 
			
		||||
		// 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(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user