Raycast now track previous voxel, for working out which direction you came from.

This commit is contained in:
David Williams 2011-09-20 18:38:13 +01:00
parent b84147f650
commit ddc54e0862
2 changed files with 4 additions and 1 deletions

View File

@ -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.

View File

@ -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);
} }
} }