// Not in use cause getPropertyHandlerMethod is really expensive private void HandleKeyworDrawers() { foreach (MaterialProperty p in Properties) { ShaderHelper.EnableDisableKeywordsBasedOnTheirFloatValue(Materials, Shader, p.name); } }
static void FixKeywords() { IEnumerable <Material> materials = AssetDatabase.FindAssets("t:material").Select(g => AssetDatabase.GUIDToAssetPath(g)).Where(p => string.IsNullOrEmpty(p) == false) .Select(p => AssetDatabase.LoadAssetAtPath <Material>(p)).Where(m => m != null && m.shader != null) .Where(m => ShaderOptimizer.IsMaterialLocked(m) == false && ShaderHelper.IsShaderUsingThryShaderEditor(m.shader)); float f = 0; int count = materials.Count(); foreach (Material m in materials) { for (int i = 0; i < m.shader.GetPropertyCount(); i++) { if (m.shader.GetPropertyType(i) == UnityEngine.Rendering.ShaderPropertyType.Float) { ShaderHelper.EnableDisableKeywordsBasedOnTheirFloatValue(new Material[] { m }, m.shader, m.shader.GetPropertyName(i)); } } EditorUtility.DisplayProgressBar("Fixing Keywords", m.name, f++ / count); } EditorUtility.ClearProgressBar(); }