public void UpdateColors()
        {
            Color[] colors     = new Color[texture.width * texture.height];
            int     colorIndex = 0;

            for (int i = 0; i < NumBiomes * 2 - 2; i++)
            {
                ColorSettings.BiomeColorSettings.Biome biome = settings.biomeColorSettings.biomes[(int)Mathf.Ceil(i / 2f)];

                for (int j = 0; j < NumberColors * 2; j++)
                {
                    Color gradientColor;
                    if (j < NumberColors)
                    {
                        gradientColor = settings.oceanColor.Evaluate(j / (float)NumberColors);
                    }
                    else
                    {
                        gradientColor = biome.gradient.Evaluate((j - NumberColors) / (float)NumberColors);
                    }
                    Color tintColor = biome.tint;
                    colors[colorIndex] = gradientColor * (1 - biome.tintPercent) + tintColor * biome.tintPercent;
                    colorIndex++;
                }
            }

            texture.SetPixels(colors);
            texture.Apply();
            settings.material.SetTexture("_texture", texture);
        }
Exemplo n.º 2
0
    public void RandomisePlanet()
    {
        if (Camera.main.GetComponent <FlyingCam>().GetHyperdriveStatus() == true)
        {
            planet.resolution = 10; //Set planet resolution really low so that app doesn;'t lag when making changes, will be set back to max at the end of the method

            shapeSettings.planetRadius = Random.Range(planetRadius.x, planetRadius.y);

            //Simple noise randomised settings
            simpleNoiseSettings.simpleNoiseSettings.strength      = Random.Range(simple_Strength.x, simple_Strength.y);
            simpleNoiseSettings.simpleNoiseSettings.baseRoughness = Random.Range(simple_BaseRoughness.x, simple_BaseRoughness.y);
            simpleNoiseSettings.simpleNoiseSettings.roughness     = Random.Range(simple_Roughness.x, simple_Roughness.y);
            simpleNoiseSettings.simpleNoiseSettings.centre        = new Vector3(Random.Range(simple_Centre.x, simple_Centre.y), Random.Range(simple_Centre.x, simple_Centre.y), Random.Range(simple_Centre.x, simple_Centre.y));


            //Ridgid noise randomised settings
            rigidNoiseSettings.rigidNoiseSettings.strength         = Random.Range(rigid_Strength.x, rigid_Strength.y);
            rigidNoiseSettings.rigidNoiseSettings.baseRoughness    = Random.Range(rigid_BaseRoughness.x, rigid_BaseRoughness.y);
            rigidNoiseSettings.rigidNoiseSettings.roughness        = Random.Range(rigid_Roughness.x, rigid_Roughness.y);
            rigidNoiseSettings.rigidNoiseSettings.persistence      = Random.Range(rigid_Persistence.x, rigid_Persistence.y);
            rigidNoiseSettings.rigidNoiseSettings.centre           = new Vector3(Random.Range(rigid_Centre.x, rigid_Centre.y), Random.Range(rigid_Centre.x, rigid_Centre.y), Random.Range(rigid_Centre.x, rigid_Centre.y));
            rigidNoiseSettings.rigidNoiseSettings.weightMultiplier = Random.Range(rigid_WeightMultiplier.x, rigid_WeightMultiplier.y);
            rigidNoiseSettings.rigidNoiseSettings.minValue         = Random.Range(rigid_MinimalValue.x, rigid_MinimalValue.y);

            //Biome Settings(Noise and Biome Numbers)
            newBiomeList = new ColorSettings.BiomeColorSettings.Biome[Mathf.FloorToInt(Random.Range(biome_BiomeNumber.x, biome_BiomeNumber.y))];

            if (newBiomeList.Length == colorSettings.biomeColorSettings.biomes.Length)
            {
                //DO nothing as the biomes will be the dame length and randomized later on
            }
            else if (newBiomeList.Length > colorSettings.biomeColorSettings.biomes.Length)
            {
                previousArraySize = colorSettings.biomeColorSettings.biomes.Length;
                //System.Array.Resize(ref colorSettings.biomeColorSettings.biomes, newBiomeList.Length);

                int j = 0;
                for (int i = 0; i < previousArraySize; i++)
                {
                    newBiomeList[i] = colorSettings.biomeColorSettings.biomes[i];
                    j++;
                }
                for (int i = j; i < newBiomeList.Length; i++)
                {
                    newBiomeList[i]             = new ColorSettings.BiomeColorSettings.Biome();
                    newBiomeList[i].tint        = Color.red;
                    newBiomeList[i].tintPercent = 0.0f;
                    newBiomeList[i].startHeight = 0.0f;
                }

                colorSettings.biomeColorSettings.biomes = newBiomeList;
            }
            else
            {
                for (int i = 0; i < newBiomeList.Length; i++)
                {
                    newBiomeList[i] = colorSettings.biomeColorSettings.biomes[i];
                }
                colorSettings.biomeColorSettings.biomes = newBiomeList;
            }

            colorSettings.biomeColorSettings.noise.simpleNoiseSettings.minValue = Random.Range(biome_MinValue.x, biome_MinValue.y);
            colorSettings.biomeColorSettings.noise.rigidNoiseSettings.minValue  = Random.Range(biome_MinValue.x, biome_MinValue.y);
            colorSettings.biomeColorSettings.blendAmount   = Random.Range(biome_BlendAmount.x, biome_BlendAmount.y);
            colorSettings.biomeColorSettings.noiseStrength = Random.Range(biome_BiomeNoiseStrength.x, biome_BiomeNoiseStrength.y);


            if (colorSettings.biomeColorSettings.biomes.Length == 2)
            {
                colorSettings.biomeColorSettings.noiseOffset = Random.Range(biome_NoiseOffset_2Biomes.x, biome_NoiseOffset_2Biomes.y);
            }
            else if (colorSettings.biomeColorSettings.biomes.Length == 1) //If it's 1 noise is not applied in the texture/Colors so we won't do any unessesary calculations
            {
                colorSettings.biomeColorSettings.noiseOffset = Random.Range(biome_NoiseOffset_Biomes.x, biome_NoiseOffset_Biomes.y);
            }
            else if (colorSettings.biomeColorSettings.biomes.Length == 3)
            {
                colorSettings.biomeColorSettings.noiseOffset = Random.Range(biome_NoiseOffset_3Biomes.x, biome_NoiseOffset_3Biomes.y);
                colorSettings.biomeColorSettings.noise.simpleNoiseSettings.minValue = 0f;
                colorSettings.biomeColorSettings.noise.simpleNoiseSettings.strength = Random.Range(0.1f, 0.2f);
            }

            planet.resolution = 256;
            RandomiseColors();
            planet.StartCoroutine("MeshCoper"); //Generates the planets after 2 seconds so that the camera is already in front of the hyperdrive and particles have been initiated
            checkIfPlanetsAreDone = true;
        }
    }