using UnityEngine;
using UnityEngine.UI;
namespace Pursuit.Code.ExtensionMethods
{
public static class ScrollRectExtensionMethods
{
public static void SnapTo(this ScrollRect scroller, RectTransform child)
{
Canvas.ForceUpdateCanvases();
var contentPos = (Vector2)scroller.transform.InverseTransformPoint(scroller.content.position);
var childPos = (Vector2)scroller.transform.InverseTransformPoint(child.position);
Vector2 endPos = contentPos - childPos;
// If no horizontal scroll, then don't change contentPos.x
if (!scroller.horizontal) endPos.x = contentPos.x;
// If no vertical scroll, then don't change contentPos.y
if (!scroller.vertical) endPos.y = contentPos.y;
scroller.content.position = scroller.transform.TransformPoint(endPos);
Vector2 goalPos = scroller.normalizedPosition;
goalPos.x = Mathf.Clamp01(goalPos.x);
goalPos.y = Mathf.Clamp01(goalPos.y);
scroller.normalizedPosition = goalPos;
}
}
}