コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
        }