34 lines
929 B
C#
34 lines
929 B
C#
using System.Collections.Generic;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace Coffee.UISoftMaskInternal.AssetModification
|
|
{
|
|
internal abstract class ComponentModifier<T> : IComponentModifier where T : Component
|
|
{
|
|
private static readonly List<T> s_Components = new List<T>();
|
|
|
|
public bool isModified { get; private set; }
|
|
|
|
public bool ModifyComponent(GameObject root, bool dryRun)
|
|
{
|
|
root.GetComponentsInChildren(true, s_Components);
|
|
foreach (var c in s_Components)
|
|
{
|
|
if (PrefabUtility.IsPartOfAnyPrefab(c.gameObject)) continue;
|
|
|
|
if (ModifyComponent(c, dryRun))
|
|
{
|
|
isModified = true;
|
|
}
|
|
}
|
|
|
|
return isModified;
|
|
}
|
|
|
|
public abstract string Report();
|
|
|
|
protected abstract bool ModifyComponent(T component, bool dryRun);
|
|
}
|
|
}
|