public void UpdatePCZSceneNode( PCZSceneNode pczsn )
{
// Skip if root Zone has been destroyed (shutdown conditions)
if ( null == defaultZone )
{
return;
}
// Skip if the node is the sceneroot node
if ( pczsn == RootSceneNode )
{
return;
}
// clear all references to visiting zones
pczsn.ClearVisitingZonesMap();
// Find the current home zone of the node associated with the pczsn entry.
UpdateHomeZone( pczsn, false );
//* The following function does the following:
//* 1) Check all portals in the home zone - if the node is touching the portal
//* then add the node to the connected zone as a visitor
//* 2) Recurse into visited zones in case the node spans several zones
//*
// (recursively) check each portal of home zone to see if the node is touching
if ( null != pczsn.HomeZone &&
pczsn.AllowToVisit )
{
pczsn.HomeZone.CheckNodeAgainstPortals( pczsn, null );
}
// update zone-specific data for the node for any zones that require it
pczsn.UpdateZoneData();
}