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();
            }