r2mods/ilspy_dump/ror2_csproj/RoR2.UI/DragResize.cs

49 lines
1.4 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace RoR2.UI;
[RequireComponent(typeof(RectTransform))]
public class DragResize : MonoBehaviour, IBeginDragHandler, IEventSystemHandler, IDragHandler
{
public RectTransform targetTransform;
public Vector2 minSize;
private Vector2 grabPoint;
private RectTransform rectTransform;
private void Awake()
{
rectTransform = (RectTransform)base.transform;
}
public void OnDrag(PointerEventData eventData)
{
UpdateDrag(eventData);
}
public void OnBeginDrag(PointerEventData eventData)
{
if ((bool)targetTransform)
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(targetTransform, eventData.position, eventData.pressEventCamera, out grabPoint);
}
}
private void UpdateDrag(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Left && (bool)targetTransform)
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(targetTransform, eventData.position, eventData.pressEventCamera, out var localPoint);
Vector2 vector = localPoint - grabPoint;
grabPoint = localPoint;
vector.y = 0f - vector.y;
minSize = Vector2.Max(rhs: new Vector2(LayoutUtility.GetMinSize(targetTransform, 0), LayoutUtility.GetMinSize(targetTransform, 1)), lhs: minSize);
targetTransform.sizeDelta = Vector2.Max(targetTransform.sizeDelta + vector, minSize);
}
}
}