private float ScoreForSource(WaterOnTerrainSFX.IntVector position, WaterOnTerrainSFX.Source source) { float num = 0f; if (WaterOnTerrainSFX.IsWithinSampleGrid(position)) { num = this.sampleGrid[position.x, position.y].score; for (int i = 0; i < this.sources.Count; i++) { if (this.sources[i] != source) { float t = (float)((position - this.sources[i].localPosition).squareMagnitude / 5); num *= Mathf.Lerp(0.1f, 1f, t); } } } return(num); }
private void UpdateSampleGrid() { WaterOnTerrainSFX.IntVector intVector = new WaterOnTerrainSFX.IntVector(Mathf.FloorToInt(base.transform.position.x / this.gridCellSize), Mathf.FloorToInt(base.transform.position.z / this.gridCellSize)); if (intVector != this.gridPosition) { WaterOnTerrainSFX.IntVector intVector2 = intVector - this.gridPosition; if (Math.Abs(intVector2.x) < 21 && Math.Abs(intVector2.y) < 21) { this.MoveSampleGridEntries(-intVector2); WaterOnTerrainSFX.IntVector intVector3; WaterOnTerrainSFX.IntVector intVector4; if (intVector2.x < 0) { intVector3.x = 0; intVector4.x = -intVector2.x; } else { intVector3.x = 21 - intVector2.x; intVector4.x = 21; } if (intVector2.y < 0) { intVector3.y = 0; intVector4.y = -intVector2.y; } else { intVector3.y = 21 - intVector2.y; intVector4.y = 21; } this.CacheGradients(intVector, new WaterOnTerrainSFX.IntVector(0, intVector3.y), new WaterOnTerrainSFX.IntVector(21, intVector4.y)); if (intVector3.y > 0) { this.CacheGradients(intVector, new WaterOnTerrainSFX.IntVector(intVector3.x, 0), new WaterOnTerrainSFX.IntVector(intVector4.x, intVector3.y)); } else { this.CacheGradients(intVector, new WaterOnTerrainSFX.IntVector(intVector3.x, intVector4.y), new WaterOnTerrainSFX.IntVector(intVector4.x, 21)); } } else { this.CacheGradients(intVector, new WaterOnTerrainSFX.IntVector(0, 0), new WaterOnTerrainSFX.IntVector(21, 21)); } this.CalculateSampleGridScores(); int i = 0; while (i < this.sources.Count) { WaterOnTerrainSFX.Source source = this.sources[i]; this.sources[i].localPosition -= intVector2; int squareMagnitude = (source.localPosition - WaterOnTerrainSFX.SAMPLE_GRID_CENTRE).squareMagnitude; if (!WaterOnTerrainSFX.IsWithinSampleGrid(source.localPosition) || squareMagnitude > 100) { this.StopSource(i); } else { i++; } } this.gridPosition = intVector; } }