public void FindVisibleObjects( Camera camera, RenderQueue queue )
{
if ( OverlayManager.Instance.HasViewportChanged )
{
for ( int i = 0; i < elementList.Count; i++ )
{
OverlayElementContainer container = (OverlayElementContainer)elementList[ i ];
container.NotifyViewport();
}
}
if ( isVisible )
{
// update transform of elements
if ( isTransformUpdated )
{
GetWorldTransforms( xform );
for ( int i = 0; i < elementList.Count; i++ )
{
OverlayElementContainer container = (OverlayElementContainer)elementList[ i ];
container.NotifyWorldTransforms( xform );
}
isTransformUpdated = false;
}
// add 3d elements
rootNode.Position = camera.DerivedPosition;
rootNode.Orientation = camera.DerivedOrientation;
rootNode.Update( true, false );
// set up the default queue group for the objects about to be added
RenderQueueGroupID oldGroupID = queue.DefaultRenderGroup;
ushort oldPriority = queue.DefaultRenderablePriority;
queue.DefaultRenderGroup = RenderQueueGroupID.Overlay;
queue.DefaultRenderablePriority = (ushort)( ( zOrder * 100 ) - 1 );
rootNode.FindVisibleObjects( camera, queue, true, false );
// reset the group
queue.DefaultRenderGroup = oldGroupID;
queue.DefaultRenderablePriority = oldPriority;
// add 2d elements
for ( int i = 0; i < elementList.Count; i++ )
{
OverlayElementContainer container = (OverlayElementContainer)elementList[ i ];
container.Update();
container.UpdateRenderQueue( queue );
}
}
}