mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-12 15:57:37 +02:00
Editor stuff
This commit is contained in:
@ -0,0 +1,62 @@
|
||||
/// Credit .entity
|
||||
/// Sourced from - http://forum.unity3d.com/threads/rescale-panel.309226/
|
||||
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace UnityEngine.UI.Extensions
|
||||
{
|
||||
[AddComponentMenu("UI/Extensions/RescalePanels/RescalePanel")]
|
||||
public class RescalePanel : MonoBehaviour, IPointerDownHandler, IDragHandler
|
||||
{
|
||||
public Vector2 minSize;
|
||||
public Vector2 maxSize;
|
||||
|
||||
private RectTransform rectTransform;
|
||||
private Transform goTransform;
|
||||
private Vector2 currentPointerPosition;
|
||||
private Vector2 previousPointerPosition;
|
||||
|
||||
private RectTransform thisRectTransform;
|
||||
Vector2 sizeDelta;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
rectTransform = transform.parent.GetComponent<RectTransform>();
|
||||
goTransform = transform.parent;
|
||||
|
||||
thisRectTransform = GetComponent<RectTransform>();
|
||||
sizeDelta = thisRectTransform.sizeDelta;
|
||||
}
|
||||
|
||||
public void OnPointerDown(PointerEventData data)
|
||||
{
|
||||
rectTransform.SetAsLastSibling();
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, data.position, data.pressEventCamera, out previousPointerPosition);
|
||||
}
|
||||
|
||||
public void OnDrag(PointerEventData data)
|
||||
{
|
||||
if (rectTransform == null)
|
||||
return;
|
||||
|
||||
Vector3 scaleDelta = goTransform.localScale;
|
||||
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, data.position, data.pressEventCamera, out currentPointerPosition);
|
||||
Vector2 resizeValue = currentPointerPosition - previousPointerPosition;
|
||||
|
||||
scaleDelta += new Vector3(-resizeValue.y * 0.001f, -resizeValue.y * 0.001f, 0f);
|
||||
scaleDelta = new Vector3(
|
||||
Mathf.Clamp(scaleDelta.x, minSize.x, maxSize.x),
|
||||
Mathf.Clamp(scaleDelta.y, minSize.y, maxSize.y),
|
||||
1
|
||||
);
|
||||
|
||||
goTransform.localScale = scaleDelta;
|
||||
|
||||
previousPointerPosition = currentPointerPosition;
|
||||
float resizeDeltaValue = sizeDelta.x / goTransform.localScale.x;
|
||||
Vector2 newSizeDelta = new Vector2(resizeDeltaValue, resizeDeltaValue);
|
||||
thisRectTransform.sizeDelta = newSizeDelta;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user