Ejemplo n.º 1
0
        private void OnProfilesChanged(Water water)
        {
            this._TileSize               = 0f;
            this._WindSpeedMagnitude     = 0f;
            this._SpectrumDirectionality = 0f;
            Water.WeightedProfile[] profiles = water.ProfilesManager.Profiles;
            for (int i = 0; i < profiles.Length; i++)
            {
                WaterProfileData profile = profiles[i].Profile;
                float            weight  = profiles[i].Weight;
                this._TileSize               += profile.TileSize * profile.TileScale * weight;
                this._WindSpeedMagnitude     += profile.WindSpeed * weight;
                this._SpectrumDirectionality += profile.Directionality * weight;
            }
            WaterQualitySettings instance = WaterQualitySettings.Instance;

            this._TileSize         *= instance.TileSizeScale;
            this._UnscaledTileSizes = this._TileSize * this._TileSizeScales;
            this.UpdateShaderParams();
            MaterialPropertyBlock propertyBlock = water.Renderer.PropertyBlock;

            propertyBlock.SetVector(ShaderVariables.WaterTileSizeScales, new Vector4(this._TileSizeScales.x / this._TileSizeScales.y, this._TileSizeScales.x / this._TileSizeScales.z, this._TileSizeScales.x / this._TileSizeScales.w, 0f));
            this._SpectrumResolver.OnProfilesChanged();
            propertyBlock.SetFloat(ShaderVariables.MaxDisplacement, this._SpectrumResolver.MaxHorizontalDisplacement);
        }
Ejemplo n.º 2
0
 public static void RemoveListener(Action action, WaterEvents.GlobalEventType type)
 {
     if (type == WaterEvents.GlobalEventType.OnQualityChanged)
     {
         WaterQualitySettings instance = WaterQualitySettings.Instance;
         if (instance == null)
         {
             return;
         }
         WaterQualitySettings.Instance.Changed -= action;
     }
 }