private static GetShaderPropertyHandler ( |
||
shader | ||
name | string | |
Результат |
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;
}
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); }