public void ApplyPallet(float time) { if (pallet == null) { return; } SpriteRenderer spriteRenderer = GetComponent <SpriteRenderer>(); if (spriteRenderer != null) { spriteRenderer.color = pallet.GetColor(layer, time); } ParticleSystem particleSystem = GetComponent <ParticleSystem>(); if (particleSystem != null) { var main = particleSystem.main; main.startColor = new ParticleSystem.MinMaxGradient(pallet.GetColor(layer, time), pallet.GetColor(highlight, time)); } Camera camera = GetComponent <Camera>(); if (camera != null) { camera.backgroundColor = pallet.GetColor(layer, time); } TextMeshPro textMeshPro = GetComponent <TextMeshPro>(); if (textMeshPro != null) { textMeshPro.color = pallet.GetColor(layer, time); } TextMeshProUGUI textMeshProGui = GetComponent <TextMeshProUGUI>(); if (textMeshProGui != null) { textMeshProGui.color = pallet.GetColor(layer, time); } Image image = GetComponent <Image>(); if (image != null) { image.color = pallet.GetColor(layer, time); } }
// Gegeven de coordinaten reken de mandelbrot uit en geef de kleuren terug private Color[,] GetMandelbrotColorArray(Size size, PointD[,] coordinates, uint iterations) { ColorPallet pallet = new ColorPallet(this.ColorScheme); Color[,] colorResults = new Color[size.Width, size.Height]; // Een array is een reference-type en hiermee thread-safe zolang je niet naar dezelfde waarden in de array schrijft. // Parallel.for is een for loop die de verzameling verdeelt over meerdere threads Parallel.For(0, size.Width, x => { for (int y = 0; y < size.Height; y++) { double c_result = 0; // Reken voor dit coordinaat het aantal iteraties en het eindresultaat uit uint it_result = coordinates[x, y].GetMandelBrotNumber(iterations, out c_result); // Geef de kleur terug gegeven het aantal iteraties en het eindresultaat colorResults[x, y] = pallet.GetColor(it_result, c_result); } }); return(colorResults); }