Seven is the number.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

62 lines
2.3 KiB

using System;
using System.Linq;
using System.Reflection;
namespace LeTai.Asset.TrueShadow.Editor
{
public static class ScenceGizmoAutoDisable
{
static readonly string[] NO_GIZMOS_CLASSES = {
"TrueShadow"
};
[UnityEditor.Callbacks.DidReloadScripts]
private static void OnScriptsReloaded()
{
var Annotation = Type.GetType("UnityEditor.Annotation, UnityEditor");
if (Annotation == null) return;
var ClassId = Annotation.GetField("classID");
var ScriptClass = Annotation.GetField("scriptClass");
var Flags = Annotation.GetField("flags");
var IconEnabled = Annotation.GetField("iconEnabled");
Type AnnotationUtility = Type.GetType("UnityEditor.AnnotationUtility, UnityEditor");
if (AnnotationUtility == null) return;
var GetAnnotations = AnnotationUtility.GetMethod("GetAnnotations",
BindingFlags.NonPublic | BindingFlags.Public |
BindingFlags.Static);
if (GetAnnotations == null) return;
var SetIconEnabled = AnnotationUtility.GetMethod("SetIconEnabled",
BindingFlags.NonPublic | BindingFlags.Public |
BindingFlags.Static);
if (SetIconEnabled == null) return;
Array annotations = (Array) GetAnnotations.Invoke(null, null);
foreach (var a in annotations)
{
int classId = (int) ClassId.GetValue(a);
string scriptClass = (string) ScriptClass.GetValue(a);
int flags = (int) Flags.GetValue(a);
int iconEnabled = (int) IconEnabled.GetValue(a);
// built in types
if (string.IsNullOrEmpty(scriptClass)) continue;
// load a json or text file with class names
const int HasIcon = 1;
bool hasIconFlag = (flags & HasIcon) == HasIcon;
if (hasIconFlag &&
iconEnabled != 0 &&
NO_GIZMOS_CLASSES.Contains(scriptClass))
{
SetIconEnabled.Invoke(null, new object[] {classId, scriptClass, 0});
}
}
}
}
}