Example #1
0
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            return(this.distorter.Noise(sourceNoise, x, y, z).ConvertRange(
                       this.sourceNoiseStart, this.sourceNoiseEnd, this.resultNoiseStart, this.resultNoiseEnd));
        }
        public NoiseSeedSurfaceGenerator(
            ISurfaceValueGenerator <TVoxel, TSurfaceData, TValue> generator,
            INoise3D positiveXAxisNoise,
            INoise3D negativeXAxisNoise,
            INoise3D positiveYAxisNoise,
            INoise3D negativeYAxisNoise,
            INoise3D positiveZAxisNoise,
            INoise3D negativeZAxisNoise)
        {
            Contracts.Requires.That(generator != null);
            Contracts.Requires.That(positiveXAxisNoise != null);
            Contracts.Requires.That(negativeXAxisNoise != null);
            Contracts.Requires.That(positiveYAxisNoise != null);
            Contracts.Requires.That(negativeYAxisNoise != null);
            Contracts.Requires.That(positiveZAxisNoise != null);
            Contracts.Requires.That(negativeZAxisNoise != null);

            this.generator      = generator;
            this.positiveXNoise = positiveXAxisNoise;
            this.negativeXNoise = negativeXAxisNoise;
            this.positiveYNoise = positiveYAxisNoise;
            this.negativeYNoise = negativeYAxisNoise;
            this.positiveZNoise = positiveZAxisNoise;
            this.negativeZNoise = negativeZAxisNoise;
        }
 public NoiseSeedSurfaceGenerator(
     ISurfaceValueGenerator <TVoxel, TSurfaceData, TValue> generator,
     INoise3D xAxisNoise,
     INoise3D yAxisNoise,
     INoise3D zAxisNoise)
     : this(generator, xAxisNoise, xAxisNoise, yAxisNoise, yAxisNoise, zAxisNoise, zAxisNoise)
 {
 }
        public DistortedNoise3D(INoise3D noise, INoiseDistorter3D distorter)
        {
            Contracts.Requires.That(noise != null);
            Contracts.Requires.That(distorter != null);

            this.noise     = noise;
            this.distorter = distorter;
        }
Example #5
0
        public NoiseWorldVoxelGridChunkPopulator(
            INoise3D noise, double noiseScaling, int numberOfOctaves, TerrainMaterial material)
        {
            Contracts.Requires.That(noise != null);
            Contracts.Requires.That(noiseScaling > 0);
            Contracts.Requires.That(numberOfOctaves >= 1);

            this.noise     = noise;
            this.distorter = NoiseDistorter.New()
                             .Frequency(noiseScaling, noiseScaling, noiseScaling).Octaves(numberOfOctaves);
            this.material = material;
        }
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            double result = 0;

            foreach (var distorter in this.distorters)
            {
                result += distorter.Noise(sourceNoise, x, y, z);
            }

            return(result);
        }
        public SkyIslandVoxelGridChunkPopulator(
            SkyIslandVoxelPopulatorConfig config,
            IAsyncFactory <ChunkOverheadKey, IDisposableValue <IReadOnlySkyIslandMapChunk> > chunkFactory,
            IFactory <int, INoise3D> multiNoise)
        {
            Contracts.Requires.That(config != null);
            Contracts.Requires.That(chunkFactory != null);
            Contracts.Requires.That(multiNoise != null);

            this.config           = config;
            this.chunkFactory     = chunkFactory;
            this.environmentNoise = multiNoise.Create(SkyIslandNoiseSubSeed.Environment);
            this.caveNoise1       = multiNoise.Create(SkyIslandNoiseSubSeed.Cave1);
            this.caveNoise2       = multiNoise.Create(SkyIslandNoiseSubSeed.Cave2);
        }
        private double GenerateCaveDensity(INoise3D noise, int x, int y, int z, float mapTopHeight)
        {
            Contracts.Requires.That(noise != null);

            double distanceFromTop = Math.Abs(mapTopHeight - y);
            double gradientWeight  = (1 - (distanceFromTop / this.config.CaveEntranceGradientThickness)).Clamp(0, 1);
            double noiseDensity    = this.config.CaveShapeDistorter.Noise(noise, x, y, z);

            // the original range of density is -1 to 1
            // the cave multiplier narrows that range to only a thin band of values centered around 0
            // that band is then converted from -.x to x => 1 to -1 to 1
            // anything outside that band becomes greater then 1
            // any positive value generated by this function does not generate cave
            return(Math.Abs(noiseDensity * this.config.CaveTunnelMultiplier) - 1 + gradientWeight);
        }
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            double result = this.distorter.Noise(sourceNoise, x, y, z);

            int weight = 2;

            for (int octave = 2; octave <= this.numberOfOctaves; octave++)
            {
                result += this.distorter.Noise(sourceNoise, x * weight, y * weight, z * weight) / weight;
                weight *= 2;
            }

            return(result);
        }
Example #10
0
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            return(this.distorter.Noise(sourceNoise, x + this.xShift, y + this.yShift, z + this.zShift));
        }
Example #11
0
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            return(this.distorter.Noise(sourceNoise, x, y, z) * this.amplitude);
        }
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            return(this.distorter.Noise(sourceNoise, x * this.xFrequency, y * this.yFrequency, z * this.zFrequency));
        }
 public NoiseSeedSurfaceGenerator(
     ISurfaceValueGenerator <TVoxel, TSurfaceData, TValue> generator,
     INoise3D noise)
     : this(generator, noise, noise, noise)
 {
 }
Example #14
0
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            return(sourceNoise.Noise(x, y, z));
        }
Example #15
0
 public static void Noise(INoise3D sourceNoise)
 {
     Contracts.Requires.That(sourceNoise != null);
 }
Example #16
0
        /// <inheritdoc />
        public double Noise(INoise3D sourceNoise, double x, double y, double z)
        {
            INoiseDistorter3DContracts.Noise(sourceNoise);

            return(this.distorter.Noise(sourceNoise, x, y, z).Clamp(this.min, this.max));
        }