summaryrefslogtreecommitdiff
path: root/Assets/SampleUI/Scripts/ResizePanel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/SampleUI/Scripts/ResizePanel.cs')
-rwxr-xr-xAssets/SampleUI/Scripts/ResizePanel.cs39
1 files changed, 39 insertions, 0 deletions
diff --git a/Assets/SampleUI/Scripts/ResizePanel.cs b/Assets/SampleUI/Scripts/ResizePanel.cs
new file mode 100755
index 0000000..0058bba
--- /dev/null
+++ b/Assets/SampleUI/Scripts/ResizePanel.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.EventSystems;
+
+public class ResizePanel : MonoBehaviour, IPointerDownHandler, IDragHandler {
+
+ public Vector2 minSize = new Vector2 (100, 100);
+ public Vector2 maxSize = new Vector2 (400, 400);
+
+ private RectTransform panelRectTransform;
+ private Vector2 originalLocalPointerPosition;
+ private Vector2 originalSizeDelta;
+
+ void Awake () {
+ panelRectTransform = transform.parent.GetComponent<RectTransform> ();
+ }
+
+ public void OnPointerDown (PointerEventData data) {
+ originalSizeDelta = panelRectTransform.sizeDelta;
+ RectTransformUtility.ScreenPointToLocalPointInRectangle (panelRectTransform, data.position, data.pressEventCamera, out originalLocalPointerPosition);
+ }
+
+ public void OnDrag (PointerEventData data) {
+ if (panelRectTransform == null)
+ return;
+
+ Vector2 localPointerPosition;
+ RectTransformUtility.ScreenPointToLocalPointInRectangle (panelRectTransform, data.position, data.pressEventCamera, out localPointerPosition);
+ Vector3 offsetToOriginal = localPointerPosition - originalLocalPointerPosition;
+
+ Vector2 sizeDelta = originalSizeDelta + new Vector2 (offsetToOriginal.x, -offsetToOriginal.y);
+ sizeDelta = new Vector2 (
+ Mathf.Clamp (sizeDelta.x, minSize.x, maxSize.x),
+ Mathf.Clamp (sizeDelta.y, minSize.y, maxSize.y)
+ );
+
+ panelRectTransform.sizeDelta = sizeDelta;
+ }
+} \ No newline at end of file