private void UpdateAnimSize() { if (!m_AnimSize) { return; } float animDeltaTime = Time.realtimeSinceStartup - m_AnimSizeStartTime; if (animDeltaTime < animDuration) { Vector3 tempVector3 = scaledRectTransform.localScale; tempVector3.x = Tween.CubeInOut(m_AnimSizeCurrentSize, m_AnimSizeTargetSize, animDeltaTime, animDuration); tempVector3.y = tempVector3.x; tempVector3.z = tempVector3.x; scaledRectTransform.localScale = tempVector3; } else { Vector3 tempVector3 = scaledRectTransform.localScale; tempVector3.x = m_AnimSizeTargetSize; tempVector3.y = tempVector3.x; tempVector3.z = tempVector3.x; scaledRectTransform.localScale = tempVector3; m_AnimSize = false; if (m_AnimSizeTargetSize == 0f) { gameObject.SetActive(false); } } }
private void UpdateAnimColor() { if (m_BackgroundImage == null) { return; } if (!m_AnimColor) { return; } float deltaTime = Time.realtimeSinceStartup - m_AnimColorStartTime; if (deltaTime < animDuration) { barImage.color = Tween.CubeInOut(m_AnimColorCurrentColor, m_AnimColorTargetColor, deltaTime, animDuration); m_BackgroundImage.color = barImage.color; } else { barImage.color = m_AnimColorTargetColor; m_BackgroundImage.color = barImage.color; m_AnimColor = false; } }
void Update() { m_AnimDeltaTime = Time.realtimeSinceStartup - m_AnimStartTime; if (m_State == 1) { if (m_AnimDeltaTime < m_AnimSpeed) { m_TempVec2 = m_RectTransform.position; m_TempVec2.y = Tween.CubeOut(m_CurrentPosition, m_OnPos.y, m_AnimDeltaTime, m_AnimSpeed); m_RectTransform.position = m_TempVec2; m_CanvasGroup.alpha = Tween.CubeInOut(m_CanvasGroup.alpha, 1f, m_AnimDeltaTime, m_AnimSpeed); if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos + (m_RectTransform.position.y - m_OffPos.y), m_FabRectTransform.position.z); } } else { m_RectTransform.position = m_OnPos; if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos + (m_RectTransform.position.y - m_OffPos.y), m_FabRectTransform.position.z); } StartCoroutine(WaitTime()); m_State = 0; } } else if (m_State == 2) { if (m_AnimDeltaTime < m_AnimSpeed) { m_TempVec2 = m_RectTransform.position; m_TempVec2.y = Tween.CubeInOut(m_CurrentPosition, m_OffPos.y, m_AnimDeltaTime, m_AnimSpeed); m_RectTransform.position = m_TempVec2; m_CanvasGroup.alpha = Tween.CubeIn(m_CanvasGroup.alpha, m_OffAlpha, m_AnimDeltaTime, m_AnimSpeed); if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos + (m_RectTransform.position.y - m_OffPos.y), m_FabRectTransform.position.z); } } else { if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos, m_FabRectTransform.position.z); } m_State = 0; OnAnimDone(); } } }
private void UpdateAnimSize() { if (!m_AnimSize) { return; } Kyub.Performance.SustainedPerformanceManager.Refresh(this); if (m_AnimSizeStartTime < 0) { m_AnimSizeStartTime = Time.realtimeSinceStartup; } float animDeltaTime = Time.realtimeSinceStartup - m_AnimSizeStartTime; if (animDeltaTime < animDuration) { Vector3 tempVector3 = scaledRectTransform.localScale; tempVector3.x = Tween.CubeInOut(m_AnimSizeCurrentSize, m_AnimSizeTargetSize, animDeltaTime, animDuration); tempVector3.y = tempVector3.x; tempVector3.z = tempVector3.x; scaledRectTransform.localScale = tempVector3; } else { Vector3 tempVector3 = scaledRectTransform.localScale; tempVector3.x = m_AnimSizeTargetSize; tempVector3.y = tempVector3.x; tempVector3.z = tempVector3.x; scaledRectTransform.localScale = tempVector3; m_AnimSize = false; if (m_AnimSizeTargetSize == 0f) { gameObject.SetActive(false); HandleOnHideAnimationFinished(); } else { HandleOnShowAnimationFinished(); } } }
private void UpdateAnimColor() { if (!m_AnimColor) { return; } float animDeltaTime = Time.realtimeSinceStartup - m_AnimColorStartTime; if (animDeltaTime < animDuration) { circleIcon.color = Tween.CubeInOut(m_AnimColorCurrentColor, m_AnimColorTargetColor, animDeltaTime, animDuration); } else { circleIcon.color = m_AnimColorTargetColor; m_AnimColor = false; } }
private void UpdateAnimCircle() { if (circleImage == null) { return; } if (m_AnimCircle == 0) { return; } if (m_AnimCircle == 1) { float animDeltaTime = Time.realtimeSinceStartup - m_AnimCircleStartTime; if (animDeltaTime < animDuration) { circleImage.fillAmount = Tween.CubeInOut(m_AnimCircleCurrentFillAmount, 0.75f, animDeltaTime, animDuration); } else { m_AnimCircleCurrentFillAmount = 0.75f; circleImage.fillAmount = 0.75f; FlipCircle(false); m_AnimCircleStartTime = Time.realtimeSinceStartup; m_AnimCircle = 2; } m_CircleRectTransform.localEulerAngles = new Vector3(m_CircleRectTransform.localEulerAngles.x, m_CircleRectTransform.localEulerAngles.y, m_CircleRectTransform.localEulerAngles.z - Time.unscaledDeltaTime * 200f); return; } if (m_AnimCircle == 2) { float animDeltaTime = Time.realtimeSinceStartup - m_AnimCircleStartTime; if (animDeltaTime < animDuration) { circleImage.fillAmount = Tween.CubeInOut(m_AnimCircleCurrentFillAmount, 0.1f, animDeltaTime, animDuration); } else { m_AnimCircleCurrentFillAmount = 0.1f; circleImage.fillAmount = 0.1f; FlipCircle(true); m_AnimCircleStartTime = Time.realtimeSinceStartup; m_AnimCircle = 1; } m_CircleRectTransform.localEulerAngles = new Vector3(m_CircleRectTransform.localEulerAngles.x, m_CircleRectTransform.localEulerAngles.y, m_CircleRectTransform.localEulerAngles.z - Time.unscaledDeltaTime * 200f); return; } if (m_AnimCircle == 3) { float animDeltaTime = Time.realtimeSinceStartup - m_AnimCircleStartTime; if (animDeltaTime < animDuration) { circleImage.fillAmount = Tween.CubeInOut(m_AnimCircleCurrentFillAmount, m_CurrentProgress, animDeltaTime, animDuration); Vector3 tempVector3 = m_CircleRectTransform.localEulerAngles; tempVector3.z = Tween.CubeInOut(m_AnimCircleCurrentRotation, 0f, animDeltaTime, animDuration); m_CircleRectTransform.localEulerAngles = tempVector3; } else { m_AnimCircleCurrentFillAmount = circleImage.fillAmount = m_CurrentProgress; Vector3 tempVector3 = m_CircleRectTransform.localEulerAngles; tempVector3.z = 0f; m_CircleRectTransform.localEulerAngles = tempVector3; m_AnimCircleStartTime = Time.realtimeSinceStartup; m_AnimCircle = 0; } } }
protected virtual void Update() { if (m_State > 0) { if (m_AnimStartTime < 0) { m_AnimStartTime = Time.realtimeSinceStartup; } m_AnimDeltaTime = Time.realtimeSinceStartup - m_AnimStartTime; var v_onWorldPos = m_TargetTransform != null?m_TargetTransform.TransformPoint((Vector3)m_InPos) : m_InPos; var v_offWorldPos = m_TargetTransform != null?m_TargetTransform.TransformPoint((Vector3)m_OutPos) : m_OutPos; Kyub.Performance.SustainedPerformanceManager.Refresh(this); if (m_CurrentWaitTime >= 0) { return; } if (m_State == 1) { if (m_AnimDeltaTime < m_AnimSpeed) { m_TempVec2 = m_RectTransform.position; m_TempVec2.y = Tween.CubeOut(m_CurrentPosition, v_onWorldPos.y, m_AnimDeltaTime, m_AnimSpeed); m_RectTransform.position = m_TempVec2; SetLocalPositionZ(m_RectTransform, 0); m_CanvasGroup.alpha = Tween.CubeInOut(m_CanvasGroup.alpha, 1f, m_AnimDeltaTime, m_AnimSpeed); if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos + (m_RectTransform.position.y - v_offWorldPos.y), m_FabRectTransform.position.z); SetLocalPositionZ(m_FabRectTransform, 0); } } else { m_RectTransform.position = v_onWorldPos; SetLocalPositionZ(m_RectTransform, 0); if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos + (m_RectTransform.position.y - v_offWorldPos.y), m_FabRectTransform.position.z); SetLocalPositionZ(m_FabRectTransform, 0); } StartCoroutine(WaitTime()); m_State = 3; } } else if (m_State == 2) { if (m_AnimDeltaTime < m_AnimSpeed) { m_TempVec2 = m_RectTransform.position; m_TempVec2.y = Tween.CubeInOut(m_CurrentPosition, v_offWorldPos.y, m_AnimDeltaTime, m_AnimSpeed); m_RectTransform.position = m_TempVec2; SetLocalPositionZ(m_RectTransform, 0); m_CanvasGroup.alpha = Tween.CubeIn(m_CanvasGroup.alpha, m_OutAlpha, m_AnimDeltaTime, m_AnimSpeed); if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos + (m_RectTransform.position.y - v_offWorldPos.y), m_FabRectTransform.position.z); SetLocalPositionZ(m_FabRectTransform, 0); } } else { if (m_MoveFab) { m_FabRectTransform.position = new Vector3(m_FabRectTransform.position.x, m_FabStartPos, m_FabRectTransform.position.z); SetLocalPositionZ(m_FabRectTransform, 0); } m_State = 0; OnAnimDone(); } } } }
private void UpdateAnimBar() { if (rectTransform == null) { return; } if (m_AnimBar == 0) { return; } float deltaTime = Time.realtimeSinceStartup - m_AnimBarStartTime; m_BarLength = rectTransform.GetProperSize().x; if (m_AnimBar == 1) { if (deltaTime < animDuration) { Vector2 tempVector2 = m_BarRectTransform.sizeDelta; tempVector2.x = Tween.CubeIn(m_AnimBarCurrentSize, m_BarLength / 2f, deltaTime, animDuration); m_BarRectTransform.sizeDelta = tempVector2; tempVector2 = m_BarRectTransform.anchoredPosition; tempVector2.x = Tween.CubeIn(m_AnimBarCurrentPos, m_BarLength / 4f, deltaTime, animDuration); m_BarRectTransform.anchoredPosition = tempVector2; } else { Vector2 tempVector2 = m_BarRectTransform.sizeDelta; tempVector2.x = m_BarLength / 2f; m_BarRectTransform.sizeDelta = tempVector2; tempVector2 = m_BarRectTransform.anchoredPosition; tempVector2.x = m_BarLength / 4f; m_BarRectTransform.anchoredPosition = tempVector2; m_AnimBarCurrentSize = m_BarRectTransform.sizeDelta.x; m_AnimBarCurrentPos = m_BarRectTransform.anchoredPosition.x; m_AnimBarStartTime = Time.realtimeSinceStartup; m_AnimBar = 2; } return; } if (m_AnimBar == 2) { if (deltaTime < animDuration) { Vector2 tempVector2 = m_BarRectTransform.sizeDelta; tempVector2.x = Tween.CubeOut(m_AnimBarCurrentSize, 0f, deltaTime, animDuration); m_BarRectTransform.sizeDelta = tempVector2; tempVector2 = m_BarRectTransform.anchoredPosition; tempVector2.x = Tween.CubeOut(m_AnimBarCurrentPos, m_BarLength, deltaTime, animDuration); m_BarRectTransform.anchoredPosition = tempVector2; } else { Vector2 tempVector2 = m_BarRectTransform.sizeDelta; tempVector2.x = 0f; m_BarRectTransform.sizeDelta = tempVector2; tempVector2 = m_BarRectTransform.anchoredPosition; tempVector2.x = 0f; m_BarRectTransform.anchoredPosition = tempVector2; m_AnimBarCurrentSize = m_BarRectTransform.sizeDelta.x; m_AnimBarCurrentPos = m_BarRectTransform.anchoredPosition.x; m_AnimBarStartTime = Time.realtimeSinceStartup; m_AnimBar = 1; } return; } if (m_AnimBar == 3) { if (deltaTime < animDuration && Application.isPlaying) { Vector2 tempVector2 = m_BarRectTransform.sizeDelta; tempVector2.x = Tween.CubeInOut(m_AnimBarCurrentSize, m_AnimBarTargetSize, deltaTime, animDuration); m_BarRectTransform.sizeDelta = tempVector2; tempVector2 = m_BarRectTransform.anchoredPosition; tempVector2.x = Tween.CubeInOut(m_AnimBarCurrentPos, 0f, deltaTime, animDuration); m_BarRectTransform.anchoredPosition = tempVector2; } else { Vector2 tempVector2 = m_BarRectTransform.sizeDelta; tempVector2.x = m_AnimBarTargetSize; m_BarRectTransform.sizeDelta = tempVector2; tempVector2 = m_BarRectTransform.anchoredPosition; tempVector2.x = 0f; m_BarRectTransform.anchoredPosition = tempVector2; m_AnimBar = 0; } } }
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); } }