private static IEnumerator LocalScaleAnimationWorker(JEMInterfaceFadeAnimation window) { if (window.IsActive) { window.transform.localScale = window.OriginalScale * window.FadeInScale; while (window.transform.ScaleDistance2D(window.OriginalScale) > 0.005f) { window.transform.LerpLocalScale(window.OriginalScale, deltaTime * window.FadeSpeed); yield return(new WaitForEndOfFrame()); } window.transform.localScale = window.OriginalScale; } else { window.RectTransform.localScale = window.OriginalScale; var outScale = window.OriginalScale * window.FadeOutScale; while (window.transform.ScaleDistance2D(outScale) > 0.005f) { window.transform.LerpLocalScale(outScale, deltaTime * window.FadeSpeed); yield return(new WaitForEndOfFrame()); } window.transform.localScale = outScale; } }
private static IEnumerator DeltaScaleAnimationWorker(JEMInterfaceFadeAnimation window) { if (window.IsActive) { window.RectTransform.sizeDelta = window.OriginalSizeDelta * window.FadeInScale; while (window.RectTransform.SizeDistance(window.OriginalSizeDelta) > 1f) { window.RectTransform.sizeDelta = Vector2.LerpUnclamped(window.RectTransform.sizeDelta, window.OriginalSizeDelta, deltaTime * window.FadeSpeed); yield return(new WaitForEndOfFrame()); } window.RectTransform.sizeDelta = window.OriginalSizeDelta; } else { window.RectTransform.sizeDelta = window.OriginalSizeDelta; var outSize = window.OriginalSizeDelta * window.FadeOutScale; while (window.RectTransform.SizeDistance(outSize) > 1f) { window.RectTransform.sizeDelta = Vector2.LerpUnclamped(window.RectTransform.sizeDelta, outSize, deltaTime * window.FadeSpeed); yield return(new WaitForEndOfFrame()); } window.RectTransform.sizeDelta = outSize; } }
internal IEnumerator FadeAnimationWorker(JEMInterfaceFadeAnimation window) { if (window.IsActive) { window.gameObject.LiteSetActive(true); } else if (window == null || window.gameObject == null || !window.gameObject.activeSelf) { yield break; } var c = window.CanvasGroup; if (window.IsActive) { c.alpha = 0f; while (c.alpha < 0.995f) { c.alpha = Mathf.Lerp(c.alpha, 1f, deltaTime * window.FadeSpeed); yield return(new WaitForEndOfFrame()); } c.alpha = 1f; } else { c.alpha = 1f; while (c.alpha > 0.005f) { c.alpha = Mathf.Lerp(c.alpha, 0f, deltaTime * window.FadeSpeed); yield return(new WaitForEndOfFrame()); } c.alpha = 0f; } // No need to activate gameObject here // Activation state of object is updated in ForceActiveState tho //if (!window.IsActive) //{ // window.gameObject.LiteSetActive(false); //} // Force window just to make sure that everything is drawn. window.ForceActiveState(); // Restart current work. window.FadeWorker = null; }
internal IEnumerator ScaleAnimationWorker(JEMInterfaceFadeAnimation window) { switch (window.AnimationMode) { case JEMFadeAnimationMode.Disabled: // Animation disabled. break; case JEMFadeAnimationMode.UsingLocalScale: yield return(LocalScaleAnimationWorker(window)); break; case JEMFadeAnimationMode.UsingSizeDelta: yield return(DeltaScaleAnimationWorker(window)); break; default: throw new ArgumentOutOfRangeException(); } window.ScaleWorker = null; }