/// <summary>
/// Adds a 2d element to this overlay.
/// </summary>
/// <remarks>
/// Containers are created and managed using the OverlayManager. A container
/// could be as simple as a square panel, or something more complex like
/// a grid or tree view. Containers group collections of other elements,
/// giving them a relative coordinate space and a common z-order.
/// If you want to attach a gui widget to an overlay, you have to do it via
/// a container.
/// </remarks>
/// <param name="element"></param>
public void AddElement(OverlayElementContainer element)
{
this.elementList.Add(element);
this.elementLookup.Add(element.Name, element);
// notify the parent
element.NotifyParent(null, this);
AssignZOrders();
GetWorldTransforms(this.xform);
element.NotifyWorldTransforms(this.xform);
element.NotifyViewport();
}