Skip to content
Snippets Groups Projects
DragHandling.cs 1.02 KiB
Newer Older
  • Learn to ignore specific revisions
  • BenniHome's avatar
    BenniHome committed
    using UnityEngine.EventSystems;
    
    public class DragHandling : MonoBehaviour, IDragHandler, IEndDragHandler
    {
        private Vector3 StartingPosition;
    
        private Transform StartingParent;
    
        [HideInInspector] public bool dragged = false;
    
        public void OnDrag(PointerEventData eventData)
        {
            if (!dragged)
            {
    
    BenniHome's avatar
    BenniHome committed
                StartingPosition = transform.localPosition;
    
                StartingParent = transform.parent;
    
    BenniHome's avatar
    BenniHome committed
                GetComponent<CanvasGroup>().blocksRaycasts = false;
                dragged = true;
            }
    
            // display dragged object in front of all other ui
    
            transform.SetParent(GetComponentInParent<Canvas>().transform, false);
    
            transform.SetAsLastSibling();
    
    
            transform.position = Input.mousePosition;
    
    BenniHome's avatar
    BenniHome committed
        }
    
    
        public void OnEndDrag(PointerEventData eventData)
        {
    
            transform.SetParent(StartingParent, false);
    
    BenniHome's avatar
    BenniHome committed
            transform.localPosition = StartingPosition;
    
            GetComponent<CanvasGroup>().blocksRaycasts = true;
    
    BenniHome's avatar
    BenniHome committed
            dragged = false;
    
        }
    }