//--------------------------------------------------------
|
// [Author]: 玩个游戏
|
// [ Date ]: Monday, July 31, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.EventSystems;
|
using System;
|
|
public class DragItem:MonoBehaviour,ICanvasRaycastFilter,IBeginDragHandler,IDragHandler,IEndDragHandler {
|
|
[SerializeField]
|
RectTransform m_Area;
|
public RectTransform area { get { return m_Area; } }
|
|
[SerializeField]
|
bool m_RaycastTarget = true;
|
public bool raycastTarget {
|
get { return m_RaycastTarget; }
|
private set { m_RaycastTarget = value; }
|
}
|
|
RectTransform m_RectTransform;
|
public RectTransform rectTransform { get { return this.transform as RectTransform; } }
|
|
public void OnBeginDrag(PointerEventData eventData) {
|
raycastTarget = false;
|
this.transform.position = UIUtility.ClampWorldPosition(area,eventData);
|
}
|
|
public void OnDrag(PointerEventData eventData) {
|
this.transform.position = UIUtility.ClampWorldPosition(area,eventData);
|
}
|
|
public void OnEndDrag(PointerEventData eventData) {
|
raycastTarget = true;
|
if(eventData.pointerEnter == null) {
|
return;
|
}
|
|
var container = eventData.pointerEnter.GetComponent<DragContainer>();
|
if(container == null) {
|
return;
|
}
|
|
var contain = UIUtility.RectTransformContain(eventData.pointerEnter.transform as RectTransform,rectTransform);
|
if(contain) {
|
rectTransform.position = eventData.pointerEnter.transform.position;
|
}
|
}
|
|
public bool IsRaycastLocationValid(Vector2 sp,Camera eventCamera) {
|
return raycastTarget;
|
}
|
}
|