Esempio n. 1
0
    public void Select(FooterBarButton target)
    {
        if (_lastSelectedButton != null)
        {
            _lastSelectedButton.ShowNormalSprite();
        }

        _lastSelectedNumber = _buttons.ToList().FindIndex(c => c == target);

        _lastSelectedButton = target;

        lastSelectedRect = target.ButtonBounds;
        // var lastSelectedRect = target.transform as RectTransform;

        var rectTransform = transform as RectTransform;

        // do move
        Vector2 targetPos = lastSelectedRect.position;

        targetPos.y = rectTransform.position.y;

        // init animation
        rectTransform.DOMove(targetPos, _animationLength).SetEase(_animationEase);

        // do scale
        Vector2 newSizeDelta;

        newSizeDelta.x = lastSelectedRect.sizeDelta.x + _constWidthAdd;
        newSizeDelta.y = _constHeight;

        // init animation
        rectTransform.DOSizeDelta(newSizeDelta, _animationLength).SetEase(_animationEase);
    }
Esempio n. 2
0
    public void Highlight(FooterBarButton target)
    {
        currentHighlighted = target;
        var currentHighlightedRect = target.ButtonBounds;

        var rectTransform = transform as RectTransform;
        // var lastSelectedRect = target.transform as RectTransform;

        // do move
        // mid point between two vectors = (a + b) / 2f
        Vector2 midPoint = (currentHighlightedRect.position + lastSelectedRect.position) / 2f;

        midPoint.y = rectTransform.position.y;

        // init animation
        rectTransform.DOMove(midPoint, _animationLength).SetEase(_animationEase);

        // do scale
        Vector2 newSizeDelta;

        bool targetOnRight = currentHighlightedRect.position.x > rectTransform.position.x;

        float   leftX;
        float   rightX;
        Vector3 localPosSelected    = transform.InverseTransformPoint(lastSelectedRect.position);
        Vector3 localPosHighlighted = transform.InverseTransformPoint(currentHighlightedRect.position);

        if (targetOnRight)
        {
            leftX  = localPosSelected.x + lastSelectedRect.rect.xMin;
            rightX = localPosHighlighted.x + currentHighlightedRect.rect.xMax;
        }
        else
        {
            leftX  = localPosSelected.x + lastSelectedRect.rect.xMax;
            rightX = localPosHighlighted.x + currentHighlightedRect.rect.xMin;
        }

        newSizeDelta.x = Mathf.Abs(leftX) + Mathf.Abs(rightX);
        //newSizeDelta.x += _constWidthAdd;
        newSizeDelta.y = _constHeight;

        // init animation
        rectTransform.DOSizeDelta(newSizeDelta, _animationLength).SetEase(_animationEase);


        lastSelectedRect = target.ButtonBounds;
    }
Esempio n. 3
0
    public void SelectFirst(FooterBarButton target)
    {
        _lastSelectedButton = target;
        lastSelectedRect    = target.ButtonBounds;

        var rectTransform = transform as RectTransform;

        _constWidthAdd = rectTransform.sizeDelta.x - lastSelectedRect.sizeDelta.x;
        _constHeight   = rectTransform.sizeDelta.y;
        _constYpos     = rectTransform.position.y;
        _constWidthAdd = rectTransform.sizeDelta.x - lastSelectedRect.sizeDelta.x;

        // set pos
        rectTransform.position
            = new Vector3(lastSelectedRect.position.x, // x
                          _constYpos);                 // y

        // set scale
        rectTransform.sizeDelta
            = new Vector3(lastSelectedRect.sizeDelta.x + _constWidthAdd, // x
                          _constHeight);                                 // y
    }