private void SetCurrentCardDrop(CardDropWidgetBase cardDrop, int index) { if (currentCardDrop != cardDrop || currentCardDropIndex != index) { var prevCardDrop = currentCardDrop; var prevIndex = currentCardDropIndex; currentCardDrop = cardDrop; currentCardDropIndex = index; CardWidget prevCard; if (currentCardDrop) { prevCard = cardDrop.CardDropSet(index, this); } else { prevCard = null; } if (prevCardDrop) { if (prevCard) { prevCard.MoveDragAnchorToOrigin(); prevCard.currentCardDrop = prevCardDrop; prevCard.currentCardDropIndex = prevIndex; } prevCardDrop.CardDropSet(prevIndex, prevCard); } else if (prevCard) { prevCard.poolData.Release(); } } }
private void ResetDrag(bool resetDragRoot) { StopRoutine(); mIsDragging = false; mDragAreaBeginType = DragAreaType.None; mDragAreaCurType = DragAreaType.None; if (resetDragRoot && dragRoot) { dragRoot.SetParent(transform, false); dragRoot.localPosition = mDragRootDefaultLocalPos; } if (dragInsideWholeGO) { dragInsideWholeGO.SetActive(false); } if (dragInsideFractionGO) { dragInsideFractionGO.SetActive(false); } if (dragWholeToFractionGO) { dragWholeToFractionGO.SetActive(false); } if (dragFractionToWholeGO) { dragFractionToWholeGO.SetActive(false); } if (mCurCardDropWidget) { mCurCardDropWidget.CardDropHighlightClear(); mCurCardDropWidget = null; } }
private void RefreshDragDisplay(PointerEventData eventData) { Vector2 pos = eventData.position; var _dragInside = false; var _dragWholeToFraction = false; var _dragFractionToWhole = false; switch (mDragAreaCurType) { case DragAreaType.Whole: _dragInside = true; _dragFractionToWhole = mDragAreaBeginType == DragAreaType.Fraction; break; case DragAreaType.Fraction: _dragInside = true; _dragWholeToFraction = mDragAreaBeginType == DragAreaType.Whole; break; case DragAreaType.Outside: //set drag display position var dragAreaRoot = DragArea.transform; if (dragRoot.parent != dragAreaRoot) { dragRoot.SetParent(dragAreaRoot, false); } dragRoot.position = pos; CardDropWidgetBase dropWidget = null; int index = -1; if (eventData.pointerCurrentRaycast.isValid && eventData.pointerCurrentRaycast.gameObject) { dropWidget = eventData.pointerCurrentRaycast.gameObject.GetComponent <CardDropWidgetBase>(); if (dropWidget) { index = dropWidget.CardDropGetSlotIndex(this); } } if (mCurCardDropWidget != dropWidget) { if (mCurCardDropWidget) { mCurCardDropWidget.CardDropHighlightClear(); } mCurCardDropWidget = dropWidget; } if (mCurCardDropWidget) { mCurCardDropWidget.CardDropHighlight(index); } break; } //revert drag root if no longer "outside" if (mDragAreaCurType != DragAreaType.Outside) { if (dragRoot.parent != transform) { dragRoot.SetParent(transform, false); dragRoot.localPosition = mDragRootDefaultLocalPos; } } if (_dragInside) { if (dragInsideWholeGO) { dragInsideWholeGO.SetActive(mDragAreaBeginType == DragAreaType.Whole); } if (dragInsideFractionGO) { dragInsideFractionGO.SetActive(mDragAreaBeginType == DragAreaType.Fraction); } } else { if (dragInsideWholeGO) { dragInsideWholeGO.SetActive(false); } if (dragInsideFractionGO) { dragInsideFractionGO.SetActive(false); } } if (dragWholeToFractionGO) { dragWholeToFractionGO.SetActive(_dragWholeToFraction); } if (dragFractionToWholeGO) { dragFractionToWholeGO.SetActive(_dragFractionToWhole); } }