void IEndDragHandler.OnEndDrag(PointerEventData eventData) { if (!PTUIEventUtil.Interactable(gameObject) || !mDragBegan) { return; } UIEventLockManager.Instance.SendMsg(new UIUnlockObjEventMsg(gameObject)); if (mCurState == State.Scroll) { mOnScrollEndedEvent.InvokeGracefully(); ExecuteEvents.Execute(ScrollRect.gameObject, eventData, delegate(ScrollRect handler, BaseEventData data) { handler.OnEndDrag(data as PointerEventData); }); mCurState = State.Idle; } else if (mCurState == State.Drag) { mOnDragEndedEvent.InvokeGracefully(); if (mIdleStateWhenDragEnd) { mCurState = State.Idle; } } mDragBegan = false; }
void IBeginDragHandler.OnBeginDrag(PointerEventData eventData) { if (!PTUIEventUtil.Interactable(gameObject)) { return; } UIEventLockManager.Instance.SendMsg(new UILockObjEventMsg(gameObject)); mCurrentDragCalculated = false; mDragBeganMousePos = (transform.parent as RectTransform).GetLocalPosInRect(); mDragBegan = true; }
void IDragHandler.OnDrag(PointerEventData eventData) { if (!PTUIEventUtil.Interactable(gameObject) || !mDragBegan) { return; } if (!mCurrentDragCalculated && mCurState == State.Idle) { var offsetFromBegan = (transform.parent as RectTransform).GetLocalPosInRect() - mDragBeganMousePos; if (offsetFromBegan.magnitude > 10) { mCurrentDragCalculated = true; if (CheckBeganDragged(offsetFromBegan)) { mCurState = State.Drag; mOnDragBeganEvent.InvokeGracefully(); } else { mCurState = State.Scroll; ExecuteEvents.Execute(ScrollRect.gameObject, eventData, delegate(ScrollRect handler, BaseEventData data) { handler.OnBeginDrag(data as PointerEventData); }); mOnScrollBeganEvent.InvokeGracefully(); } return; } } else if (!mCurrentDragCalculated && mCurState == State.Drag) { mOnDragBeganEvent.InvokeGracefully(); mCurrentDragCalculated = true; return; } switch (mCurState) { case State.Drag: mOnDragEvent.InvokeGracefully(); break; case State.Scroll: mOnScrollEvent.InvokeGracefully(); ExecuteEvents.Execute(ScrollRect.gameObject, eventData, delegate(ScrollRect handler, BaseEventData data) { handler.OnDrag(data as PointerEventData); }); break; } }