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; } }
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; } } }
private void Start() { this.worldLUT = this.LutTexture; this.worldVolumeEffects = this.EffectFlags.GenerateEffectData(this); this.blendVolumeEffects = (this.currentVolumeEffects = this.worldVolumeEffects); }