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); }
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; } }