public static void Refresh(bool delay, params UnityObject[] targets)
 {
     VariableMaterial.delay = delay;
     foreach (var target in targets)
     {
         var  material = (Material)target;
         bool isFlat   = material.shader != null && material.shader.name.Contains("#");
         if (isFlat || VariableMaterial.IsBroken(material))
         {
             VariableMaterial.Flatten(target);
         }
     }
 }
        public static List <Material> GetAll()
        {
            var materials         = File.GetAssets <Material>("*.mat");
            var variableMaterials = new List <Material>();

            foreach (var material in materials)
            {
                if (material.IsNull())
                {
                    continue;
                }
                string editorName = material.shader.GetVariable <string>("customEditor");
                if (editorName.Contains("VariableMaterialEditor") || VariableMaterial.IsBroken(material))
                {
                    variableMaterials.Add(material);
                }
            }
            return(variableMaterials);
        }