private static int[] ProcessInitializeOnLoadAttributes() { List <int> list = null; Assembly[] loadedAssemblies = EditorAssemblies.loadedAssemblies; EditorAssemblies.m_TotalNumRuntimeInitializeMethods = 0; EditorAssemblies.m_RuntimeInitializeClassInfoList = new List <RuntimeInitializeClassInfo>(); for (int i = 0; i < loadedAssemblies.Length; i++) { int totalNumRuntimeInitializeMethods = EditorAssemblies.m_TotalNumRuntimeInitializeMethods; int count = EditorAssemblies.m_RuntimeInitializeClassInfoList.Count; try { Type[] typesFromAssembly = AssemblyHelper.GetTypesFromAssembly(loadedAssemblies[i]); Type[] array = typesFromAssembly; for (int j = 0; j < array.Length; j++) { Type type = array[j]; if (type.IsDefined(typeof(InitializeOnLoadAttribute), false)) { EditorAssemblies.ProcessEditorInitializeOnLoad(type); } EditorAssemblies.ProcessStaticMethodAttributes(type); } } catch (Exception exception) { Debug.LogException(exception); if (list == null) { list = new List <int>(); } if (totalNumRuntimeInitializeMethods != EditorAssemblies.m_TotalNumRuntimeInitializeMethods) { EditorAssemblies.m_TotalNumRuntimeInitializeMethods = totalNumRuntimeInitializeMethods; } if (count != EditorAssemblies.m_RuntimeInitializeClassInfoList.Count) { EditorAssemblies.m_RuntimeInitializeClassInfoList.RemoveRange(count, EditorAssemblies.m_RuntimeInitializeClassInfoList.Count - count); } list.Add(i); } } int[] result; if (list == null) { result = null; } else { result = list.ToArray(); } return(result); }
private static void ProcessInitializeOnLoadAttributes() { EditorAssemblies.m_TotalNumRuntimeInitializeMethods = 0; EditorAssemblies.m_RuntimeInitializeClassInfoList = new List <RuntimeInitializeClassInfo>(); foreach (System.Type loadedType in EditorAssemblies.loadedTypes) { if (loadedType.IsDefined(typeof(InitializeOnLoadAttribute), false)) { EditorAssemblies.ProcessEditorInitializeOnLoad(loadedType); } EditorAssemblies.ProcessStaticMethodAttributes(loadedType); } }
private static int[] ProcessInitializeOnLoadAttributes() { EditorAssemblies.m_TotalNumRuntimeInitializeMethods = 0; EditorAssemblies.m_RuntimeInitializeClassInfoList = new List <RuntimeInitializeClassInfo>(); foreach (Type current in EditorAssemblies.GetAllTypesWithAttribute <InitializeOnLoadAttribute>()) { EditorAssemblies.ProcessEditorInitializeOnLoad(current); } foreach (MethodInfo current2 in EditorAssemblies.GetAllMethodsWithAttribute <RuntimeInitializeOnLoadMethodAttribute>(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { EditorAssemblies.ProcessRuntimeInitializeOnLoad(current2); } foreach (MethodInfo current3 in EditorAssemblies.GetAllMethodsWithAttribute <InitializeOnLoadMethodAttribute>(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { EditorAssemblies.ProcessInitializeOnLoadMethod(current3); } return(null); }