void OnEnable() {
AnalyzeShader();
// Reflect some things
sipp = Type.GetType( "UnityEditor.ShaderInspectorPlatformsPopup, UnityEditor" );
newSipp = sipp.GetConstructor( new Type[] { typeof( string ) } );
BindingFlags bfs = BindingFlags.Public | BindingFlags.Static | BindingFlags.GetProperty;
BindingFlags privStatic = BindingFlags.NonPublic | BindingFlags.Static;
sippCurrentMode = sipp.GetProperty( "currentMode", bfs );
sippCurrentPlatformMask = sipp.GetProperty( "currentPlatformMask", bfs );
sippCurrentVariantStripping = sipp.GetProperty( "currentVariantStripping", bfs );
shinsp = Type.GetType( "UnityEditor.ShaderInspector, UnityEditor" );
shinspGetErrorListUI = shinsp.GetMethod( "ShaderErrorListUI", privStatic );
sutil = Type.GetType( "UnityEditor.ShaderUtil, UnityEditor" );
sutilHasShadowCasterPass = sutil.GetMethod( "HasShadowCasterPass", privStatic );
sutilGetRenderQueue = sutil.GetMethod( "GetRenderQueue", privStatic );
sutilGetLOD = sutil.GetMethod( "GetLOD", privStatic );
sutilDoesIgnoreProjector = sutil.GetMethod( "DoesIgnoreProjector", privStatic );
sutilHasSurfaceShaders = sutil.GetMethod( "HasSurfaceShaders", privStatic );
sutilHasShaderSnippets = sutil.GetMethod( "HasShaderSnippets", privStatic );
sutilOpenParsedSurfaceShader = sutil.GetMethod( "OpenParsedSurfaceShader", privStatic );
sutilOpenCompiledShader = sutil.GetMethod( "OpenCompiledShader", privStatic );
sutilGetShaderErrorCount = sutil.GetMethod( "GetShaderErrorCount", privStatic );
sutilGetShaderErrors = sutil.GetMethod( "GetShaderErrors", privStatic );
//BindingFlags priv = BindingFlags.NonPublic;
shaderDisableBatching = typeof( Shader ).GetProperty( "disableBatching", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty );
//disableBatchingType = Type.GetType( "UnityEngine.DisableBatchingType, UnityEngine" );
editorGUIMouseButtonDown = typeof( EditorGUI ).GetMethod( "ButtonMouseDown", privStatic, null, new Type[]{typeof(Rect),typeof(GUIContent),typeof(FocusType),typeof(GUIStyle)}, null );
Type guilaGroup = Type.GetType( "UnityEngine.GUILayoutGroup, UnityEngine" );
guilayoutgroupGetLast = guilaGroup.GetMethod( "GetLast", BindingFlags.Instance | BindingFlags.Public );
guiLayoutUtilityTopLevel = typeof( GUILayoutUtility ).GetProperty( "topLevel", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetProperty );
editorGuiUtilityLoadIcon = typeof( EditorGUIUtility ).GetMethod( "LoadIcon", privStatic );
editorGuiUtilityTextContent = typeof( EditorGUIUtility ).GetMethod( "TextContent", privStatic );
}