private void Update()
        {
            var animationCurve = (_targetFade <= 0f)
                                ? _fadeOutCurve
                                : _fadeInCurve;

            var fadeTime = Mathf.InverseLerp(_startFadeTime, _startFadeTime + _fadeDuration, Time.time);

            _fadeFraction = Mathf.Lerp(_startFade, _targetFade, animationCurve.Evaluate(fadeTime));

            var probeRuleSet = _probe.GetRulesetDetector().GetProbeRuleSet();

            var lanternRange = (!(probeRuleSet != null) || !probeRuleSet.GetOverrideLanternRange())
                                ? _originalRange
                                : probeRuleSet.GetLanternRange();

            _light.range = lanternRange * _fadeFraction;

            if (_emissiveRenderer != null)
            {
                _emissiveRenderer.SetEmissiveScale(_fadeFraction);
            }

            if (fadeTime >= 1f)
            {
                enabled = false;
            }
        }