//These two functions are only used so different threads don't base on the same data and fs up public Spawnable(Spawnable spawnable) { this._noiseMergeType = spawnable._noiseMergeType; this._noiseSettingsData = spawnable._noiseSettingsData; this._subSpawners = spawnable._subSpawners; this._parentOnly = spawnable._parentOnly; this._rotationAmount = spawnable._rotationAmount; this._noiseStartPoint = spawnable._noiseStartPoint; this._thickness = spawnable._thickness; this._uniformSpreadAmount = spawnable._uniformSpreadAmount; this._randomSpread = spawnable._randomSpread; this._offsetAmount = spawnable._offsetAmount; this._spawnFixedHeight = spawnable._spawnFixedHeight; this._size = spawnable._size; this._spacing = spawnable._spacing; this._othersCanSpawnInside = spawnable._othersCanSpawnInside; this._spawnDifferencial = spawnable._spawnDifferencial; this._softMinAmount = spawnable._softMinAmount; this._hardMinHeight = spawnable._hardMinHeight; this._softMaxAmount = spawnable._softMaxAmount; this._hardMaxHeight = spawnable._hardMaxHeight; this._surfaceNormalAmount = spawnable._surfaceNormalAmount; this._pointAlongNormalRandomness = spawnable._pointAlongNormalRandomness; this._softMinSlope = spawnable._softMinSlope; this._hardMinSlope = spawnable._hardMinSlope; this._softMaxSlope = spawnable._softMaxSlope; this._hardMaxSlope = spawnable._hardMaxSlope; this._noise = spawnable._noise; this._offsetNoise = spawnable._offsetNoise; this._spreadNoise = spawnable._spreadNoise; this._prefabs = spawnable._prefabs; }
public static float[,] Clamp(float[,] noise, NoiseSettingsData data) { for (int x = 0; x < noise.GetLength(0); x++) { for (int y = 0; y < noise.GetLength(1); y++) { noise[x, y] = Mathf.Clamp(noise[x, y], data.ClampMin, data.ClampMax); } } return(noise); }
public Biome(Biome biome) { this._highLODSpawnable = biome.HighLODSpawnable; this._highLODSpawnable = Spawnable.CopySpawnables(_highLODSpawnable); this._mediumLODSpawnable = biome.MediumLODSpawnable; this._mediumLODSpawnable = Spawnable.CopySpawnables(_mediumLODSpawnable); this._lowLODSpawnable = biome.LowLODSpawnable; this._lowLODSpawnable = Spawnable.CopySpawnables(_lowLODSpawnable); this._meshSettings = biome._meshSettings; this._offsetNoiseSettings = biome._offsetNoiseSettings; this._offsetVectorForOffsetNoise = biome._offsetVectorForOffsetNoise; this._waterChunk = biome._waterChunk; this._waterHeight = biome._waterHeight; }
// Used to calculate all the different noises for every spawable public void Setup(float[,] parentNoise, int chunkSize, NoiseSettingsData offsetNoiseSettings, Vector2 center, Vector2 offsetNoiseOffset) { if (parentNoise != null) { _noise = Noise.MergeNoise(chunkSize, chunkSize, 1, _noiseSettingsData.NoiseSettingsDataMerge, parentNoise, _noiseMergeType, new Vector2(center.x, -center.y)); } else { _noise = Noise.GenerateNoiseMap(chunkSize, chunkSize, 1, _noiseSettingsData.NoiseSettingsDataMerge, new Vector2(center.x, -center.y)); } _noise = Noise.Clamp(_noise, _noiseSettingsData); _offsetNoise = Noise.GenerateNoiseMap(chunkSize, chunkSize, 1, offsetNoiseSettings.NoiseSettingsDataMerge, new Vector2(center.x, -center.y) + offsetNoiseOffset); _spreadNoise = Noise.GenerateNoiseMap(chunkSize, chunkSize, 1, offsetNoiseSettings.NoiseSettingsDataMerge, new Vector2(center.x, -center.y) + offsetNoiseOffset * 2); _prefabMaxProbability = SpawnablePrefab.GetMaxSize(_prefabs); for (int i = 0; i < _subSpawners.Length; i++) { _subSpawners[i].Setup(_noise, chunkSize, offsetNoiseSettings, new Vector2(center.x, -center.y), offsetNoiseOffset * 2); } }