private IEnumerator ColorDataCoroutine() { NativeArray <Color> biomeColors = new NativeArray <Color>(World.GetBiomeColors(), Allocator.TempJob); NativeArray <Color> colors = new NativeArray <Color>(FixedChunkSizeXZ * FixedChunkSizeXZ, Allocator.TempJob); CreateBiomeColorData job = new CreateBiomeColorData() { biomeColors = biomeColors, biomes = biomeTypes, colors = colors }; JobHandle handle = job.Schedule(); yield return(new WaitUntil(() => handle.IsCompleted)); handle.Complete(); biomeColorsTexture.SetPixels(colors.ToArray()); biomeColorsTexture.Apply(); blockMeshFilter.GetComponent <MeshRenderer>().material.SetTexture("_BiomeTexture", biomeColorsTexture); plantsMeshFilter.GetComponent <MeshRenderer>().material.SetTexture("_BiomeTexture", biomeColorsTexture); biomeColors.Dispose(); colors.Dispose(); }
private IEnumerator ColorDataCoroutine() { if (biomeColorsTexture == null) { biomeColorsTexture = new Texture2D(FixedChunkSizeXZ, FixedChunkSizeXZ, TextureFormat.RGBA32, false); biomeColorsTexture.filterMode = FilterMode.Bilinear; biomeColorsTexture.wrapMode = TextureWrapMode.Clamp; } NativeArray <Color> biomeColors = new NativeArray <Color>(World.GetBiomeColors(), Allocator.TempJob); CreateBiomeColorData job = new CreateBiomeColorData() { biomeColors = biomeColors, biomes = biomeTypes, colors = biomeColorsTexture.GetRawTextureData <Color32>() }; JobHandle handle = job.Schedule(); yield return(new WaitUntil(() => handle.IsCompleted)); handle.Complete(); biomeColorsTexture.Apply(); blockMeshFilter.GetComponent <MeshRenderer>().material.SetTexture("_BiomeTexture", biomeColorsTexture); plantsMeshFilter.GetComponent <MeshRenderer>().material.SetTexture("_BiomeTexture", biomeColorsTexture); biomeColors.Dispose(); }