public void InvalidateMaterials() { if (blinking) { //If blink is in process update inmediately only changed material and restore blinking one for (int i = 0; i < rendererMaterials.Length; ++i) { RendMaterials rendMaterials = rendererMaterials[i]; Material[] sharedMaterials = rendMaterials.renderer.sharedMaterials; //This creates a copy of the array, not the materials bool modified = false; for (int j = 0; j < sharedMaterials.Length; ++j) { if ((sharedMaterials[j] != currentBlinkMaterial) && (sharedMaterials[j] != rendMaterials.sharedMaterialsCopy[j])) { rendMaterials.sharedMaterialsCopy[j] = sharedMaterials[j]; sharedMaterials[j] = currentBlinkMaterial; modified = true; } } if (modified) { rendMaterials.renderer.sharedMaterials = sharedMaterials; } } } else { materialsNeedUpdate = true; } }
private void FindRenderers() { GameObject model = transform.FindDeepChild("Model").gameObject; Renderer[] renderers = model.GetComponentsInChildren <Renderer>(); if (renderers.Length > 0) { rendererMaterials = new RendMaterials[renderers.Length]; for (int i = 0; i < renderers.Length; ++i) { rendererMaterials[i] = new RendMaterials(); rendererMaterials[i].renderer = renderers[i]; rendererMaterials[i].sharedMaterialsCopy = rendererMaterials[i].renderer.sharedMaterials; } } }