Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
     }
 }