bool SceneRootZone::onSceneAdd()
{
   if( !Parent::onSceneAdd() )
      return false;

   AssertFatal( getZoneRangeStart() == SceneZoneSpaceManager::RootZoneId, "SceneRootZone::onSceneAdd - SceneRootZone must be first scene object zone manager!" );

   return true;
}
bool ScenePolyhedralZone::getOverlappingZones( const Box3F& aabb, U32* outZones, U32& outNumZones )
{
    // If a trivial box, let parent handle this.

    if( mIsBox )
        return Parent::getOverlappingZones( aabb, outZones, outNumZones );

    // Otherwise, use the intersector.

    OverlapTestResult overlap = mIntersector.test( aabb );

    if( overlap == GeometryOutside )
    {
        outNumZones = 0;
        return true;
    }

    outZones[ 0 ] = getZoneRangeStart();
    outNumZones = 1;

    return ( overlap != GeometryInside );
}
void SceneRootZone::onSceneRemove()
{
   AssertFatal( getZoneRangeStart() == SceneZoneSpaceManager::RootZoneId, "SceneRootZone::onSceneRemove - SceneRootZone must be first scene object zone manager!");
   Parent::onSceneRemove();
}