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); }
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; } }