You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/StompyRobot/SRF/Scripts/UI/ContentFitText.cs

146 lines
3.4 KiB
C#

2 months ago
namespace SRF.UI
{
using Internal;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
[RequireComponent(typeof (RectTransform))]
[ExecuteInEditMode]
[AddComponentMenu(ComponentMenuPaths.ContentFitText)]
public class ContentFitText : UIBehaviour, ILayoutElement
{
public SRText CopySource;
public Vector2 Padding;
public float minWidth
{
get
{
if (CopySource == null)
{
return -1f;
}
return LayoutUtility.GetMinWidth(CopySource.rectTransform) + Padding.x;
}
}
public float preferredWidth
{
get
{
if (CopySource == null)
{
return -1f;
}
return LayoutUtility.GetPreferredWidth(CopySource.rectTransform) + Padding.x;
}
}
public float flexibleWidth
{
get
{
if (CopySource == null)
{
return -1f;
}
return LayoutUtility.GetFlexibleWidth(CopySource.rectTransform);
}
}
public float minHeight
{
get
{
if (CopySource == null)
{
return -1f;
}
return LayoutUtility.GetFlexibleHeight(CopySource.rectTransform) + Padding.y;
}
}
public float preferredHeight
{
get
{
if (CopySource == null)
{
return -1f;
}
return LayoutUtility.GetPreferredHeight(CopySource.rectTransform) + Padding.y;
}
}
public float flexibleHeight
{
get
{
if (CopySource == null)
{
return -1f;
}
return LayoutUtility.GetFlexibleHeight(CopySource.rectTransform);
}
}
public int layoutPriority
{
get { return 0; }
}
public void CalculateLayoutInputHorizontal()
{
CopySource.CalculateLayoutInputHorizontal();
}
public void CalculateLayoutInputVertical()
{
CopySource.CalculateLayoutInputVertical();
}
protected override void OnEnable()
{
SetDirty();
CopySource.LayoutDirty += CopySourceOnLayoutDirty;
}
private void CopySourceOnLayoutDirty(SRText srText)
{
SetDirty();
}
protected override void OnTransformParentChanged()
{
SetDirty();
}
protected override void OnDisable()
{
CopySource.LayoutDirty -= CopySourceOnLayoutDirty;
SetDirty();
}
protected override void OnDidApplyAnimationProperties()
{
SetDirty();
}
protected override void OnBeforeTransformParentChanged()
{
SetDirty();
}
protected void SetDirty()
{
if (!IsActive())
{
return;
}
LayoutRebuilder.MarkLayoutForRebuild(transform as RectTransform);
}
}
}