Example #1
0
        private void Update()
        {
            // Animate card by interpolating translation and rotation, destroy swiped cards
            if (animationState != AnimationState.Idle && !animationSuspended)
            {
                float animationProgress = (Time.time - animationStartTime) / _animationDuration;
                float scaledProgress    = ScaleProgress(animationProgress);
                if (scaledProgress > 1.0f || animationProgress > 1.0f)
                {
                    transform.position    = snapPosition;
                    transform.eulerAngles = snapRotationAngles;

                    if (animationState == AnimationState.Revealing)
                    {
                        CardDescriptionDisplay.SetDescription(card.CardText, card.CharacterName);
                        snapRotationAngles.y -= 360.0f;
                    }

                    if (animationState == AnimationState.FlyingAway)
                    {
                        Destroy(gameObject);
                    }
                    else
                    {
                        animationState = AnimationState.Idle;
                    }
                }
                else
                {
                    transform.position    = Vector3.Lerp(animationStartPosition, snapPosition, scaledProgress);
                    transform.eulerAngles = Vector3.Lerp(animationStartRotationAngles, snapRotationAngles, scaledProgress);

                    ShowVisibleSide();
                }
                if (animationState != AnimationState.Revealing)
                {
                    float alphaCoord = (transform.position.x - snapPosition.x) / (swipeThreshold / 2);
                    Util.SetTextAlpha(leftActionText, Mathf.Clamp01(-alphaCoord));
                    Util.SetTextAlpha(rightActionText, Mathf.Clamp01(alphaCoord));
                    if (!actionPreviewSuspended)
                    {
                        Stats.UpdateActionPreviewAlpha(-alphaCoord, alphaCoord);
                    }
                }
            }
        }
Example #2
0
 public void EndDrag()
 {
     animationStartPosition       = transform.position;
     animationStartRotationAngles = transform.eulerAngles;
     animationStartTime           = Time.time;
     if (animationState != AnimationState.FlyingAway)
     {
         if (transform.position.x < snapPosition.x - swipeThreshold)
         {
             card.PerformLeftDecision(Controller);
             Vector3 displacement = animationStartPosition - snapPosition;
             snapPosition += displacement.normalized
                             * Util.OrthoCameraWorldDiagonalSize(Camera.main)
                             * 2.0f;
             snapRotationAngles = transform.eulerAngles;
             animationState     = AnimationState.FlyingAway;
             CardDescriptionDisplay.ResetDescription();
             actionPreviewSuspended = true;
         }
         else if (transform.position.x > snapPosition.x + swipeThreshold)
         {
             card.PerformRightDecision(Controller);
             Vector3 displacement = animationStartPosition - snapPosition;
             snapPosition += displacement.normalized
                             * Util.OrthoCameraWorldDiagonalSize(Camera.main)
                             * 2.0f;
             snapRotationAngles = transform.eulerAngles;
             animationState     = AnimationState.FlyingAway;
             CardDescriptionDisplay.ResetDescription();
             actionPreviewSuspended = true;
         }
         else if (animationState == AnimationState.Idle)
         {
             animationState = AnimationState.Converging;
         }
     }
     animationSuspended = false;
 }