public static void Reset() { extIslands = null; noiseElevation = null; noiseFertility = null; islandCones = null; }
public static void Init(Map map) { ModExt_Biome_GenStep_Islands extIslands = map.Biome.GetModExtension <ModExt_Biome_GenStep_Islands>(); if (extIslands == null) { return; } IslandNoises.extIslands = extIslands; string noiseLabel = "islands " + map.Biome.defName; // Base noise ModuleBase moduleBase = new Perlin(extIslands.baseFrequency, 2.0, 0.5, 5, Rand.Range(0, int.MaxValue), QualityMode.High); NoiseDebugUI.StoreNoiseRender(moduleBase, noiseLabel + " base"); // Elevation noise scaling noiseElevation = new ScaleBias(extIslands.noiseElevationPreScale, extIslands.noiseElevationPreOffset, moduleBase); NoiseDebugUI.StoreNoiseRender(noiseElevation, noiseLabel + " elevation"); // Fertility noise scaling noiseFertility = new ScaleBias(extIslands.noiseFertilityPreScale, extIslands.noiseFertilityPreOffset, moduleBase); NoiseDebugUI.StoreNoiseRender(noiseFertility, noiseLabel + " fertility"); // Create island cones islandCones = new List <IslandCone>(); int count = Rand.Range(extIslands.islandCountMin, extIslands.islandCountMax); for (int i = 0; i < count; i++) { IslandCone islandCone = new IslandCone(); SetIslandOnRandomLocation(ref islandCone, map); islandCones.Add(islandCone); } }
private static void SetIslandOnRandomLocation(ref IslandCone islandNoise, Map map) { ModExt_Biome_GenStep_Islands extIslands = map.Biome.GetModExtension <ModExt_Biome_GenStep_Islands>(); int minSizeX = (int)(map.Size.x * extIslands.minSizeX); int maxSizeX = (int)(map.Size.x * extIslands.maxSizeX); int minSizeZ = (int)(map.Size.z * extIslands.minSizeZ); int maxSizeZ = (int)(map.Size.z * extIslands.maxSizeZ); // Calculate coordinates int radiusX = Rand.Range(minSizeX, maxSizeX) / 2; int radiusZ = Rand.Range(minSizeZ, maxSizeZ) / 2; islandNoise.radiusX = radiusX; islandNoise.radiusZ = radiusZ; islandNoise.centerX = Rand.Range(radiusX + 5, map.Size.x - radiusX - 5); islandNoise.centerZ = Rand.Range(radiusZ + 5, map.Size.z - radiusZ - 5); islandNoise.distZFactor = (float)radiusX / radiusZ; islandNoise.radiusSquared = radiusX * radiusX; }