Files
kridoo 6e91a0c7f0 111
2025-09-15 17:32:08 +08:00

57 lines
1.3 KiB
C#

// Copyright (c) Jason Ma
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
namespace LWGUI
{
public static class UnityEditorExtension
{
#region MaterialEditor
// For Developers: Call this after a material has modified in code
public static void ApplyMaterialPropertyAndDecoratorDrawers(Material material)
{
var objs = new Object[] { material };
ApplyMaterialPropertyAndDecoratorDrawers(objs);
}
// Called after edit or undo
public static void ApplyMaterialPropertyAndDecoratorDrawers(Object[] targets)
{
if (!EditorMaterialUtility.disableApplyMaterialPropertyDrawers)
{
if (targets == null || targets.Length == 0)
return;
var target = targets[0] as Material;
if (target == null)
return;
var shader = target.shader;
string[] propNames = MaterialEditor.GetMaterialPropertyNames(targets);
for (int i = 0; i < propNames.Length; i++)
{
var prop = MaterialEditor.GetMaterialProperty(targets, i);
var drawer = ReflectionHelper.GetPropertyDrawer(shader, prop, out var decoratorDrawers);
if (drawer != null)
{
drawer.Apply(prop);
}
if (decoratorDrawers != null)
{
foreach (var decoratorDrawer in decoratorDrawers)
{
decoratorDrawer.Apply(prop);
}
}
}
}
}
#endregion
}
}