public dfList<dfRenderData> RenderMultiple()
{
if( Atlas == null || Font == null )
return null;
if( !isVisible )
{
return null;
}
// Initialize render buffers if needed
if( renderData == null )
{
renderData = dfRenderData.Obtain();
textRenderData = dfRenderData.Obtain();
isControlInvalidated = true;
}
// If control is not dirty, update the transforms on the
// render buffers (in case control moved) and return
// pre-rendered data
if( !isControlInvalidated )
{
for( int i = 0; i < buffers.Count; i++ )
{
buffers[ i ].Transform = transform.localToWorldMatrix;
}
return buffers;
}
#region Prepare render buffers
buffers.Clear();
renderData.Clear();
renderData.Material = Atlas.Material;
renderData.Transform = this.transform.localToWorldMatrix;
buffers.Add( renderData );
textRenderData.Clear();
textRenderData.Material = Atlas.Material;
textRenderData.Transform = this.transform.localToWorldMatrix;
buffers.Add( textRenderData );
#endregion
// Render background before anything else, since we're going to
// want to keep track of where the background data ends and any
// other data begins
renderBackground();
// Render text item
renderText( textRenderData );
// Control is no longer in need of rendering
isControlInvalidated = false;
// Make sure that the collider size always matches the control
updateCollider();
return buffers;
}