コード例 #1
0
 private void Update()
 {
     if (this.volumesBlending)
     {
         this.volumesBlendAmount            = (this.volumesBlendingTime - this.volumesBlendingTimeCountdown) / this.volumesBlendingTime;
         this.volumesBlendingTimeCountdown -= Time.smoothDeltaTime;
         if (this.volumesBlendAmount >= 1f)
         {
             this.LutTexture               = this.volumesLutBlendTexture;
             this.volumesBlendAmount       = 0f;
             this.volumesBlending          = false;
             this.volumesLutBlendTexture   = null;
             this.effectVolumesBlendAdjust = 0f;
             this.currentVolumeEffects     = this.blendVolumeEffects;
             this.currentVolumeEffects.SetValues(this);
             if (this.blendingFromMidBlend && this.midBlendLUT != null)
             {
                 this.midBlendLUT.DiscardContents();
             }
             this.blendingFromMidBlend = false;
         }
     }
     else
     {
         this.volumesBlendAmount = Mathf.Clamp01(this.volumesBlendAmount);
     }
     if (this.blending)
     {
         this.BlendAmount            = (this.blendingTime - this.blendingTimeCountdown) / this.blendingTime;
         this.blendingTimeCountdown -= Time.smoothDeltaTime;
         if (this.BlendAmount >= 1f)
         {
             this.LutTexture      = this.LutBlendTexture;
             this.BlendAmount     = 0f;
             this.blending        = false;
             this.LutBlendTexture = null;
             if (this.onFinishBlend != null)
             {
                 this.onFinishBlend();
             }
         }
     }
     else
     {
         this.BlendAmount = Mathf.Clamp01(this.BlendAmount);
     }
     if (this.UseVolumes)
     {
         if (this.actualTriggerProxy == null)
         {
             GameObject gameObject = new GameObject(base.name + "+ACVolumeProxy")
             {
                 hideFlags = HideFlags.HideAndDontSave
             };
             this.actualTriggerProxy             = gameObject.AddComponent <AmplifyColorTriggerProxy>();
             this.actualTriggerProxy.OwnerEffect = this;
         }
         this.UpdateVolumes();
     }
     else if (this.actualTriggerProxy != null)
     {
         UnityEngine.Object.DestroyImmediate(this.actualTriggerProxy.gameObject);
         this.actualTriggerProxy = null;
     }
 }
コード例 #2
0
    private void UpdateVolumes()
    {
        if (this.volumesBlending)
        {
            this.currentVolumeEffects.BlendValues(this, this.blendVolumeEffects, this.effectVolumesBlendAdjusted);
        }
        Transform transform = (!(this.TriggerVolumeProxy == null)) ? this.TriggerVolumeProxy : base.transform;

        if (this.actualTriggerProxy.transform.parent != transform)
        {
            this.actualTriggerProxy.Reference        = transform;
            this.actualTriggerProxy.gameObject.layer = transform.gameObject.layer;
        }
        AmplifyColorVolumeBase amplifyColorVolumeBase = null;
        int num = -2147483648;

        foreach (AmplifyColorVolumeBase current in this.enteredVolumes)
        {
            if (current.Priority > num)
            {
                amplifyColorVolumeBase = current;
                num = current.Priority;
            }
        }
        if (amplifyColorVolumeBase != this.currentVolumeLut)
        {
            this.currentVolumeLut = amplifyColorVolumeBase;
            Texture texture = (!(amplifyColorVolumeBase == null)) ? amplifyColorVolumeBase.LutTexture : this.worldLUT;
            float   num2    = (!(amplifyColorVolumeBase == null)) ? amplifyColorVolumeBase.EnterBlendTime : this.ExitVolumeBlendTime;
            if (this.volumesBlending && !this.blendingFromMidBlend && texture == this.LutTexture)
            {
                this.LutTexture                   = this.volumesLutBlendTexture;
                this.volumesLutBlendTexture       = texture;
                this.volumesBlendingTimeCountdown = num2 * ((this.volumesBlendingTime - this.volumesBlendingTimeCountdown) / this.volumesBlendingTime);
                this.volumesBlendingTime          = num2;
                this.currentVolumeEffects         = VolumeEffect.BlendValuesToVolumeEffect(this.EffectFlags, this.currentVolumeEffects, this.blendVolumeEffects, this.effectVolumesBlendAdjusted);
                this.effectVolumesBlendAdjust     = 1f - this.volumesBlendAmount;
                this.volumesBlendAmount           = 1f - this.volumesBlendAmount;
            }
            else
            {
                if (this.volumesBlending)
                {
                    this.materialBlendCache.SetFloat("_lerpAmount", this.volumesBlendAmount);
                    if (this.blendingFromMidBlend)
                    {
                        Graphics.Blit(this.midBlendLUT, this.blendCacheLut);
                        this.materialBlendCache.SetTexture("_RgbTex", this.blendCacheLut);
                    }
                    else
                    {
                        this.materialBlendCache.SetTexture("_RgbTex", this.LutTexture);
                    }
                    this.materialBlendCache.SetTexture("_LerpRgbTex", (!(this.volumesLutBlendTexture != null)) ? this.defaultLut : this.volumesLutBlendTexture);
                    Graphics.Blit(this.midBlendLUT, this.midBlendLUT, this.materialBlendCache);
                    this.blendCacheLut.DiscardContents();
                    this.currentVolumeEffects     = VolumeEffect.BlendValuesToVolumeEffect(this.EffectFlags, this.currentVolumeEffects, this.blendVolumeEffects, this.effectVolumesBlendAdjusted);
                    this.effectVolumesBlendAdjust = 0f;
                    this.blendingFromMidBlend     = true;
                }
                this.VolumesBlendTo(texture, num2);
            }
            this.blendVolumeEffects = ((!(amplifyColorVolumeBase == null)) ? amplifyColorVolumeBase.EffectContainer.GetVolumeEffect(this) : this.worldVolumeEffects);
            if (this.blendVolumeEffects == null)
            {
                this.blendVolumeEffects = this.worldVolumeEffects;
            }
        }
    }
コード例 #3
0
 private void Start()
 {
     this.worldLUT           = this.LutTexture;
     this.worldVolumeEffects = this.EffectFlags.GenerateEffectData(this);
     this.blendVolumeEffects = (this.currentVolumeEffects = this.worldVolumeEffects);
 }