Example #1
0
    public void InterpolateSize(ISlotListItem listItem)
    {
        ISlotListSlot currentSlot = listItem.GetCurrentSlot();

        if (currentSlot == null)
        {
            return;
        }

        ESlotListDirection direction  = CalculateOffsetDirection(listItem, Vector2.zero);
        ISlotListSlot      targetSlot = GetTargetSlot(listItem, direction);

        if (targetSlot == null)
        {
            listItem.SetSize(currentSlot.GetSize());
            return;
        }
        float offsetPercent = CalculateOffsetPositionPercent(
            listItem.GetPosition(),
            Vector2.zero,
            currentSlot.GetPosition(),
            targetSlot.GetPosition());

        InterpolateSize(listItem, targetSlot, offsetPercent);
    }
Example #2
0
    private void InterpolateSize(ISlotListItem listItem, ISlotListSlot targetSlot, float offsetPercent)
    {
        Vector2 currentSlotSize = listItem.GetCurrentSlot().GetSize();

        if (targetSlot == null ||
            offsetPercent.NearlyEquals(0, 0.001f))
        {
            listItem.SetSize(currentSlotSize);
            return;
        }

        // Interpolate size
        Vector2 targetSlotSize   = targetSlot.GetSize();
        Vector2 interpolatedSize = Vector2.Lerp(currentSlotSize, targetSlotSize, offsetPercent);

        listItem.SetSize(interpolatedSize);
    }