UnityEditor.MaterialPropertyHandler.GetShaderPropertyHandler C# (CSharp) Method

GetShaderPropertyHandler() private static method

private static GetShaderPropertyHandler ( Shader shader, string name ) : MaterialPropertyHandler
shader UnityEngine.Shader
name string
return MaterialPropertyHandler
        private static MaterialPropertyHandler GetShaderPropertyHandler(Shader shader, string name)
        {
            string[] shaderPropertyAttributes = ShaderUtil.GetShaderPropertyAttributes(shader, name);
            if ((shaderPropertyAttributes == null) || (shaderPropertyAttributes.Length == 0))
            {
                return null;
            }
            MaterialPropertyHandler handler2 = new MaterialPropertyHandler();
            foreach (string str in shaderPropertyAttributes)
            {
                bool flag;
                MaterialPropertyDrawer shaderPropertyDrawer = GetShaderPropertyDrawer(str, out flag);
                if (shaderPropertyDrawer != null)
                {
                    if (flag)
                    {
                        if (handler2.m_DecoratorDrawers == null)
                        {
                            handler2.m_DecoratorDrawers = new List<MaterialPropertyDrawer>();
                        }
                        handler2.m_DecoratorDrawers.Add(shaderPropertyDrawer);
                    }
                    else
                    {
                        if (handler2.m_PropertyDrawer != null)
                        {
                            Debug.LogWarning(string.Format("Shader property {0} already has a property drawer", name), shader);
                        }
                        handler2.m_PropertyDrawer = shaderPropertyDrawer;
                    }
                }
            }
            return handler2;
        }

Usage Example

        internal static MaterialPropertyHandler GetHandler(Shader shader, string name)
        {
            MaterialPropertyHandler result;

            if (shader == null)
            {
                result = null;
            }
            else
            {
                string propertyString = MaterialPropertyHandler.GetPropertyString(shader, name);
                MaterialPropertyHandler materialPropertyHandler;
                if (MaterialPropertyHandler.s_PropertyHandlers.TryGetValue(propertyString, out materialPropertyHandler))
                {
                    result = materialPropertyHandler;
                }
                else
                {
                    materialPropertyHandler = MaterialPropertyHandler.GetShaderPropertyHandler(shader, name);
                    if (materialPropertyHandler != null && materialPropertyHandler.IsEmpty())
                    {
                        materialPropertyHandler = null;
                    }
                    MaterialPropertyHandler.s_PropertyHandlers[propertyString] = materialPropertyHandler;
                    result = materialPropertyHandler;
                }
            }
            return(result);
        }
All Usage Examples Of UnityEditor.MaterialPropertyHandler::GetShaderPropertyHandler