Advertisement
Guest User

Untitled

a guest
Sep 18th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.32 KB | None | 0 0
  1. public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
  2.             {
  3.                 private const float resetTime = 0.5f;
  4.                 private const float minimumActivationDistance = 1.5f;
  5.                 private const float minimumDragDistance = 0.4f;
  6.  
  7.                 private Plane dragPlane;
  8.                 private float distance = 0;
  9.                 private Vector3 startPosition;
  10.                 private bool dragging = false;
  11.  
  12.                 public bool disabled = false;
  13.  
  14.                 [HideInInspector]
  15.                 public BoardListContentDisplayerBase contentDisplayer;
  16.  
  17.                 [HideInInspector]
  18.                 public CardDisplayerBase cardDisplayer;
  19.  
  20.                 //[HideInInspector]
  21.                 //public FairtravelGameDisplayerManager owner;
  22.  
  23.                 public void OnBeginDrag(PointerEventData eventData)
  24.                 {
  25.                     if (!cardDisplayer.IsInteractible || Game.currentGame.HasPendingActions)
  26.                     {
  27.                         return;
  28.                     }
  29.  
  30.                     //FairtravelCardDisplayer.dragSource = cardDisplayer as FairtravelCardDisplayer;
  31.  
  32.                     startPosition = cardDisplayer.transform.position;
  33.                     dragPlane = new Plane(cardDisplayer.transform.forward, cardDisplayer.transform.position);
  34.                     Debug.Log (dragPlane);
  35.                     eventData.eligibleForClick = false;
  36.                 }
  37.  
  38.                 public void OnDrag(PointerEventData eventData)
  39.                 {
  40.                     var ray = Camera.main.ScreenPointToRay(eventData.position);
  41.  
  42.                     if (!dragging)
  43.                     {
  44.                         if (dragPlane.Raycast(ray, out distance))
  45.                         {
  46.                             var rayPosition = ray.GetPoint(distance);
  47.                             Debug.Log ("distance " + distance);
  48.                             Debug.Log ("rayPosition " + rayPosition);
  49.                             Debug.Log ("startPosition " + startPosition);
  50.                             var startDistance = Vector3.Distance(rayPosition, startPosition);
  51.                             Debug.DrawRay (ray.origin, ray.direction * distance, Color.green);
  52.                             if(startDistance >= minimumDragDistance)
  53.                             {
  54.                                 //owner.DraggingCard = true;
  55.                                 dragging = true;
  56.  
  57.                                 /*if (owner.ViewingPlayerCanGainResources)
  58.                                 {
  59.                                     owner.SlideInResourceDropZones();
  60.                                 }
  61.  
  62.                                 owner.OnCardPointerOver(null);*/
  63.  
  64.                                 iTween.Stop(gameObject);
  65.  
  66.                                 iTween.RotateTo(cardDisplayer.gameObject, iTween.Hash("rotation", Vector3.zero, "time", resetTime, "islocal", true));
  67.                             }
  68.                         }
  69.                     }
  70.  
  71.                     if (!dragging)
  72.                     {
  73.                         return;
  74.                     }
  75.  
  76.                     if (dragPlane.Raycast(ray, out distance))
  77.                     {
  78.                         cardDisplayer.transform.position = ray.GetPoint(distance);
  79.                     }
  80.                 }
  81.  
  82.                 public void OnEndDrag(PointerEventData eventData)
  83.                 {
  84.                     if (!dragging)
  85.                     {
  86.                         return;
  87.                     }
  88.  
  89.                     int elementIndex = contentDisplayer.elements.IndexOf(cardDisplayer);
  90.                     distance = cardDisplayer.transform.position.y - startPosition.y;
  91.                     dragging = false;
  92.  
  93.                     if (distance >= minimumActivationDistance && !disabled)
  94.                     {
  95.                         //(owner.GameObserver as FairtravelGameObserver).UseCard(cardDisplayer.targetCard);
  96.                     }
  97.  
  98.                     /*owner.SlideOutResourceDropZones();
  99.                     owner.DraggingCard = false;*/
  100.  
  101.                     //FairtravelCardDisplayer.dragSource = null;
  102.  
  103.                     if (!disabled)
  104.                     {
  105.                         iTween.MoveTo(cardDisplayer.transform.gameObject, iTween.Hash("position", contentDisplayer.PositionForElement(elementIndex),
  106.                             "time", resetTime, "islocal", true));
  107.                         iTween.RotateTo(cardDisplayer.transform.gameObject, iTween.Hash("rotation", contentDisplayer.RotationForElement(elementIndex).eulerAngles, "time", resetTime, "islocal", true));
  108.                     }
  109.                 }
  110.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement