示例#1
0
        public TerrainNoise(TerrainType terrainType, int seed, Tools.Accessing.NoiseParameters noiseParameters, Tools.Accessing.CanyonParameters canyonParameters, float noisefrequency = 1)
        {
            this.terrainType      = terrainType;
            this.seed             = seed;
            this.noiseParameters  = noiseParameters;
            this.canyonParameters = canyonParameters;
            Frequency             = noisefrequency;

            fnoise = new FastNoise(seed);

            //Debugging
            if (terrainType == TerrainType.CustomCayonNoise)
            {
                if (canyonParameters == null)
                {
                    BlockedByError = true;
                    error          = new TerrainNoiseError("The TerrainNoise cannot return any value, the canyonParameters equals null.", TerrainNoiseError.ErrorTypes.Error);
                }
                if (canyonParameters.sectionsLength.Length == 0)
                {
                    BlockedByError = true;
                    error          = new TerrainNoiseError("The TerrainNoise cannot return any value, the canyonParameters has no keys.", TerrainNoiseError.ErrorTypes.Error);
                }
            }
            if (noiseParameters.octaves == 0)
            {
                BlockedByError = true;
                error          = new TerrainNoiseError("The TerrainNoise cannot return any value, the noiseParameters has no octaves.", TerrainNoiseError.ErrorTypes.Error);
            }
        }
示例#2
0
        public float GetNoiseValue(Vector2 Position, out TerrainNoiseError Error)
        {
            Error = null;
            if (BlockedByError)
            {
                Error = error;
                return(0f);
            }

            return(PrivateGetNoiseValue(Position * Frequency));
        }
示例#3
0
 public float GetNoiseValue(int TerrainNoiseIndex, Vector2 Position, out TerrainNoiseError Error)
 {
     Error = null;
     if (TerrainNoiseIndex != MathFunc.Clamp(TerrainNoiseIndex, 0, TerrainNoises.Count - 1))
     {
         Error = new TerrainNoiseError("Couldn't get the value of the TerrainNoise at Index, the Index was out of range.", TerrainNoiseError.ErrorTypes.Warning);
         return(0f);
     }
     else
     {
         return(TerrainNoises[TerrainNoiseIndex].GetNoiseValue(Position, out Error));
     }
 }
示例#4
0
        public void ChangeTerrainType(TerrainType terrainType, Tools.Accessing.NoiseParameters noiseParameters)
        {
            BlockedByError       = false;
            this.terrainType     = terrainType;
            this.seed            = seed;
            this.noiseParameters = noiseParameters;

            fnoise = new FastNoise(seed);

            //Debugging
            if (terrainType == TerrainType.CustomCayonNoise)
            {
                BlockedByError = true;
                error          = new TerrainNoiseError("The TerrainNoise cannot return any value, the noise requires cayonParameters.", TerrainNoiseError.ErrorTypes.Error);
            }
            if (noiseParameters.octaves == 0)
            {
                BlockedByError = true;
                error          = new TerrainNoiseError("The TerrainNoise cannot return any value, the noiseParameters has no octaves.", TerrainNoiseError.ErrorTypes.Error);
            }
        }