123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using UnityEngine;
- using UnityEngine.EventSystems;
- namespace SimpleFileBrowser
- {
- public class FileBrowserMovement : MonoBehaviour
- {
- #region Variables
- #pragma warning disable 0649
- private FileBrowser fileBrowser;
- private RectTransform canvasTR;
- private Camera canvasCam;
- [SerializeField]
- private RectTransform window;
-
- [SerializeField]
- private RecycledListView listView;
- #pragma warning restore 0649
- private Vector2 initialTouchPos = Vector2.zero;
- private Vector2 initialAnchoredPos, initialSizeDelta;
- #endregion
- #region Initialization Functions
- public void Initialize( FileBrowser fileBrowser )
- {
- this.fileBrowser = fileBrowser;
- canvasTR = fileBrowser.GetComponent<RectTransform>();
- }
- #endregion
- #region Pointer Events
- public void OnDragStarted( BaseEventData data )
- {
- PointerEventData pointer = (PointerEventData) data;
- canvasCam = pointer.pressEventCamera;
- RectTransformUtility.ScreenPointToLocalPointInRectangle( window, pointer.pressPosition, canvasCam, out initialTouchPos );
- }
- public void OnDrag( BaseEventData data )
- {
- PointerEventData pointer = (PointerEventData) data;
- Vector2 touchPos;
- RectTransformUtility.ScreenPointToLocalPointInRectangle( window, pointer.position, canvasCam, out touchPos );
- window.anchoredPosition += touchPos - initialTouchPos;
- }
- public void OnEndDrag( BaseEventData data )
- {
- fileBrowser.EnsureWindowIsWithinBounds();
- }
- public void OnResizeStarted( BaseEventData data )
- {
- PointerEventData pointer = (PointerEventData) data;
- canvasCam = pointer.pressEventCamera;
- initialAnchoredPos = window.anchoredPosition;
- initialSizeDelta = window.sizeDelta;
- RectTransformUtility.ScreenPointToLocalPointInRectangle( canvasTR, pointer.pressPosition, canvasCam, out initialTouchPos );
- }
- public void OnResize( BaseEventData data )
- {
- PointerEventData pointer = (PointerEventData) data;
- Vector2 touchPos;
- RectTransformUtility.ScreenPointToLocalPointInRectangle( canvasTR, pointer.position, canvasCam, out touchPos );
- Vector2 delta = touchPos - initialTouchPos;
- Vector2 newSize = initialSizeDelta + new Vector2( delta.x, -delta.y );
- if( newSize.x < fileBrowser.minWidth ) newSize.x = fileBrowser.minWidth;
- if( newSize.y < fileBrowser.minHeight ) newSize.y = fileBrowser.minHeight;
- newSize.x = (int) newSize.x;
- newSize.y = (int) newSize.y;
- delta = newSize - initialSizeDelta;
- window.anchoredPosition = initialAnchoredPos + new Vector2( delta.x * 0.5f, delta.y * -0.5f );
- window.sizeDelta = newSize;
- listView.OnViewportDimensionsChanged();
- }
- public void OnEndResize( BaseEventData data )
- {
- fileBrowser.EnsureWindowIsWithinBounds();
- }
- #endregion
- }
- }
|