56 lines
2.1 KiB
C#
56 lines
2.1 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using UnityEditor;
|
|
|
|
namespace LeTai.Asset.TranslucentImage.Editor
|
|
{
|
|
class ScenceGizmoAutoDisable : AssetPostprocessor
|
|
{
|
|
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
|
{
|
|
if (!importedAssets.Any(p => p.Contains("TranslucentImage")))
|
|
return;
|
|
|
|
var structAnnotation = Type.GetType("UnityEditor.Annotation, UnityEditor");
|
|
if (structAnnotation == null) return;
|
|
|
|
var fieldClassId = structAnnotation.GetField("classID");
|
|
var fieldScriptClass = structAnnotation.GetField("scriptClass");
|
|
var fieldFlags = structAnnotation.GetField("flags");
|
|
var fieldIconEnabled = structAnnotation.GetField("iconEnabled");
|
|
|
|
Type classAnnotationUtility = Type.GetType("UnityEditor.AnnotationUtility, UnityEditor");
|
|
if (classAnnotationUtility == null) return;
|
|
|
|
var methodGetAnnotations = classAnnotationUtility.GetMethod("GetAnnotations", BindingFlags.NonPublic | BindingFlags.Static);
|
|
if (methodGetAnnotations == null) return;
|
|
var methodSetIconEnabled = classAnnotationUtility.GetMethod("SetIconEnabled", BindingFlags.NonPublic | BindingFlags.Static);
|
|
if (methodSetIconEnabled == null) return;
|
|
|
|
Array annotations = (Array)methodGetAnnotations.Invoke(null, null);
|
|
foreach (var a in annotations)
|
|
{
|
|
string scriptClass = (string)fieldScriptClass.GetValue(a);
|
|
|
|
// built in types
|
|
if (string.IsNullOrEmpty(scriptClass)) continue;
|
|
|
|
int classId = (int)fieldClassId.GetValue(a);
|
|
int flags = (int)fieldFlags.GetValue(a);
|
|
int iconEnabled = (int)fieldIconEnabled.GetValue(a);
|
|
|
|
const int maskHasIcon = 1;
|
|
bool hasIconFlag = (flags & maskHasIcon) == maskHasIcon;
|
|
|
|
if (hasIconFlag
|
|
&& iconEnabled != 0
|
|
&& scriptClass.Contains("TranslucentImage"))
|
|
{
|
|
methodSetIconEnabled.Invoke(null, new object[] { classId, scriptClass, 0 });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|