Beispiel #1
0
    private void LeanAnimation(Vector3 joint, Vector3 axis, float angle, bool isVertical, int stackedAmount, bool reversed)
    {
        if (reversed == false)
        {
            _rotatePivot.transform.position = joint + (Vector3.up * GetTargetHeight(stackedAmount));
        }
        else
        {
            _rotatePivot.transform.position = joint - (Vector3.up * GetTargetHeight(stackedAmount));
        }
        _rotatePivot.transform.eulerAngles = Vector3.zero;

        transform.SetParent(_rotatePivot.transform);

        LeanTween.rotateAroundLocal(_rotatePivot, axis, angle, speed)
        .setEase(easeType)
        .setOnComplete(() => {
            if (reversed == false)
            {
                transform.SetParent(_lastNeighbourInGradient.transform);
            }
            else
            {
                transform.SetParent(null);
            }

            if (reversed == false)
            {
                this.GetComponent <Collider>().enabled = false;
            }
            else
            {
                this.GetComponent <Collider>().enabled = true;
            }

            if (isVertical)
            {
                _isFlippedVertical = !_isFlippedVertical;
            }
            else
            {
                _isFlippedHorizontal = !_isFlippedHorizontal;
            }

            CalculateJoints();

            if (reversed == false)
            {
                MovementCount++;
            }
            else
            {
                MovementCount--;
            }

            if (reversed == false)
            {
                _lastNeighbourInGradient.AddInGradient(this);
            }
            else
            {
                _lastNeighbourInGradient.RemoveInGradient(this);
            }

            if (reversed == false)
            {
                HistoryTracker.inGradients.Push(this);
            }
            else
            {
                HistoryTracker.hasUndoFinished = true;
            }
        });
    }