示例#1
0
        static NGConsoleWindow()
        {
            NGConsoleWindow.nativeConsoleType = UnityAssemblyVerifier.TryGetType(typeof(EditorWindow).Assembly, "UnityEditor.ConsoleWindow");
            if (NGConsoleWindow.nativeConsoleType != null)
            {
                NGConsoleWindow.nativeConsoleWindowField = UnityAssemblyVerifier.TryGetField(NGConsoleWindow.nativeConsoleType, "ms_ConsoleWindow", BindingFlags.NonPublic | BindingFlags.Static);

                if (NGConsoleWindow.nativeConsoleWindowField != null)
                {
                    EditorApplication.update += NGConsoleWindow.AutoReplaceNativeConsole;
                }
            }
        }
示例#2
0
        static NGHierarchyEnhancer()
        {
            HQ.SettingsChanged += NGHierarchyEnhancer.Preferences_SettingsChanged;

            NGHierarchyEnhancer.hierarchyType = UnityAssemblyVerifier.TryGetType(typeof(EditorWindow).Assembly, "UnityEditor.SceneHierarchyWindow");

            string[] names = Enum.GetNames(typeof(EventModifiers));

            NGHierarchyEnhancer.eventModifierNames = new string[names.Length - 1];
            for (int i = 1; i < names.Length; i++)
            {
                NGHierarchyEnhancer.eventModifierNames[i - 1] = names[i];
            }
        }
示例#3
0
        static UnityEventBaseFinder()
        {
            Type type = UnityAssemblyVerifier.TryGetType(typeof(UnityEventBase).Assembly, "UnityEngine.Events.PersistentCallGroup");

            if (type != null)
            {
                UnityEventBaseFinder.PersistentCallGroup = UnityAssemblyVerifier.TryGetField(type, "m_Calls", BindingFlags.NonPublic | BindingFlags.Instance);
            }

            type = UnityAssemblyVerifier.TryGetType(typeof(UnityEventBase).Assembly, "UnityEngine.Events.PersistentCall");
            if (type != null)
            {
                UnityEventBaseFinder.PersistentCall = UnityAssemblyVerifier.TryGetField(type, "m_Target", BindingFlags.NonPublic | BindingFlags.Instance);
            }

            if (UnityEventBaseFinder.PersistentCallGroup == null || UnityEventBaseFinder.PersistentCall == null)
            {
                UnityEventBaseFinder.m_persistantCalls = null;
            }
        }
示例#4
0
        static UnityLogEntries()
        {
            // TODO Unity <5.6 backward compatibility?
            Type logEntriesType = typeof(InternalEditorUtility).Assembly.GetType("UnityEditorInternal.LogEntries") ?? UnityAssemblyVerifier.TryGetType(typeof(Editor).Assembly, "UnityEditor.LogEntries");

            if (logEntriesType != null)
            {
                PropertyInfo consoleFlagsProperty = UnityAssemblyVerifier.TryGetProperty(logEntriesType, "consoleFlags", BindingFlags.Static | BindingFlags.Public);

                if (consoleFlagsProperty != null)
                {
                    UnityLogEntries.SetConsoleFlags = (Action <int>)Delegate.CreateDelegate(typeof(Action <int>), null, consoleFlagsProperty.GetSetMethod());
                    UnityLogEntries.GetConsoleFlags = (Func <int>)Delegate.CreateDelegate(typeof(Func <int>), null, consoleFlagsProperty.GetGetMethod());
                }

                UnityLogEntries.StartGettingEntries = (Func <int>)Delegate.CreateDelegate(typeof(Func <int>), null, UnityAssemblyVerifier.TryGetMethod(logEntriesType, "StartGettingEntries", BindingFlags.Static | BindingFlags.Public));
                UnityLogEntries.SetConsoleFlag      = (Action <int, bool>)Delegate.CreateDelegate(typeof(Action <int, bool>), null, UnityAssemblyVerifier.TryGetMethod(logEntriesType, "SetConsoleFlag", BindingFlags.Static | BindingFlags.Public));
                UnityLogEntries.EndGettingEntries   = (Action)Delegate.CreateDelegate(typeof(Action), null, UnityAssemblyVerifier.TryGetMethod(logEntriesType, "EndGettingEntries", BindingFlags.Static | BindingFlags.Public));
                UnityLogEntries.GetCount            = (Func <int>)Delegate.CreateDelegate(typeof(Func <int>), null, UnityAssemblyVerifier.TryGetMethod(logEntriesType, "GetCount", BindingFlags.Static | BindingFlags.Public));

                Type       logEntryType     = typeof(InternalEditorUtility).Assembly.GetType("UnityEditorInternal.LogEntry") ?? UnityAssemblyVerifier.TryGetType(typeof(Editor).Assembly, "UnityEditor.LogEntry");
                Type       delegateType     = Type.GetType("System.Func`3[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[" + logEntryType.AssemblyQualifiedName + "],[System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
                MethodInfo GetEntryInternal = UnityAssemblyVerifier.TryGetMethod(logEntriesType, "GetEntryInternal", BindingFlags.Static | BindingFlags.Public);
                UnityLogEntries.GetEntryInternalMethod = Delegate.CreateDelegate(delegateType, null, GetEntryInternal);

                UnityLogEntries.GetEntryCount = (Func <int, int>)Delegate.CreateDelegate(typeof(Func <int, int>), null, UnityAssemblyVerifier.TryGetMethod(logEntriesType, "GetEntryCount", BindingFlags.Static | BindingFlags.Public));
                UnityLogEntries.Clear         = (Action)Delegate.CreateDelegate(typeof(Action), null, UnityAssemblyVerifier.TryGetMethod(logEntriesType, "Clear", BindingFlags.Static | BindingFlags.Public));
            }
        }
示例#5
0
        public UnityLogEntry()
        {
            // TODO Unity <5.6 backward compatibility?
            Type logEntryType = typeof(InternalEditorUtility).Assembly.GetType("UnityEditorInternal.LogEntry") ?? UnityAssemblyVerifier.TryGetType(typeof(Editor).Assembly, "UnityEditor.LogEntry");

            if (logEntryType != null)
            {
                this.instance = Activator.CreateInstance(logEntryType);

                this.conditionField      = UnityAssemblyVerifier.TryGetField(logEntryType, "condition", BindingFlags.Instance | BindingFlags.Public);
                this.errorNumField       = UnityAssemblyVerifier.TryGetField(logEntryType, "errorNum", BindingFlags.Instance | BindingFlags.Public);
                this.fileField           = UnityAssemblyVerifier.TryGetField(logEntryType, "file", BindingFlags.Instance | BindingFlags.Public);
                this.lineField           = UnityAssemblyVerifier.TryGetField(logEntryType, "line", BindingFlags.Instance | BindingFlags.Public);
                this.modeField           = UnityAssemblyVerifier.TryGetField(logEntryType, "mode", BindingFlags.Instance | BindingFlags.Public);
                this.instanceIDField     = UnityAssemblyVerifier.TryGetField(logEntryType, "instanceID", BindingFlags.Instance | BindingFlags.Public);
                this.identifierField     = UnityAssemblyVerifier.TryGetField(logEntryType, "identifier", BindingFlags.Instance | BindingFlags.Public);
                this.isWorldPlayingField = UnityAssemblyVerifier.TryGetField(logEntryType, "isWorldPlaying", BindingFlags.Instance | BindingFlags.Public);
            }
        }