protected virtual void ProcessNode( BspNode node )
{
if ( node.IsLeaf )
{
ProcessLeaf( node );
return;
}
float distance = node.GetDistance( sphere.Center );
if ( Utility.Abs( distance ) < sphere.Radius )
{
// Sphere crosses the plane, do both.
ProcessNode( node.BackNode );
ProcessNode( node.FrontNode );
}
else if ( distance < 0 )
{
// Do back.
ProcessNode( node.BackNode );
}
else
{
// Do front.
ProcessNode( node.FrontNode );
}
}