} // public struct TerrainSample

        //==================================================================

        static public TerrainSample GetTerrainSample(Vector3 coordinates)
        {
            Vector3 noiseCoordinates = new Vector3(coordinates.x - _heightmapNoiseSettings.offsetX, _heightmapNoiseSettings.offsetY, coordinates.z - _heightmapNoiseSettings.offsetZ);

            // get a NoiseSample at the given coordinates
            NoiseGenerator.NoiseSample noiseSample = NoiseGenerator.Sum(
                NoiseGenerator.methods[(int)_heightmapNoiseSettings.type],
                noiseCoordinates,
                _heightmapNoiseSettings.frequency,
                _heightmapNoiseSettings.octaves,
                _heightmapNoiseSettings.lacunarity,
                _heightmapNoiseSettings.persistence);
            if (!_isIsland)
            {
                noiseSample = (noiseSample + 1f) * 0.5f;
                //noiseSample.value = _heightmapNoiseSettings.adjustmentCurve.Evaluate(noiseSample.value);
                noiseSample *= _heightmapMaxHeight;
            }
            else
            {
                noiseSample = (noiseSample + 1f) * 0.5f;
                //noiseSample.value = _heightmapNoiseSettings.adjustmentCurve.Evaluate(noiseSample.value);
                float fallofStartRadius = _islandRadiusMin * _heightmapSize * 0.5f * _nTilesHorizontal;
                float fallofEndRadius = _islandRadiusMax * _heightmapSize * 0.5f * _nTilesHorizontal;
                noiseSample *= QuadraticFallofCurve(coordinates, fallofStartRadius, fallofEndRadius);
                noiseSample *= _heightmapMaxHeight;
            }

            // Return a new TerrainSample = adjusted NoiseSample + additional info about normal vector and steepness
            TerrainSample newTerrainSample = new TerrainSample
            {
                height = noiseSample.value,
                derivative = noiseSample.derivative,
                normal = new Vector3(-noiseSample.derivative.x, 1f, -noiseSample.derivative.z).normalized
            };
            newTerrainSample.steepness = Vector3.Angle(Vector3.up, newTerrainSample.normal);

            return newTerrainSample;
        } // static public TerrainSample GetTerrainSample(Vector3 coordinates)
Exemplo n.º 2
0
		public override void Initialize()
		{
			sample = new TerrainSample();
			Name = sample.Metadata[ "Title" ] + " Sample";
			AddSample( sample );
		}