示例#1
0
    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);
    }
示例#2
0
 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;
     }
 }