private int[,] GetBiomeMap() { Tile tile = (Tile)target; int res = tile.MeshManager.HeightmapResolution; BiomeNode[] biomes = TerraConfig.Instance.Graph.GetEndNode().GetBiomes(); BiomeSampler sampler = new BiomeSampler(biomes); return(sampler.GetBiomeMap(TerraConfig.Instance, tile.GridPosition, res)); }
private void SetBlurredBiomePreviewTexture() { Tile tile = (Tile)target; int res = tile.MeshManager.HeightmapResolution; BiomeNode[] biomes = TerraConfig.Instance.Graph.GetEndNode().GetBiomes(); BiomeSampler sampler = new BiomeSampler(biomes); Texture2D tex; if (biomes.Length == 1) { tex = new Texture2D(res, res); MathUtil.LoopXY(res, (x, y) => { // Set colors based on how much biome is showing tex.SetPixel(x, y, biomes[0].PreviewColor); }); tex.Apply(); _previewTexture = tex; return; } int[,] map = sampler.GetBiomeMap(TerraConfig.Instance, tile.GridPosition, res); float[,] blurredMap = BlurUtils.GaussianConvolution(map, _tile.PreviewDeviation); _tile.PreviewGradient = new Gradient(); GradientColorKey[] colorKeys = new GradientColorKey[biomes.Length]; float stepSize = 1f / (biomes.Length - 1); float offset = 0f; for (int i = 0; i < biomes.Length; i++) { GradientColorKey colorKey = new GradientColorKey { color = biomes[i].PreviewColor, time = offset }; colorKeys[i] = colorKey; offset += stepSize; } _tile.PreviewGradient.colorKeys = colorKeys; //Set texture tex = new Texture2D(res, res); MathUtil.LoopXY(res, (x, y) => { // Set colors based on how much biome is showing float normalized = blurredMap[x, y] / biomes.Length; tex.SetPixel(x, y, _tile.PreviewGradient.Evaluate(normalized)); }); tex.Apply(); _previewTexture = tex; }
public override Texture2D DidRequestTextureUpdate(int size, float spread) { Texture2D tex = new Texture2D(size, size); BiomeNode[] biomes = GetBiomes(); BiomeSampler sampler = new BiomeSampler(biomes); int[,] map = sampler.GetBiomeMap(GridPosition.Zero, 1, spread, size); //Set texture MathUtil.LoopXY(size, (x, y) => { tex.SetPixel(x, y, biomes[map[x, y]].PreviewColor); }); tex.Apply(); return(tex); }
private void SetBiomePreviewTexture() { Tile tile = (Tile)target; int res = tile.MeshManager.HeightmapResolution; BiomeNode[] biomes = TerraConfig.Instance.Graph.GetEndNode().GetBiomes(); BiomeSampler sampler = new BiomeSampler(biomes); int[,] map = sampler.GetBiomeMap(TerraConfig.Instance, tile.GridPosition, res); //Set texture Texture2D tex = new Texture2D(res, res); MathUtil.LoopXY(res, (x, y) => { tex.SetPixel(x, y, biomes[map[x, y]].PreviewColor); }); tex.Apply(); _previewTexture = tex; }