private void UpdateWaves() { int frameCount = Time.frameCount; if (this._LastUpdateFrame == frameCount) { return; } this._LastUpdateFrame = frameCount; MaterialPropertyBlock propertyBlock = this._Water.Renderer.PropertyBlock; float time = Time.time; for (int i = 0; i < this._GerstnerFours.Length; i++) { Gerstner4 gerstner = this._GerstnerFours[i]; Vector4 value; value.x = gerstner.Wave0.Offset + gerstner.Wave0.Speed * time; value.y = gerstner.Wave1.Offset + gerstner.Wave1.Speed * time; value.z = gerstner.Wave2.Offset + gerstner.Wave2.Speed * time; value.w = gerstner.Wave3.Offset + gerstner.Wave3.Speed * time; propertyBlock.SetVector("_GrOff" + i, value); } }
private void UpdateMaterial() { MaterialPropertyBlock propertyBlock = this._Water.Renderer.PropertyBlock; for (int i = 0; i < this._GerstnerFours.Length; i++) { Gerstner4 gerstner = this._GerstnerFours[i]; Vector4 value; value.x = gerstner.Wave0.Amplitude; Vector4 value2; value2.x = gerstner.Wave0.Frequency; Vector4 value3; value3.x = gerstner.Wave0.Direction.x; value3.y = gerstner.Wave0.Direction.y; value.y = gerstner.Wave1.Amplitude; value2.y = gerstner.Wave1.Frequency; value3.z = gerstner.Wave1.Direction.x; value3.w = gerstner.Wave1.Direction.y; value.z = gerstner.Wave2.Amplitude; value2.z = gerstner.Wave2.Frequency; Vector4 value4; value4.x = gerstner.Wave2.Direction.x; value4.y = gerstner.Wave2.Direction.y; value.w = gerstner.Wave3.Amplitude; value2.w = gerstner.Wave3.Frequency; value4.z = gerstner.Wave3.Direction.x; value4.w = gerstner.Wave3.Direction.y; propertyBlock.SetVector("_GrAB" + i, value3); propertyBlock.SetVector("_GrCD" + i, value4); propertyBlock.SetVector("_GrAmp" + i, value); propertyBlock.SetVector("_GrFrq" + i, value2); } for (int j = this._GerstnerFours.Length; j < 5; j++) { propertyBlock.SetVector("_GrAmp" + j, Vector4.zero); } }