Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
- {
- private const float resetTime = 0.5f;
- private const float minimumActivationDistance = 1.5f;
- private const float minimumDragDistance = 0.4f;
- private Plane dragPlane;
- private float distance = 0;
- private Vector3 startPosition;
- private bool dragging = false;
- public bool disabled = false;
- [HideInInspector]
- public BoardListContentDisplayerBase contentDisplayer;
- [HideInInspector]
- public CardDisplayerBase cardDisplayer;
- //[HideInInspector]
- //public FairtravelGameDisplayerManager owner;
- public void OnBeginDrag(PointerEventData eventData)
- {
- if (!cardDisplayer.IsInteractible || Game.currentGame.HasPendingActions)
- {
- return;
- }
- //FairtravelCardDisplayer.dragSource = cardDisplayer as FairtravelCardDisplayer;
- startPosition = cardDisplayer.transform.position;
- dragPlane = new Plane(cardDisplayer.transform.forward, cardDisplayer.transform.position);
- Debug.Log (dragPlane);
- eventData.eligibleForClick = false;
- }
- public void OnDrag(PointerEventData eventData)
- {
- var ray = Camera.main.ScreenPointToRay(eventData.position);
- if (!dragging)
- {
- if (dragPlane.Raycast(ray, out distance))
- {
- var rayPosition = ray.GetPoint(distance);
- Debug.Log ("distance " + distance);
- Debug.Log ("rayPosition " + rayPosition);
- Debug.Log ("startPosition " + startPosition);
- var startDistance = Vector3.Distance(rayPosition, startPosition);
- Debug.DrawRay (ray.origin, ray.direction * distance, Color.green);
- if(startDistance >= minimumDragDistance)
- {
- //owner.DraggingCard = true;
- dragging = true;
- /*if (owner.ViewingPlayerCanGainResources)
- {
- owner.SlideInResourceDropZones();
- }
- owner.OnCardPointerOver(null);*/
- iTween.Stop(gameObject);
- iTween.RotateTo(cardDisplayer.gameObject, iTween.Hash("rotation", Vector3.zero, "time", resetTime, "islocal", true));
- }
- }
- }
- if (!dragging)
- {
- return;
- }
- if (dragPlane.Raycast(ray, out distance))
- {
- cardDisplayer.transform.position = ray.GetPoint(distance);
- }
- }
- public void OnEndDrag(PointerEventData eventData)
- {
- if (!dragging)
- {
- return;
- }
- int elementIndex = contentDisplayer.elements.IndexOf(cardDisplayer);
- distance = cardDisplayer.transform.position.y - startPosition.y;
- dragging = false;
- if (distance >= minimumActivationDistance && !disabled)
- {
- //(owner.GameObserver as FairtravelGameObserver).UseCard(cardDisplayer.targetCard);
- }
- /*owner.SlideOutResourceDropZones();
- owner.DraggingCard = false;*/
- //FairtravelCardDisplayer.dragSource = null;
- if (!disabled)
- {
- iTween.MoveTo(cardDisplayer.transform.gameObject, iTween.Hash("position", contentDisplayer.PositionForElement(elementIndex),
- "time", resetTime, "islocal", true));
- iTween.RotateTo(cardDisplayer.transform.gameObject, iTween.Hash("rotation", contentDisplayer.RotationForElement(elementIndex).eulerAngles, "time", resetTime, "islocal", true));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement