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