Example #1
0
 public static void Reset()
 {
     extIslands     = null;
     noiseElevation = null;
     noiseFertility = null;
     islandCones    = null;
 }
Example #2
0
        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);
            }
        }
Example #3
0
        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;
        }