1using System.Collections;
2using System.Collections.Generic;
3using NaughtyAttributes;
8[RequireComponent(typeof(RectTransform))]
20 private RectTransform rectTransform;
21 private Camera mainCamera;
26 rectTransform = GetComponent<RectTransform>();
27 mainCamera = Camera.main;
34 float biggestOffsetX = 0f;
35 float biggestOffsetY = 0f;
36 foreach(Transform t
in transform)
41 Vector2 v = t.GetComponent<RectTransform>().anchoredPosition;
43 if(Mathf.Abs(v.x) > biggestOffsetX)
44 biggestOffsetX = Mathf.Abs(v.x);
46 if(Mathf.Abs(v.y) > biggestOffsetY)
47 biggestOffsetY = Mathf.Abs(v.y);
55 rectTransform.sizeDelta =
new Vector2(biggestOffsetX, biggestOffsetY);
60 if (
window.alpha < 0.5f)
return;
62 var ddl = GameObject.Find(
"Dropdown List");
110 var view = mainCamera.ScreenToViewportPoint(Input.mousePosition);
111 var isOutside = view.x < 0 || view.x > 1 || view.y < 0 || view.y > 1;
112 if (isOutside || !EventSystem.current.IsPointerOverGameObject())
117 var hits = GetEventSystemRaycastResults();
119 foreach (var hit
in hits)
121 if (hit.gameObject == gameObject)
131 if (Input.mouseScrollDelta.y > 0)
133 if (transform.localScale.x <
maxZoom)
139 if (Input.mouseScrollDelta.y < 0)
141 if (transform.localScale.x >
minZoom)
149 static List<RaycastResult> GetEventSystemRaycastResults()
151 PointerEventData eventData =
new PointerEventData(EventSystem.current) {position = Input.mousePosition};
152 List<RaycastResult> raysastResults =
new List<RaycastResult>();
153 EventSystem.current.RaycastAll(eventData, raysastResults);
154 return raysastResults;
157 private void ZoomOut()
159 if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, Input.mousePosition,
160 null, out var vec2))
return;
162 Vector2 normalizedPoint = Rect.PointToNormalized(rectTransform.rect, vec2);
165 if (transform.localScale.x <
minZoom)
170 scrollRect.verticalNormalizedPosition = normalizedPoint.y;
171 scrollRect.horizontalNormalizedPosition = normalizedPoint.x;
174 private void ZoomIn()
176 if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, Input.mousePosition,
177 null, out var vec2))
return;
179 Vector2 normalizedPoint = Rect.PointToNormalized(rectTransform.rect, vec2);
183 if (transform.localScale.x >
maxZoom)
188 scrollRect.verticalNormalizedPosition = normalizedPoint.y;
189 scrollRect.horizontalNormalizedPosition = normalizedPoint.x;
194 if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, mousePos,
195 null, out var vec2))
return;
199 var hits = GetEventSystemRaycastResults();
201 foreach (var hit
in hits)
203 if (hit.gameObject == gameObject)
209 Vector2 normalizedPoint = Rect.PointToNormalized(rectTransform.rect, vec2);
211 scrollRect.verticalNormalizedPosition = Mathf.Lerp(
scrollRect.verticalNormalizedPosition, normalizedPoint.y, 0.02f);
212 scrollRect.horizontalNormalizedPosition = Mathf.Lerp(
scrollRect.horizontalNormalizedPosition, normalizedPoint.x, 0.02f);