Ejemplo n.º 1
0
        private static void StoreRuntimeInitializeClassInfo(Type type, List <string> methodNames)
        {
            RuntimeInitializeClassInfo runtimeInitializeClassInfo = new RuntimeInitializeClassInfo();

            runtimeInitializeClassInfo.assemblyName = type.Assembly.GetName().Name.ToString();
            runtimeInitializeClassInfo.className    = type.ToString();
            runtimeInitializeClassInfo.methodNames  = methodNames.ToArray();
            EditorAssemblies.m_RuntimeInitializeClassInfoList.Add(runtimeInitializeClassInfo);
            EditorAssemblies.m_TotalNumRuntimeInitializeMethods += methodNames.Count;
        }
Ejemplo n.º 2
0
        private static void StoreRuntimeInitializeClassInfo(Type type, List <string> methodNames, List <RuntimeInitializeLoadType> loadTypes)
        {
            RuntimeInitializeClassInfo classInfo = new RuntimeInitializeClassInfo();

            classInfo.assemblyName = type.Assembly.GetName().Name.ToString();
            classInfo.className    = (string)type.ToString();
            classInfo.methodNames  = methodNames.ToArray();
            classInfo.loadTypes    = loadTypes.ToArray();
            m_RuntimeInitializeClassInfoList.Add(classInfo);
            m_TotalNumRuntimeInitializeMethods += methodNames.Count;
        }
Ejemplo n.º 3
0
        private static void StoreRuntimeInitializeClassInfo(System.Type type, List <string> methodNames, List <RuntimeInitializeLoadType> loadTypes)
        {
            RuntimeInitializeClassInfo item = new RuntimeInitializeClassInfo {
                assemblyName = type.Assembly.GetName().Name.ToString(),
                className    = type.ToString(),
                methodNames  = methodNames.ToArray(),
                loadTypes    = loadTypes.ToArray()
            };

            m_RuntimeInitializeClassInfoList.Add(item);
            m_TotalNumRuntimeInitializeMethods += methodNames.Count;
        }
Ejemplo n.º 4
0
        static void FindRuntimeInitializeOnLoadMethodAttributes(TypeDefinition type,
                                                                string assemblyName,
                                                                ref List <RuntimeInitializeClassInfo> classInfoList,
                                                                ref int methodCount)
        {
            if (!type.HasMethods)
            {
                return;
            }

            foreach (var method in type.Methods)
            {
                // RuntimeInitializeOnLoadMethod only works on static methods.
                if (!method.IsStatic)
                {
                    continue;
                }

                foreach (var attribute in method.CustomAttributes)
                {
                    if (attribute.AttributeType.FullName == "UnityEngine.RuntimeInitializeOnLoadMethodAttribute")
                    {
                        RuntimeInitializeLoadType loadType = RuntimeInitializeLoadType.AfterSceneLoad;

                        if (attribute.ConstructorArguments != null && attribute.ConstructorArguments.Count > 0)
                        {
                            loadType = (RuntimeInitializeLoadType)attribute.ConstructorArguments[0].Value;
                        }

                        RuntimeInitializeClassInfo classInfo = new RuntimeInitializeClassInfo();

                        classInfo.assemblyName = assemblyName;
                        classInfo.className    = type.FullName;
                        classInfo.methodNames  = new[] { method.Name };
                        classInfo.loadTypes    = new[] { loadType };
                        classInfoList.Add(classInfo);
                        methodCount++;
                    }
                }
            }
        }