96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
| namespace SRF.UI
 | |
| {
 | |
|     using Internal;
 | |
|     using UnityEngine;
 | |
|     using UnityEngine.EventSystems;
 | |
|     using UnityEngine.UI;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 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
 | |
|     /// </summary>
 | |
|     [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() {}
 | |
|     }
 | |
| }
 |