예제 #1
0
    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;
        }
    }
예제 #2
0
    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;
            }
        }
    }