public void UpdateTransition(float deltaTime) { if (transitionElapsed < transitionDuration) { transitionElapsed += deltaTime; if (transitionElapsed >= transitionDuration) { currentLightingSettings = targetLightingSettings; currentRenderSettings = targetRenderSettings; currentSunlightSettings = targetSunlightSettings; ApplySettings(); return; } } float transitionProgress = Mathf.Clamp01(transitionElapsed / transitionDuration); switch (transitionType) { case LightingSceneTransitionType.None: break; case LightingSceneTransitionType.CrossFade: // Just do a straightforward lerp from one setting to the other currentLightingSettings = RuntimeLightingSettings.Lerp(prevLightingSettings, targetLightingSettings, transitionProgress); currentRenderSettings = RuntimeRenderSettings.Lerp(prevRenderSettings, targetRenderSettings, transitionProgress); currentSunlightSettings = RuntimeSunlightSettings.Lerp(prevSunlightSettings, targetSunlightSettings, transitionProgress); break; case LightingSceneTransitionType.FadeToBlack: // If we're in the first half of our transition, fade out to black if (transitionProgress < 0.5f) { float fadeOutProgress = transitionProgress / 0.5f; currentLightingSettings = RuntimeLightingSettings.Lerp( prevLightingSettings, RuntimeLightingSettings.Black(prevLightingSettings), fadeOutProgress); currentRenderSettings = RuntimeRenderSettings.Lerp( prevRenderSettings, RuntimeRenderSettings.Black(prevRenderSettings), fadeOutProgress); currentSunlightSettings = RuntimeSunlightSettings.Lerp( prevSunlightSettings, RuntimeSunlightSettings.Black(prevSunlightSettings), fadeOutProgress); } else { // If we're in the second half, fade in from black float fadeInProgress = (transitionProgress - 0.5f) / 0.5f; currentLightingSettings = RuntimeLightingSettings.Lerp( RuntimeLightingSettings.Black(targetLightingSettings), targetLightingSettings, fadeInProgress); currentRenderSettings = RuntimeRenderSettings.Lerp( RuntimeRenderSettings.Black(targetRenderSettings), targetRenderSettings, fadeInProgress); currentSunlightSettings = RuntimeSunlightSettings.Lerp( RuntimeSunlightSettings.Black(targetSunlightSettings), targetSunlightSettings, fadeInProgress); } break; } ApplySettings(); }