| using UnityEngine; | 
| using System; | 
|   | 
|   | 
| public static class MaterialUtility | 
| { | 
|   | 
|     public static Material GetDefaultSpriteGrayMaterial() | 
|     { | 
|         return BuiltInLoader.LoadMaterial("SpriteGray"); | 
|     } | 
|   | 
|     public static Material GetInstantiatedSpriteGrayMaterial() | 
|     { | 
|         var material = new Material(GetDefaultSpriteGrayMaterial()); | 
|         return material; | 
|     } | 
|   | 
|     public static Material GetSmoothMaskGrayMaterial() | 
|     { | 
|         return BuiltInLoader.LoadMaterial("SmoothMaskGray"); | 
|     } | 
|   | 
|     public static Material GetInstantiatedSpriteTwinkleMaterial() | 
|     { | 
|         var material = BuiltInLoader.LoadMaterial("Flash"); | 
|         return new Material(material); | 
|     } | 
|   | 
|     public static Material GetUIDefaultGraphicMaterial() | 
|     { | 
|         return UnityEngine.UI.Image.defaultGraphicMaterial; | 
|     } | 
|   | 
|     public static Material GetUIBlurMaterial() | 
|     { | 
|         return BuiltInLoader.LoadMaterial("GUIBlurMaterial"); | 
|     } | 
|   | 
|     public static Material GetGUIRenderTextureMaterial() | 
|     { | 
|         return BuiltInLoader.LoadMaterial("UI_RenderTexture"); | 
|     } | 
|   | 
|     public static void SetRenderSortingOrder(this GameObject root, int sortingOrder, bool includeChildren) | 
|     { | 
|   | 
|         if (root == null) | 
|         { | 
|             throw new NullReferenceException(); | 
|         } | 
|   | 
|         if (includeChildren) | 
|         { | 
|             var renderers = root.GetComponentsInChildren<Renderer>(); | 
|             for (var i = 0; i < renderers.Length; i++) | 
|             { | 
|                 var renderer = renderers[i]; | 
|                 renderer.sortingOrder = sortingOrder; | 
|             } | 
|         } | 
|         else | 
|         { | 
|             var renderer = root.GetComponent<Renderer>(); | 
|             if (renderer != null) | 
|             { | 
|                 renderer.sortingOrder = sortingOrder; | 
|             } | 
|         } | 
|   | 
|     } | 
|   | 
|   | 
|     public static Material m_HudMaterial; | 
|     public static Material hudMaterial { | 
|         get { | 
|             if (m_HudMaterial == null) | 
|             { | 
|                 m_HudMaterial = BuiltInLoader.LoadMaterial("HUD_HeadupName"); | 
|                 m_HudMaterial.SetTexture("_Tex1", FontUtility.preferred.material.mainTexture); | 
|             } | 
|             return m_HudMaterial; | 
|         } | 
|     } | 
|   | 
|   | 
|     static Shader m_HeroShader; | 
|     static Shader m_PlayerShader; | 
|     static Shader heroShader { | 
|         get { | 
|             if (m_HeroShader == null) | 
|             { | 
|                 m_HeroShader = Shader.Find("Character/Character,Emission,Flow_Hero"); | 
|             } | 
|   | 
|             if (m_HeroShader == null) | 
|             { | 
|                 m_HeroShader = Shader.Find("Character/Character, Emission,Flow_Hero"); | 
|             } | 
|   | 
|             return m_HeroShader; | 
|         } | 
|     } | 
|   | 
|     static Shader playerShader { | 
|         get { | 
|             if (m_PlayerShader == null) | 
|             { | 
|                 m_PlayerShader = Shader.Find("Character/Character,Emission,Flow"); | 
|             } | 
|   | 
|             if (m_PlayerShader == null) | 
|             { | 
|                 m_PlayerShader = Shader.Find("Character/Character, Emission,Flow"); | 
|             } | 
|   | 
|             return m_PlayerShader; | 
|         } | 
|     } | 
|   | 
|     public static void SwitchXrayShader(Material _material, bool _isHero) | 
|     { | 
|         if (_material == null) | 
|         { | 
|             return; | 
|         } | 
|   | 
|         if (_isHero) | 
|         { | 
|             if (_material.shader.name != "Character/Character,Emission,Flow_Hero" && _material.shader.name != "Character/Character, Emission,Flow_Hero") | 
|             { | 
|                 _material.shader = heroShader; | 
|                 _material.SetColor("_XRayColor", new Color32(0, 107, 255, 255)); | 
|             } | 
|         } | 
|         else | 
|         { | 
|             if (_material.shader.name != "Character/Character, Emission,Flow" && _material.shader.name != "Character/Character,Emission,Flow") | 
|             { | 
|                 _material.shader = playerShader; | 
|             } | 
|         } | 
|     } | 
|   | 
| } |