/// <summary> /// Animates the slider to the 'on' state. /// </summary> private void AnimateOn() { TweenManager.EndTween(m_HandleSizeTweener); TweenManager.EndTween(m_PopupScaleTweener); TweenManager.EndTween(m_HandlePositionYTweener); TweenManager.EndTween(m_PopupTextColorTweener); if (m_HasPopup) { m_HandleSizeTweener = TweenManager.TweenVector2(vector2 => handleGraphicTransform.sizeDelta = vector2, handleGraphicTransform.sizeDelta, new Vector2(38, 38), m_AnimationDuration, 0f, null, false, Tween.TweenType.SoftEaseOutQuint); m_HandlePositionYTweener = TweenManager.TweenFloat( f => handleGraphicTransform.anchoredPosition = new Vector2(handleGraphicTransform.anchoredPosition.x, f), handleGraphicTransform.anchoredPosition.y, slider.wholeNumbers && m_HasDots ? 36 : 30, m_AnimationDuration, 0, null, false, Tween.TweenType.EaseOutSept); m_PopupScaleTweener = TweenManager.TweenVector3(vector3 => m_PopupTransform.localScale = vector3, m_PopupTransform.localScale, Vector3.one, m_AnimationDuration, 0, null, false, Tween.TweenType.EaseOutSept); } else { m_HandleSizeTweener = TweenManager.TweenVector2(vector2 => handleGraphicTransform.sizeDelta = vector2, handleGraphicTransform.sizeDelta, new Vector2(24, 24), m_AnimationDuration, 0, null, false, Tween.TweenType.SoftEaseOutQuint); } m_PopupTextColorTweener = TweenManager.TweenColor(color => m_PopupText.color = color, () => m_PopupText.color, () => m_PopupText.color.WithAlpha(1f), m_AnimationDuration * 0.66f, m_AnimationDuration * 0.33f); }
public override void Tween(BaseStyleElement p_sender, bool p_canAnimate, float p_animationDuration) { TweenManager.EndTween(_tweenId); var v_graphic = GetTarget <Graphic>(); if (v_graphic != null) { var v_endColor = m_color; if (p_canAnimate && Application.isPlaying) { _tweenId = TweenManager.TweenColor( (color) => { if (v_graphic != null) { v_graphic.color = color; } }, v_graphic.color, v_endColor, p_animationDuration ); } else { v_graphic.color = v_endColor; } } }
/// <summary> /// Animates the slider to the 'off' state. /// </summary> private void AnimateOff() { TweenManager.EndTween(m_HandleSizeTweener); TweenManager.EndTween(m_PopupScaleTweener); TweenManager.EndTween(m_HandlePositionYTweener); TweenManager.EndTween(m_PopupTextColorTweener); if (m_HasPopup) { m_HandlePositionYTweener = TweenManager.TweenFloat( f => handleGraphicTransform.anchoredPosition = new Vector2(handleGraphicTransform.anchoredPosition.x, f), handleGraphicTransform.anchoredPosition.y, MaterialUIScaler.GetRootScaler(transform).canvas.pixelPerfect ? 1f : 0f, m_AnimationDuration, 0, null, false, Tween.TweenType.EaseOutCubed); m_PopupScaleTweener = TweenManager.TweenVector3(vector3 => m_PopupTransform.localScale = vector3, m_PopupTransform.localScale, Vector3.zero, m_AnimationDuration); } m_HandleSizeTweener = TweenManager.TweenVector2(vector2 => handleGraphicTransform.sizeDelta = vector2, handleGraphicTransform.sizeDelta, new Vector2(16, 16), m_AnimationDuration, 0, null, false, Tween.TweenType.EaseOutSept); m_PopupTextColorTweener = TweenManager.TweenColor(color => m_PopupText.color = color, m_PopupText.color, m_PopupText.color.WithAlpha(0f), m_AnimationDuration * 0.25f); }
public override void Tween(BaseStyleElement p_sender, bool p_canAnimate, float p_animationDuration) { TweenManager.EndTween(_tweenId); var v_graphic = GetTarget <Graphic>(); if (v_graphic != null) { var v_slider = p_sender as MaterialSlider; var v_isInteractable = v_slider != null ? v_slider.m_Interactable : true; var v_endColor = !v_isInteractable ? m_colorDisabled : m_colorEnabled; if (p_canAnimate && Application.isPlaying) { _tweenId = TweenManager.TweenColor( (color) => { if (v_graphic != null) { v_graphic.color = color; } }, v_graphic.color, v_endColor, p_animationDuration ); } else { v_graphic.color = v_endColor; } } }
/// <summary> /// Sets the color of the button background. /// <para></para> /// If the button has a MaterialRipple, then it is used to change the graphic color in a way that doesn't interrupt the ripple's highlighting, otherwise, the graphic's color is directly changed. /// </summary> /// <param name="color">The color to set.</param> /// <param name="animate">Should the color transition smoothly? Does not animate in edit mode.</param> public void SetButtonBackgroundColor(Color color, bool animate = true) { if (m_BackgroundImage == null) { return; } if (m_MaterialRipple != null) { m_MaterialRipple.SetGraphicColor(color, animate); } else { if (animate && Application.isPlaying) { TweenManager.TweenColor(color1 => m_BackgroundImage.color = color1, m_BackgroundImage.color, color, 0.5f); } else { m_BackgroundImage.color = color; } } }
public override void Tween(BaseStyleElement p_sender, bool p_canAnimate, float p_animationDuration) { TweenManager.EndTween(_tweenId); var v_graphic = GetTarget <Graphic>(); if (v_graphic != null) { var v_toggleBase = p_sender as ToggleBase; var v_isActive = v_toggleBase != null ? v_toggleBase.toggle.isOn : true; var v_isInteractable = v_toggleBase != null? v_toggleBase.m_Interactable : true; var v_endColor = !v_isInteractable ? m_colorDisabled : (v_isActive ? m_colorOn : m_colorOff); if (p_canAnimate && Application.isPlaying) { _tweenId = TweenManager.TweenColor( (color) => { if (v_graphic != null) { v_graphic.color = color; } }, v_graphic.color, v_endColor, p_animationDuration, 0, null, false, MaterialUI.Tween.TweenType.SoftEaseOutQuint ); } else { v_graphic.color = v_endColor; } } }
private void UpdateSelectionState() { if (m_Interactable) { m_CurrentSelectionState = inputField.isFocused ? ColorSelectionState.EnabledSelected : ColorSelectionState.EnabledDeselected; if (lineImage != null) { lineImage.sprite = null; } } else { m_CurrentSelectionState = inputField.isFocused ? ColorSelectionState.DisabledSelected : ColorSelectionState.DisabledDeselected; if (lineImage != null) { lineImage.sprite = lineDisabledSprite; lineImage.type = Image.Type.Tiled; } } if (m_CurrentSelectionState != m_LastSelectionState) { m_LastSelectionState = m_CurrentSelectionState; TweenManager.EndTween(m_LeftContentTweener); if (Application.isPlaying) { if (m_LeftContentGraphic) { m_LeftContentTweener = TweenManager.TweenColor(color => m_LeftContentGraphic.color = color, m_LeftContentGraphic.color, IsSelected() ? m_LeftContentActiveColor : m_LeftContentInactiveColor, m_AnimationDuration); } } else { if (m_LeftContentGraphic) { m_LeftContentGraphic.color = IsSelected() ? m_LeftContentActiveColor : m_LeftContentInactiveColor; } } TweenManager.EndTween(m_RightContentTweener); if (Application.isPlaying) { if (m_RightContentGraphic) { m_RightContentTweener = TweenManager.TweenColor(color => m_RightContentGraphic.color = color, m_RightContentGraphic.color, IsSelected() ? m_RightContentActiveColor : m_RightContentInactiveColor, m_AnimationDuration); } } else { if (m_RightContentGraphic) { m_RightContentGraphic.color = IsSelected() ? m_RightContentActiveColor : m_RightContentInactiveColor; } } TweenManager.EndTween(m_HintTextTweener); if (Application.isPlaying) { m_HintTextTweener = TweenManager.TweenColor(color => m_HintTextObject.color = color, m_HintTextObject.color, IsSelected() ? m_HintTextActiveColor : m_HintTextInactiveColor, m_AnimationDuration); } else { m_HintTextObject.color = IsSelected() ? m_HintTextActiveColor : m_HintTextInactiveColor; } TweenManager.EndTween(m_CounterTweener); if (Application.isPlaying) { m_CounterTweener = TweenManager.TweenColor(color => m_CounterText.color = color, m_CounterText.color, IsSelected() ? m_CounterActiveColor : m_CounterInactiveColor, m_AnimationDuration); } else { try { m_CounterText.color = IsSelected() ? m_CounterActiveColor : m_CounterInactiveColor; } catch { Debug.LogWarning("MaterialInputField:1127"); } } TweenManager.EndTween(m_ValidationColorTweener); if (Application.isPlaying) { m_ValidationColorTweener = TweenManager.TweenColor(color => m_ValidationText.color = color, m_ValidationText.color, IsSelected() ? m_ValidationActiveColor : m_ValidationInactiveColor, m_AnimationDuration); } else { m_ValidationText.color = IsSelected() ? m_ValidationActiveColor : m_ValidationInactiveColor; } m_LineTransform.GetComponent <Graphic>().color = m_LineInactiveColor; m_ActiveLineTransform.GetComponent <Graphic>().color = m_LineActiveColor; canvasGroup.alpha = m_Interactable ? 1 : 0.5f; canvasGroup.interactable = m_Interactable; canvasGroup.blocksRaycasts = m_Interactable; } }
public void Hide() { m_Shadow = m_PanelShadowCanvasGroup != null; if (m_FinalExpandMode != ExpandMode.Rectangular) { m_MaskRect = rippleMask; m_MaskRect.SetParentAndScale(m_PanelRootRectTransform.parent, Vector3.one); RippleData rippleData = new RippleData { RippleParent = m_MaskRect, Shadow = m_RippleHasShadow }; m_Ripple = RippleManager.instance.GetRipple(); m_Ripple.Setup(rippleData, m_MaskRect.position, null); m_Ripple.rectTransform.localScale = Vector3.one; m_Ripple.rectTransform.sizeDelta = m_BaseRectTransform.sizeDelta; m_Ripple.color = Color.white; m_Ripple.canvasGroup.alpha = 1f; m_Ripple.SubmitSizeForSoftening(); m_CircleExpandedSize = Mathf.Sqrt(Mathf.Pow(Tween.QuintOut(0f, m_ExpandedSize.x, 1f, 0.5f), 2) + Mathf.Pow(Tween.QuintOut(0f, m_ExpandedSize.y, 1f, 0.5f), 2)); } if (m_FinalExpandMode != ExpandMode.Radial) { m_WidthDuration = 1f; m_HeightDuration = 1f; if (m_ExpandedSize.x > m_ExpandedSize.y) { m_HeightDuration = (2 * (m_ExpandedSize.y / m_ExpandedSize.x) + 1f) / 3f; } else if (m_ExpandedSize.x < m_ExpandedSize.y) { m_WidthDuration = (2 * (m_ExpandedSize.x / m_ExpandedSize.y) + 1f) / 3f; } } if (m_FinalExpandMode == ExpandMode.Radial) { m_PanelRootRectTransform.SetPositionRegardlessOfPivot(expandedPosition); m_PanelRootRectTransform.sizeDelta = expandedSize; TweenManager.TweenFloat(f => { m_MaskRect.sizeDelta = m_PanelRootRectTransform.sizeDelta; m_MaskRect.position = m_PanelRootRectTransform.GetPositionRegardlessOfPivot(); m_Ripple.rectTransform.sizeDelta = Tween.QuintSoftOut(new Vector2(m_CircleExpandedSize, m_CircleExpandedSize), m_BaseRectTransform.sizeDelta, f, 1f); m_Ripple.rectTransform.position = Tween.QuintSoftOut(m_PanelRootRectTransform.GetPositionRegardlessOfPivot(), m_BaseRectTransform.GetPositionRegardlessOfPivot(), f, 1f); m_Ripple.SubmitSizeForSoftening(); if (m_Shadow) { m_PanelShadowCanvasGroup.alpha = Tween.QuintOut(1f, 0f, f, 0.5f); } m_PanelContentCanvasGroup.alpha = Tween.QuintOut(1f, 0f, f, 0.5f); m_Ripple.color = m_Ripple.color.WithAlpha(Tween.QuintSoftOut(1f, 0f, f - 0.8f, 0.2f)); }, 0f, 1f, m_AnimationDuration, tweenType: Tween.TweenType.Linear); TweenManager.TimedCallback(m_AnimationDuration, m_Ripple.InstantContract); TweenManager.TimedCallback(m_AnimationDuration * 0.5f, () => m_BaseRectTransform.gameObject.SetActive(true)); } else if (m_FinalExpandMode == ExpandMode.Rectangular) { TweenManager.TweenFloat(f => { if (m_ExpandedPosition.y > m_BaseRectTransform.position.y) { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintInOut(expandedSize.x, m_BaseRectTransform.sizeDelta.x, f, m_WidthDuration), Tween.QuintSoftOut(expandedSize.y, m_BaseRectTransform.sizeDelta.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintInOut(expandedPosition.x, m_BaseRectTransform.GetPositionRegardlessOfPivot().x, f, m_WidthDuration), Tween.QuintSoftOut(expandedPosition.y, m_BaseRectTransform.GetPositionRegardlessOfPivot().y, f, m_HeightDuration))); } else { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintSoftOut(expandedSize.x, m_BaseRectTransform.sizeDelta.x, f, m_WidthDuration), Tween.QuintInOut(expandedSize.y, m_BaseRectTransform.sizeDelta.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintSoftOut(expandedPosition.x, m_BaseRectTransform.GetPositionRegardlessOfPivot().x, f, m_WidthDuration), Tween.QuintInOut(expandedPosition.y, m_BaseRectTransform.GetPositionRegardlessOfPivot().y, f, m_HeightDuration))); } if (m_Shadow) { m_PanelShadowCanvasGroup.alpha = Tween.QuintOut(1f, 0f, f - 0.75f, 0.25f); } m_PanelContentCanvasGroup.alpha = Tween.QuintSoftOut(1f, 0f, f, 0.25f); }, 0f, 1f, m_AnimationDuration, tweenType: Tween.TweenType.Linear); TweenManager.TimedCallback(m_AnimationDuration * 0.7f, () => m_BaseRectTransform.gameObject.SetActive(true)); } else if (m_FinalExpandMode == ExpandMode.Hybrid) { Vector2 endPos = m_BaseRectTransform.GetPositionRegardlessOfPivot(); TweenManager.TweenFloat(f => { if (m_ExpandedPosition.y > m_BaseRectTransform.position.y) { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintInOut(expandedSize.x, m_BaseRectTransform.sizeDelta.x, f, m_WidthDuration), Tween.QuintSoftOut(expandedSize.y, m_BaseRectTransform.sizeDelta.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintInOut(expandedPosition.x, endPos.x, f, m_WidthDuration), Tween.QuintSoftOut(expandedPosition.y, endPos.y, f, m_HeightDuration))); } else { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintSoftOut(expandedSize.x, m_BaseRectTransform.sizeDelta.x, f, m_WidthDuration), Tween.QuintInOut(expandedSize.y, m_BaseRectTransform.sizeDelta.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintSoftOut(expandedPosition.x, endPos.x, f, m_WidthDuration), Tween.QuintInOut(expandedPosition.y, endPos.y, f, m_HeightDuration))); } m_MaskRect.sizeDelta = m_PanelRootRectTransform.sizeDelta; m_MaskRect.position = m_PanelRootRectTransform.GetPositionRegardlessOfPivot(); m_Ripple.rectTransform.sizeDelta = Tween.QuintSoftOut(new Vector2(m_CircleExpandedSize, m_CircleExpandedSize), m_BaseRectTransform.sizeDelta, f, Mathf.Min(m_WidthDuration, m_HeightDuration)); m_Ripple.rectTransform.anchoredPosition = Vector2.zero; m_Ripple.SubmitSizeForSoftening(); if (m_Shadow) { m_PanelShadowCanvasGroup.alpha = Tween.QuintOut(1f, 0f, f, 0.15f); } m_PanelContentCanvasGroup.alpha = Tween.QuintOut(1f, 0f, f, 0.15f); m_Ripple.color = m_Ripple.color.WithAlpha(Tween.QuintSoftOut(1f, 0f, f - 0.8f, 0.2f)); }, 0f, 1f, m_AnimationDuration, tweenType: Tween.TweenType.Linear); TweenManager.TimedCallback(m_AnimationDuration, m_Ripple.InstantContract); TweenManager.TimedCallback(m_AnimationDuration * 0.8f, () => m_BaseRectTransform.gameObject.SetActive(true)); } if (m_DarkenBackground) { TweenManager.TweenColor(color => m_BackgroundImage.color = color, m_BackgroundImage.color, Color.clear, m_AnimationDuration * 0.5f, m_AnimationDuration * 0.5f, () => m_ClickableBackground.gameObject.SetActive(false), tweenType: Tween.TweenType.EaseInOutCubed); } TweenManager.TimedCallback(m_AnimationDuration, () => m_PanelRootRectTransform.gameObject.SetActive(false)); }
public void Show() { m_PanelRootRectTransform.gameObject.SetActive(true); if (!m_HasExpandedInfo) { if (m_AutoExpandedPosition) { m_ExpandedPosition = m_PanelRootRectTransform.GetPositionRegardlessOfPivot(); } if (m_AutoExpandedSize) { m_ExpandedSize = m_PanelRootRectTransform.sizeDelta; } CalculateExpandMode(); m_HasExpandedInfo = true; } if (m_DarkenBackground || m_ClickBackgroundToClose) { if (m_ClickableBackground == null) { m_ClickableBackground = PrefabManager.InstantiateGameObject(PrefabManager.ResourcePrefabs.clickableBackground, m_PanelRootRectTransform.parent).GetAddComponent <RectTransform>(); m_ClickableBackground.SetSiblingIndex(m_PanelRootRectTransform.GetSiblingIndex()); m_BackgroundImage = m_ClickableBackground.gameObject.GetComponent <Image>(); m_BackgroundTrigger = m_ClickableBackground.gameObject.GetComponent <EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.callback.AddListener(baseEventData => OnBackgroundClick()); m_BackgroundTrigger.triggers.Add(entry); } m_ClickableBackground.sizeDelta = new Vector2(10000, 10000); m_ClickableBackground.anchoredPosition = m_ExpandedPosition; m_BackgroundImage.color = Color.clear; m_ClickableBackground.gameObject.SetActive(true); } m_PanelContentCanvasGroup.alpha = 0f; if (m_RippleHasShadow && m_PanelShadowCanvasGroup != null) { m_PanelShadowCanvasGroup.alpha = 0f; } if (m_FinalExpandMode != ExpandMode.Rectangular) { m_MaskRect = rippleMask; m_MaskRect.SetParentAndScale(m_PanelRootRectTransform.parent, Vector3.one); RippleData rippleData = new RippleData { RippleParent = m_MaskRect, Shadow = m_RippleHasShadow }; m_Ripple = RippleManager.instance.GetRipple(); m_Ripple.Setup(rippleData, m_MaskRect.position, null); m_Ripple.rectTransform.localScale = Vector3.one; m_Ripple.rectTransform.sizeDelta = m_BaseRectTransform.sizeDelta; m_Ripple.color = Color.white; m_Ripple.canvasGroup.alpha = 1f; m_Ripple.SubmitSizeForSoftening(); m_CircleExpandedSize = Mathf.Sqrt(Mathf.Pow(Tween.QuintOut(0f, m_ExpandedSize.x, 1f, 0.5f), 2) + Mathf.Pow(Tween.QuintOut(0f, m_ExpandedSize.y, 1f, 0.5f), 2)); } if (m_FinalExpandMode != ExpandMode.Radial) { m_WidthDuration = 1f; m_HeightDuration = 1f; if (m_ExpandedSize.x > m_ExpandedSize.y) { m_HeightDuration = (2 * (m_ExpandedSize.y / m_ExpandedSize.x) + 1f) / 3f; } else if (m_ExpandedSize.x < m_ExpandedSize.y) { m_WidthDuration = (2 * (m_ExpandedSize.x / m_ExpandedSize.y) + 1f) / 3f; } } m_BaseRectTransform.gameObject.SetActive(false); m_Shadow = m_PanelShadowCanvasGroup != null; if (m_FinalExpandMode == ExpandMode.Radial) { m_PanelRootRectTransform.SetPositionRegardlessOfPivot(expandedPosition); m_PanelRootRectTransform.sizeDelta = expandedSize; TweenManager.TweenFloat(f => { m_MaskRect.sizeDelta = m_PanelRootRectTransform.sizeDelta; m_MaskRect.position = m_PanelRootRectTransform.GetPositionRegardlessOfPivot(); m_Ripple.rectTransform.sizeDelta = Tween.CubeSoftOut(m_Ripple.rectTransform.sizeDelta, new Vector2(m_CircleExpandedSize, m_CircleExpandedSize), f, 1f); m_Ripple.rectTransform.position = Tween.CubeSoftOut(m_BaseRectTransform.GetPositionRegardlessOfPivot(), m_PanelRootRectTransform.GetPositionRegardlessOfPivot(), f, 1f); m_Ripple.SubmitSizeForSoftening(); if (m_Shadow) { m_PanelShadowCanvasGroup.alpha = Tween.CubeInOut(0f, 1f, f - 0.5f, 0.5f); } m_PanelContentCanvasGroup.alpha = Tween.CubeInOut(0f, 1f, f - 0.5f, 0.25f); m_Ripple.color = m_Ripple.color.WithAlpha(Tween.CubeInOut(1f, 0f, f - 0.5f, 0.5f)); }, 0f, 1f, m_AnimationDuration, tweenType: Tween.TweenType.Linear); TweenManager.TimedCallback(m_AnimationDuration, m_Ripple.InstantContract); } else if (m_FinalExpandMode == ExpandMode.Rectangular) { TweenManager.TweenFloat(f => { if (m_ExpandedPosition.y > m_BaseRectTransform.position.y) { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintOut(m_BaseRectTransform.sizeDelta.x, expandedSize.x, f, m_WidthDuration), Tween.QuintSoftOut(m_BaseRectTransform.sizeDelta.y, expandedSize.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintOut(m_BaseRectTransform.GetPositionRegardlessOfPivot().x, expandedPosition.x, f, m_WidthDuration), Tween.QuintSoftOut(m_BaseRectTransform.GetPositionRegardlessOfPivot().y, expandedPosition.y, f, m_HeightDuration))); } else { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintSoftOut(m_BaseRectTransform.sizeDelta.x, expandedSize.x, f, m_WidthDuration), Tween.QuintOut(m_BaseRectTransform.sizeDelta.y, expandedSize.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintSoftOut(m_BaseRectTransform.GetPositionRegardlessOfPivot().x, expandedPosition.x, f, m_WidthDuration), Tween.QuintOut(m_BaseRectTransform.GetPositionRegardlessOfPivot().y, expandedPosition.y, f, m_HeightDuration))); } if (m_Shadow) { m_PanelShadowCanvasGroup.alpha = Tween.QuintOut(0f, 1f, f, 0.25f); } m_PanelContentCanvasGroup.alpha = Tween.QuintInOut(0f, 1f, f - 0.5f, 0.5f); }, 0f, 1f, m_AnimationDuration, tweenType: Tween.TweenType.Linear); } else if (m_FinalExpandMode == ExpandMode.Hybrid) { Vector2 startPos = m_BaseRectTransform.GetPositionRegardlessOfPivot(); m_PanelRootRectTransform.sizeDelta = m_BaseRectTransform.sizeDelta; m_PanelRootRectTransform.SetPositionRegardlessOfPivot(m_BaseRectTransform.GetPositionRegardlessOfPivot()); TweenManager.TweenFloat(f => { if (m_ExpandedPosition.y > m_BaseRectTransform.position.y) { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintOut(m_BaseRectTransform.sizeDelta.x, expandedSize.x, f, m_WidthDuration), Tween.QuintSoftOut(m_BaseRectTransform.sizeDelta.y, expandedSize.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintOut(startPos.x, expandedPosition.x, f, m_WidthDuration), Tween.QuintSoftOut(startPos.y, expandedPosition.y, f, m_HeightDuration))); } else { m_PanelRootRectTransform.sizeDelta = new Vector2( Tween.QuintSoftOut(m_BaseRectTransform.sizeDelta.x, expandedSize.x, f, m_WidthDuration), Tween.QuintOut(m_BaseRectTransform.sizeDelta.y, expandedSize.y, f, m_HeightDuration)); m_PanelRootRectTransform.SetPositionRegardlessOfPivot(new Vector2( Tween.QuintSoftOut(startPos.x, expandedPosition.x, f, m_WidthDuration), Tween.QuintOut(startPos.y, expandedPosition.y, f, m_HeightDuration))); } m_MaskRect.sizeDelta = m_PanelRootRectTransform.sizeDelta; m_MaskRect.position = m_PanelRootRectTransform.GetPositionRegardlessOfPivot(); m_Ripple.rectTransform.sizeDelta = Tween.CubeSoftOut(m_Ripple.rectTransform.sizeDelta, new Vector2(m_CircleExpandedSize, m_CircleExpandedSize), f - 0.2f, 1f); m_Ripple.rectTransform.anchoredPosition = Vector2.zero; m_Ripple.SubmitSizeForSoftening(); if (m_Shadow) { m_PanelShadowCanvasGroup.alpha = Tween.CubeInOut(0f, 1f, f - 0.4f, 0.6f); } m_PanelContentCanvasGroup.alpha = Tween.CubeInOut(0f, 1f, f - 0.4f, 0.3f); m_Ripple.color = m_Ripple.color.WithAlpha(Tween.CubeInOut(1f, 0f, f - 0.5f, 0.5f)); }, 0f, 1f, m_AnimationDuration, tweenType: Tween.TweenType.Linear); if (m_DarkenBackground) { TweenManager.TweenColor(color => m_BackgroundImage.color = color, m_BackgroundImage.color, MaterialColor.disabledDark, m_AnimationDuration * 0.5f, m_AnimationDuration * 0.5f, tweenType: Tween.TweenType.EaseInOutCubed); } TweenManager.TimedCallback(m_AnimationDuration * 0.7f, m_Ripple.InstantContract); } }