Raycast now track previous voxel, for working out which direction you came from.
This commit is contained in:
		| @@ -41,6 +41,7 @@ namespace PolyVox | |||||||
| 		bool foundIntersection; | 		bool foundIntersection; | ||||||
| 		///If an intersection was found then this field holds the intersecting voxel, otherwise it is undefined. | 		///If an intersection was found then this field holds the intersecting voxel, otherwise it is undefined. | ||||||
| 		Vector3DInt32 intersectionVoxel; | 		Vector3DInt32 intersectionVoxel; | ||||||
|  | 		Vector3DInt32 previousVoxel; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	/// The Raycast class can be used to find the fist filled voxel along a given path. | 	/// The Raycast class can be used to find the fist filled voxel along a given path. | ||||||
|   | |||||||
| @@ -134,6 +134,7 @@ namespace PolyVox | |||||||
| 		float deltatz = 1.0f / abs(z2 - z1); | 		float deltatz = 1.0f / abs(z2 - z1); | ||||||
|  |  | ||||||
| 		m_sampVolume.setPosition(i,j,k); | 		m_sampVolume.setPosition(i,j,k); | ||||||
|  | 		m_result.previousVoxel = Vector3DInt32(i,j,k); | ||||||
|  |  | ||||||
| 		for(;;) | 		for(;;) | ||||||
| 		{ | 		{ | ||||||
| @@ -143,7 +144,7 @@ namespace PolyVox | |||||||
| 				m_result.intersectionVoxel = Vector3DInt32(i,j,k); | 				m_result.intersectionVoxel = Vector3DInt32(i,j,k); | ||||||
| 				return; | 				return; | ||||||
| 			} | 			} | ||||||
|  | 			m_result.previousVoxel = Vector3DInt32(i,j,k); | ||||||
| 			if(tx <= ty && tx <= tz) | 			if(tx <= ty && tx <= tz) | ||||||
| 			{ | 			{ | ||||||
| 				if(i == iend) break; | 				if(i == iend) break; | ||||||
| @@ -174,5 +175,6 @@ namespace PolyVox | |||||||
| 		//Didn't hit anything | 		//Didn't hit anything | ||||||
| 		m_result.foundIntersection = false; | 		m_result.foundIntersection = false; | ||||||
| 		m_result.intersectionVoxel = Vector3DInt32(0,0,0); | 		m_result.intersectionVoxel = Vector3DInt32(0,0,0); | ||||||
|  | 		m_result.previousVoxel = Vector3DInt32(0,0,0); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user