Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using UnityEngine.EventSystems;
- using System;
- using UnityEngine.UI;
- public class Draggable : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
- {
- public Vector2 dragOffset = new Vector2(0f, 0f);
- public Transform parentToReturnTo = null;
- public Transform placeHolderParent = null;
- GameObject placeHolder = null;
- public void OnBeginDrag(PointerEventData eventData)
- {
- // Debug.Log("OnBeginDrag");
- placeHolder = new GameObject();
- placeHolder.transform.SetParent(this.transform.parent);
- LayoutElement le = placeHolder.AddComponent<LayoutElement>();
- le.preferredWidth = this.GetComponent<LayoutElement>().preferredWidth;
- le.preferredHeight = this.GetComponent<LayoutElement>().preferredHeight;
- le.flexibleHeight = 0;
- le.flexibleWidth = 0;
- placeHolder.transform.SetSiblingIndex(this.transform.GetSiblingIndex());
- parentToReturnTo = this.transform.parent;
- placeHolderParent = parentToReturnTo;
- this.transform.SetParent(this.transform.parent.parent);
- GetComponent<CanvasGroup>().blocksRaycasts = false;
- dragOffset = eventData.position - (Vector2)this.transform.position;
- }
- public void OnDrag(PointerEventData eventData)
- {
- //Debug.Log("OnDrag");
- this.transform.position = eventData.position;
- if (placeHolder.transform.parent != placeHolderParent )
- {
- placeHolder.transform.SetParent(placeHolderParent);
- }
- int newSiblingIndex = placeHolderParent.childCount ;
- for(int i =0; i < placeHolderParent.childCount; i++)
- {
- if(this.transform.position.x < placeHolderParent.GetChild(i).position.x)
- {
- newSiblingIndex = i;
- if(placeHolder.transform.GetSiblingIndex()< newSiblingIndex)
- {
- newSiblingIndex--;
- }
- break;
- }
- }
- placeHolder.transform.SetSiblingIndex(newSiblingIndex);
- this.transform.position = eventData.position - dragOffset;
- }
- public void OnEndDrag(PointerEventData eventData)
- {
- //Debug.Log("OnEndDrag");
- Debug.Log("name: " + parentToReturnTo.name);
- if (!parentToReturnTo.name.Equals("Tabletop opponent")) {
- this.transform.SetParent(parentToReturnTo);
- this.transform.SetSiblingIndex(placeHolder.transform.GetSiblingIndex());
- } else
- {
- this.transform.SetParent(placeHolderParent);
- this.transform.SetSiblingIndex(placeHolder.transform.GetSiblingIndex());
- }
- GetComponent<CanvasGroup>().blocksRaycasts = true;
- Destroy(placeHolder);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement