private void UpdateCameraGlare() { float timeScale = Singleton <LevelManager> .Instance.levelEntity.TimeScale; if (timeScale != 0f) { float num2 = 1f; LinkedListNode <CameraGlareArgument> node = null; LinkedListNode <CameraGlareArgument> first = this._camGlareArgs.First; while (first != null) { node = first; first = node.Next; CameraGlareArgument argument = node.Value; if (argument.state == CameraGlareState.Idle) { this._camGlareArgs.Remove(argument); } else { if (argument.state == CameraGlareState.Glare) { argument.timer -= Time.deltaTime * timeScale; argument.deltaRate = (1f - (argument.timer / argument.glareTime)) * (argument.targetRate - 1f); if (argument.timer <= 0f) { argument.deltaRate = argument.targetRate - 1f; argument.timer = argument.keepTime; argument.state = CameraGlareState.Keep; } } else if (argument.state == CameraGlareState.Keep) { argument.timer -= Time.deltaTime * timeScale; if (argument.timer <= 0f) { argument.timer = argument.recoverTime; argument.state = CameraGlareState.Recover; } } else { argument.timer -= Time.deltaTime * timeScale; argument.deltaRate = (argument.timer / argument.recoverTime) * (argument.targetRate - 1f); if (argument.timer <= 0f) { argument.deltaRate = 0f; argument.state = CameraGlareState.Idle; } } num2 += argument.deltaRate; } } base.GetComponent <PostFXBase>().glareIntensity = num2 * CameraGlareArgument.originalValue; } }
public void ActGlareEffect(float glareTime, float keepTime, float recoverTime, float targetRate) { CameraGlareArgument argument; argument = new CameraGlareArgument { glareTime = glareTime, keepTime = keepTime, recoverTime = recoverTime, targetRate = targetRate, deltaRate = 0f, timer = argument.glareTime, state = CameraGlareState.Glare }; this._camGlareArgs.AddLast(argument); }