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; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |