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); }
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); }