namespace SRF.UI { using Internal; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; /// /// Copies the preferred size of another layout element (useful for a parent object basing its sizing from a child /// element). /// This does have very quirky behaviour, though. /// TODO: Write custom editor for this to match layout element editor /// [RequireComponent(typeof (RectTransform))] [ExecuteInEditMode] [AddComponentMenu(ComponentMenuPaths.CopyLayoutElement)] public class CopyLayoutElement : UIBehaviour, ILayoutElement { public bool CopyMinHeight; public bool CopyMinWidth; public bool CopyPreferredHeight; public bool CopyPreferredWidth; public RectTransform CopySource; public float PaddingMinHeight; public float PaddingMinWidth; public float PaddingPreferredHeight; public float PaddingPreferredWidth; public float preferredWidth { get { if (!CopyPreferredWidth || CopySource == null || !IsActive()) { return -1f; } return LayoutUtility.GetPreferredWidth(CopySource) + PaddingPreferredWidth; } } public float preferredHeight { get { if (!CopyPreferredHeight || CopySource == null || !IsActive()) { return -1f; } return LayoutUtility.GetPreferredHeight(CopySource) + PaddingPreferredHeight; } } public float minWidth { get { if (!CopyMinWidth || CopySource == null || !IsActive()) { return -1f; } return LayoutUtility.GetMinWidth(CopySource) + PaddingMinWidth; } } public float minHeight { get { if (!CopyMinHeight || CopySource == null || !IsActive()) { return -1f; } return LayoutUtility.GetMinHeight(CopySource) + PaddingMinHeight; } } public int layoutPriority { get { return 2; } } public float flexibleHeight { get { return -1; } } public float flexibleWidth { get { return -1; } } public void CalculateLayoutInputHorizontal() {} public void CalculateLayoutInputVertical() {} } }