Files
5.24BuYu/Assets/Plugins/ImageCropper/Scripts/SelectionGraphicsSynchronizer.cs
T

56 lines
1.5 KiB
C#

using UnityEngine;
namespace ImageCropperNamespace
{
public class SelectionGraphicsSynchronizer : MonoBehaviour
{
[SerializeField]
private ImageCropper manager;
[SerializeField]
private RectTransform selectionBottomLeft;
[SerializeField]
private RectTransform selectionTopRight;
private RectTransform viewport;
private RectTransform selectionGraphics;
private Vector2 bottomLeftPrevPosition, topRightPrevPosition;
private void Awake()
{
viewport = manager.Viewport;
selectionGraphics = manager.SelectionGraphics;
}
private void Start()
{
bottomLeftPrevPosition = selectionBottomLeft.position;
topRightPrevPosition = selectionTopRight.position;
Synchronize( selectionBottomLeft.position, selectionTopRight.position );
}
public void Synchronize()
{
Vector2 bottomLeftPosition = selectionBottomLeft.position;
Vector2 topRightPosition = selectionTopRight.position;
if( bottomLeftPosition != bottomLeftPrevPosition || topRightPosition != topRightPrevPosition )
Synchronize( bottomLeftPosition, topRightPosition );
}
private void Synchronize( Vector2 bottomLeft, Vector2 topRight )
{
Vector2 position = viewport.InverseTransformPoint( bottomLeft );
Vector2 size = (Vector2) viewport.InverseTransformPoint( topRight ) - position;
selectionGraphics.anchoredPosition = position;
selectionGraphics.sizeDelta = size;
bottomLeftPrevPosition = bottomLeft;
topRightPrevPosition = topRight;
}
}
}