/// <summary> /// Hides the carousel with an optional transition animation and an optional callback invoked animation is complete. /// </summary> /// <param name="transition">The type of visibility transition to use.</param> /// <param name="onComplete">Callback invoked when animation is complete.</param> public void Hide(VisibilityTransitionType transition = VisibilityTransitionType.NONE, Action onComplete = null) { m_Pivot.localScale = Vector3.one; m_Pivot.localPosition = Vector3.zero; switch (transition) { case VisibilityTransitionType.NONE: gameObject.SetActive(false); break; case VisibilityTransitionType.UP: m_Pivot .DOLocalMoveY(m_Radius, m_VisibilityTransitionDuration) .SetEase(m_VisibilityTransitionEasing) .OnComplete(() => { gameObject.SetActive(false); if (onHide != null) { onHide.Invoke(this); } if (onComplete != null) { onComplete.Invoke(); } }); m_Pivot .DOScale(0f, m_VisibilityTransitionDuration) .SetEase(m_HideTransitionCurve); break; case VisibilityTransitionType.DOWN: m_Pivot .DOLocalMoveY(-m_Radius, m_VisibilityTransitionDuration) .SetEase(m_VisibilityTransitionEasing) .OnComplete(() => { gameObject.SetActive(false); if (onHide != null) { onHide.Invoke(this); } if (onComplete != null) { onComplete.Invoke(); } }); m_Pivot .DOScale(0f, m_VisibilityTransitionDuration) .SetEase(m_HideTransitionCurve); break; } }
/// <summary> /// Shows the carousel with an optional transition animation and an optional callback invoked when animation is complete. /// </summary> /// <param name="transition">The type of visibility transition to use.</param> /// <param name="onComplete">Callback invoked when animation is complete.</param> public void Show(VisibilityTransitionType transition = VisibilityTransitionType.NONE, Action onComplete = null) { m_Pivot.localScale = Vector3.one; m_Pivot.localPosition = Vector3.zero; switch (transition) { case VisibilityTransitionType.NONE: gameObject.SetActive(true); break; case VisibilityTransitionType.UP: m_Pivot.transform.localPosition -= Vector3.up * m_Radius; m_Pivot.transform.localScale = Vector3.zero; gameObject.SetActive(true); m_Pivot .DOLocalMoveY(0f, m_VisibilityTransitionDuration) .SetEase(m_VisibilityTransitionEasing); m_Pivot .DOScale(1f, m_VisibilityTransitionDuration) .SetEase(m_ShowTransitionCurve) .OnComplete(() => { if (onShow != null) { onShow.Invoke(this); } if (onComplete != null) { onComplete.Invoke(); } }); break; case VisibilityTransitionType.DOWN: m_Pivot.transform.localPosition += Vector3.up * m_Radius; m_Pivot.transform.localScale = Vector3.zero; gameObject.SetActive(true); m_Pivot .DOLocalMoveY(0f, m_VisibilityTransitionDuration) .SetEase(m_VisibilityTransitionEasing); m_Pivot .DOScale(1f, m_VisibilityTransitionDuration) .SetEase(m_ShowTransitionCurve) .OnComplete(() => { if (onShow != null) { onShow.Invoke(this); } if (onComplete != null) { onComplete.Invoke(); } }); break; } }