public void ParentToCanvas(Vector3 targetPosition) { if (IsOnline && hasAuthority) { CmdUnspawnCard(); } CardStack prevParentStack = ParentCardStack; if (CurrentDragPhase == DragPhase.Drag) { prevParentStack.UpdateScrollRect(DragPhase.End, CurrentPointerEventData); } transform.SetParent(CardGameManager.Instance.CardCanvas.transform); transform.SetAsLastSibling(); if (prevParentStack != null) { prevParentStack.OnRemove(this); } canvasGroup.blocksRaycasts = false; ((RectTransform)transform).anchorMax = 0.5f * Vector2.one; ((RectTransform)transform).anchorMin = 0.5f * Vector2.one; ((RectTransform)transform).pivot = 0.5f * Vector2.one; transform.position = targetPosition; transform.localScale = Vector3.one; }
public void UpdateParentCardStackScrollRect() { CardStack cardStack = ParentCardStack; if (cardStack != null) { cardStack.UpdateScrollRect(CurrentDragPhase, CurrentPointerEventData); } }
public void UpdateCardStackPosition(Vector2 targetPosition) { CardStack cardStack = ParentCardStack; if (cardStack == null || (IsOnline && !hasAuthority)) { return; } if (!cardStack.DoesImmediatelyRelease && (cardStack.type == CardStackType.Vertical || cardStack.type == CardStackType.Horizontal)) { cardStack.UpdateScrollRect(CurrentDragPhase, CurrentPointerEventData); } else if (!IsStatic) { cardStack.UpdateLayout(transform as RectTransform, targetPosition); } if (!IsStatic) { if (cardStack.type == CardStackType.Area) { transform.SetAsLastSibling(); } Vector3[] stackCorners = new Vector3[4]; ((RectTransform)cardStack.transform).GetWorldCorners(stackCorners); bool isOutYBounds = targetPosition.y <stackCorners[0].y || targetPosition.y> stackCorners[1].y; bool isOutXBounds = targetPosition.x <stackCorners[0].x || targetPosition.y> stackCorners[2].x; if ((cardStack.DoesImmediatelyRelease && !IsProcessingSecondaryDragAction) || (cardStack.type == CardStackType.Full && CurrentDragPhase == DragPhase.Begin) || (cardStack.type == CardStackType.Vertical && isOutXBounds) || (cardStack.type == CardStackType.Horizontal && isOutYBounds) || (cardStack.type == CardStackType.Area && (isOutYBounds || (PlaceHolder != null && PlaceHolder.parent != transform.parent)))) { ParentToCanvas(targetPosition); } } }