internal static void InitializeBuildCallbacks() { buildPostProjectGeneratedProcessors = new List <IPostGenerateGradleAndroidProject>(); foreach (var type in EditorAssemblies.GetAllTypesWithInterface <IPostGenerateGradleAndroidProject>()) { if (type.IsAbstract || type.IsInterface) { continue; } buildPostProjectGeneratedProcessors.Add(Activator.CreateInstance(type) as IPostGenerateGradleAndroidProject); } buildPostProjectGeneratedProcessors.Sort(BuildPipelineInterfaces.CompareICallbackOrder); }
internal static void InitializeBuildCallbacks(BuildCallbacks findFlags) { if (findFlags == previousFlags) { return; } CleanupBuildCallbacks(); previousFlags = findFlags; bool findBuildProcessors = (findFlags & BuildCallbacks.BuildProcessors) == BuildCallbacks.BuildProcessors; bool findSceneProcessors = (findFlags & BuildCallbacks.SceneProcessors) == BuildCallbacks.SceneProcessors; bool findTargetProcessors = (findFlags & BuildCallbacks.BuildTargetProcessors) == BuildCallbacks.BuildTargetProcessors; bool findFilterProcessors = (findFlags & BuildCallbacks.FilterAssembliesProcessors) == BuildCallbacks.FilterAssembliesProcessors; bool findShaderProcessors = (findFlags & BuildCallbacks.ShaderProcessors) == BuildCallbacks.ShaderProcessors; var postProcessBuildAttributeParams = new Type[] { typeof(BuildTarget), typeof(string) }; foreach (var t in EditorAssemblies.GetAllTypesWithInterface <IOrderedCallback>()) { if (t.IsAbstract || t.IsInterface) { continue; } // Defer creating the instance until we actually add it to one of the lists object instance = null; if (findBuildProcessors) { AddToListIfTypeImplementsInterface(t, ref instance, ref processors.buildPreprocessors); AddToListIfTypeImplementsInterface(t, ref instance, ref processors.buildPreprocessorsWithReport); AddToListIfTypeImplementsInterface(t, ref instance, ref processors.buildPostprocessors); AddToListIfTypeImplementsInterface(t, ref instance, ref processors.buildPostprocessorsWithReport); } if (findSceneProcessors) { AddToListIfTypeImplementsInterface(t, ref instance, ref processors.sceneProcessors); AddToListIfTypeImplementsInterface(t, ref instance, ref processors.sceneProcessorsWithReport); } if (findTargetProcessors) { AddToListIfTypeImplementsInterface(t, ref instance, ref processors.buildTargetProcessors); } if (findFilterProcessors) { AddToListIfTypeImplementsInterface(t, ref instance, ref processors.filterBuildAssembliesProcessor); } if (findShaderProcessors) { AddToListIfTypeImplementsInterface(t, ref instance, ref processors.shaderProcessors); } } if (findBuildProcessors) { foreach (var m in EditorAssemblies.GetAllMethodsWithAttribute <Callbacks.PostProcessBuildAttribute>()) { if (ValidateMethod <Callbacks.PostProcessBuildAttribute>(m, postProcessBuildAttributeParams)) { AddToList(new AttributeCallbackWrapper(m), ref processors.buildPostprocessorsWithReport); } } } if (findSceneProcessors) { foreach (var m in EditorAssemblies.GetAllMethodsWithAttribute <Callbacks.PostProcessSceneAttribute>()) { if (ValidateMethod <Callbacks.PostProcessSceneAttribute>(m, Type.EmptyTypes)) { AddToList(new AttributeCallbackWrapper(m), ref processors.sceneProcessorsWithReport); } } } if (processors.buildPreprocessors != null) { processors.buildPreprocessors.Sort(CompareICallbackOrder); } if (processors.buildPreprocessorsWithReport != null) { processors.buildPreprocessorsWithReport.Sort(CompareICallbackOrder); } if (processors.buildPostprocessors != null) { processors.buildPostprocessors.Sort(CompareICallbackOrder); } if (processors.buildPostprocessorsWithReport != null) { processors.buildPostprocessorsWithReport.Sort(CompareICallbackOrder); } if (processors.buildTargetProcessors != null) { processors.buildTargetProcessors.Sort(CompareICallbackOrder); } if (processors.sceneProcessors != null) { processors.sceneProcessors.Sort(CompareICallbackOrder); } if (processors.sceneProcessorsWithReport != null) { processors.sceneProcessorsWithReport.Sort(CompareICallbackOrder); } if (processors.filterBuildAssembliesProcessor != null) { processors.filterBuildAssembliesProcessor.Sort(CompareICallbackOrder); } if (processors.shaderProcessors != null) { processors.shaderProcessors.Sort(CompareICallbackOrder); } }
internal static void InitializeBuildCallbacks(BuildCallbacks findFlags) { if (findFlags == previousFlags) { return; } CleanupBuildCallbacks(); previousFlags = findFlags; bool findBuildProcessors = (findFlags & BuildCallbacks.BuildProcessors) == BuildCallbacks.BuildProcessors; bool findSceneProcessors = (findFlags & BuildCallbacks.SceneProcessors) == BuildCallbacks.SceneProcessors; bool findTargetProcessors = (findFlags & BuildCallbacks.BuildTargetProcessors) == BuildCallbacks.BuildTargetProcessors; var postProcessBuildAttributeParams = new Type[] { typeof(BuildTarget), typeof(string) }; foreach (var t in EditorAssemblies.GetAllTypesWithInterface <IOrderedCallback>()) { if (t.IsAbstract || t.IsInterface) { continue; } object instance = null; if (findBuildProcessors) { if (ValidateType <IPreprocessBuild>(t)) { AddToList(instance = Activator.CreateInstance(t), ref buildPreprocessors); } if (ValidateType <IPostprocessBuild>(t)) { AddToList(instance = instance == null ? Activator.CreateInstance(t) : instance, ref buildPostprocessors); } } if (findSceneProcessors && ValidateType <IProcessScene>(t)) { AddToList(instance = instance == null ? Activator.CreateInstance(t) : instance, ref sceneProcessors); } if (findTargetProcessors && ValidateType <IActiveBuildTargetChanged>(t)) { AddToList(instance = instance == null ? Activator.CreateInstance(t) : instance, ref buildTargetProcessors); } } if (findBuildProcessors) { foreach (var m in EditorAssemblies.GetAllMethodsWithAttribute <Callbacks.PostProcessBuildAttribute>()) { if (ValidateMethod <Callbacks.PostProcessBuildAttribute>(m, postProcessBuildAttributeParams)) { AddToList(new AttributeCallbackWrapper(m), ref buildPostprocessors); } } } if (findSceneProcessors) { foreach (var m in EditorAssemblies.GetAllMethodsWithAttribute <Callbacks.PostProcessSceneAttribute>()) { if (ValidateMethod <Callbacks.PostProcessSceneAttribute>(m, Type.EmptyTypes)) { AddToList(new AttributeCallbackWrapper(m), ref sceneProcessors); } } } if (buildPreprocessors != null) { buildPreprocessors.Sort(CompareICallbackOrder); } if (buildPostprocessors != null) { buildPostprocessors.Sort(CompareICallbackOrder); } if (buildTargetProcessors != null) { buildTargetProcessors.Sort(CompareICallbackOrder); } if (sceneProcessors != null) { sceneProcessors.Sort(CompareICallbackOrder); } }
internal static void InitializeBuildCallbacks(BuildPipelineInterfaces.BuildCallbacks findFlags) { if (findFlags != BuildPipelineInterfaces.previousFlags) { BuildPipelineInterfaces.previousFlags = findFlags; BuildPipelineInterfaces.CleanupBuildCallbacks(); bool flag = (findFlags & BuildPipelineInterfaces.BuildCallbacks.BuildProcessors) == BuildPipelineInterfaces.BuildCallbacks.BuildProcessors; bool flag2 = (findFlags & BuildPipelineInterfaces.BuildCallbacks.SceneProcessors) == BuildPipelineInterfaces.BuildCallbacks.SceneProcessors; bool flag3 = (findFlags & BuildPipelineInterfaces.BuildCallbacks.BuildTargetProcessors) == BuildPipelineInterfaces.BuildCallbacks.BuildTargetProcessors; Type[] expectedArguments = new Type[] { typeof(BuildTarget), typeof(string) }; foreach (Type current in EditorAssemblies.GetAllTypesWithInterface <IOrderedCallback>()) { if (!current.IsAbstract && !current.IsInterface) { object obj = null; if (flag) { if (BuildPipelineInterfaces.ValidateType <IPreprocessBuild>(current)) { BuildPipelineInterfaces.AddToList <IPreprocessBuild>(obj = Activator.CreateInstance(current), ref BuildPipelineInterfaces.buildPreprocessors); } if (BuildPipelineInterfaces.ValidateType <IPostprocessBuild>(current)) { BuildPipelineInterfaces.AddToList <IPostprocessBuild>(obj = ((obj != null) ? obj : Activator.CreateInstance(current)), ref BuildPipelineInterfaces.buildPostprocessors); } } if (flag2 && BuildPipelineInterfaces.ValidateType <IProcessScene>(current)) { BuildPipelineInterfaces.AddToList <IProcessScene>(obj = ((obj != null) ? obj : Activator.CreateInstance(current)), ref BuildPipelineInterfaces.sceneProcessors); } if (flag3 && BuildPipelineInterfaces.ValidateType <IActiveBuildTargetChanged>(current)) { BuildPipelineInterfaces.AddToList <IActiveBuildTargetChanged>((obj != null) ? obj : Activator.CreateInstance(current), ref BuildPipelineInterfaces.buildTargetProcessors); } } } if (flag) { foreach (MethodInfo current2 in EditorAssemblies.GetAllMethodsWithAttribute <PostProcessBuildAttribute>(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { if (BuildPipelineInterfaces.ValidateMethod <PostProcessBuildAttribute>(current2, expectedArguments)) { BuildPipelineInterfaces.AddToList <IPostprocessBuild>(new BuildPipelineInterfaces.AttributeCallbackWrapper(current2), ref BuildPipelineInterfaces.buildPostprocessors); } } } if (flag2) { foreach (MethodInfo current3 in EditorAssemblies.GetAllMethodsWithAttribute <PostProcessSceneAttribute>(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { if (BuildPipelineInterfaces.ValidateMethod <PostProcessSceneAttribute>(current3, Type.EmptyTypes)) { BuildPipelineInterfaces.AddToList <IProcessScene>(new BuildPipelineInterfaces.AttributeCallbackWrapper(current3), ref BuildPipelineInterfaces.sceneProcessors); } } } if (BuildPipelineInterfaces.buildPreprocessors != null) { List <IPreprocessBuild> arg_263_0 = BuildPipelineInterfaces.buildPreprocessors; if (BuildPipelineInterfaces.< > f__mg$cache0 == null) { BuildPipelineInterfaces.< > f__mg$cache0 = new Comparison <IPreprocessBuild>(BuildPipelineInterfaces.CompareICallbackOrder); } arg_263_0.Sort(BuildPipelineInterfaces.< > f__mg$cache0); } if (BuildPipelineInterfaces.buildPostprocessors != null) { List <IPostprocessBuild> arg_294_0 = BuildPipelineInterfaces.buildPostprocessors; if (BuildPipelineInterfaces.< > f__mg$cache1 == null) { BuildPipelineInterfaces.< > f__mg$cache1 = new Comparison <IPostprocessBuild>(BuildPipelineInterfaces.CompareICallbackOrder); } arg_294_0.Sort(BuildPipelineInterfaces.< > f__mg$cache1); } if (BuildPipelineInterfaces.buildTargetProcessors != null) { List <IActiveBuildTargetChanged> arg_2C5_0 = BuildPipelineInterfaces.buildTargetProcessors; if (BuildPipelineInterfaces.< > f__mg$cache2 == null) { BuildPipelineInterfaces.< > f__mg$cache2 = new Comparison <IActiveBuildTargetChanged>(BuildPipelineInterfaces.CompareICallbackOrder); } arg_2C5_0.Sort(BuildPipelineInterfaces.< > f__mg$cache2); } if (BuildPipelineInterfaces.sceneProcessors != null) { List <IProcessScene> arg_2F6_0 = BuildPipelineInterfaces.sceneProcessors; if (BuildPipelineInterfaces.< > f__mg$cache3 == null) { BuildPipelineInterfaces.< > f__mg$cache3 = new Comparison <IProcessScene>(BuildPipelineInterfaces.CompareICallbackOrder); } arg_2F6_0.Sort(BuildPipelineInterfaces.< > f__mg$cache3); } } }