예제 #1
0
        private static bool InitializePackageManager(Assembly assembly, PackageInfo package)
        {
            ModuleManager.s_PackageManager = AssemblyHelper.FindImplementors <IPackageManagerModule>(assembly).FirstOrDefault <IPackageManagerModule>();
            if (ModuleManager.s_PackageManager == null)
            {
                return(false);
            }
            string location = assembly.Location;

            if (PackageInfo.op_Inequality(package, (PackageInfo)null))
            {
                InternalEditorUtility.SetupCustomDll(Path.GetFileName(location), location);
            }
            else
            {
                package = new PackageInfo()
                {
                    basePath = (__Null)Path.GetDirectoryName(location)
                }
            };
            ((IEditorModule)ModuleManager.s_PackageManager).set_moduleInfo(package);
            ModuleManager.s_PackageManager.set_editorInstallPath(EditorApplication.applicationContentsPath);
            ModuleManager.s_PackageManager.set_unityVersion(PackageVersion.op_Implicit(new PackageVersion(Application.unityVersion)));
            ((IEditorModule)ModuleManager.s_PackageManager).Initialize();
            using (IEnumerator <PackageInfo> enumerator1 = ModuleManager.s_PackageManager.get_playbackEngines().GetEnumerator())
            {
                while (((IEnumerator)enumerator1).MoveNext())
                {
                    PackageInfo current1 = enumerator1.Current;
                    BuildTarget target   = BuildTarget.StandaloneWindows;
                    if (ModuleManager.TryParseBuildTarget((string)current1.name, out target))
                    {
                        Console.WriteLine("Setting {0} v{1} for Unity v{2} to {3}", new object[4]
                        {
                            (object)target,
                            (object)current1.version,
                            (object)current1.unityVersion,
                            (object)current1.basePath
                        });
                        using (IEnumerator <KeyValuePair <string, PackageFileData> > enumerator2 = ((IEnumerable <KeyValuePair <string, PackageFileData> >)current1.get_files()).Where <KeyValuePair <string, PackageFileData> >((Func <KeyValuePair <string, PackageFileData>, bool>)(f => f.Value.type == 3)).GetEnumerator())
                        {
                            while (((IEnumerator)enumerator2).MoveNext())
                            {
                                KeyValuePair <string, PackageFileData> current2 = enumerator2.Current;
                                if (!File.Exists(Path.Combine((string)current1.basePath, current2.Key).NormalizePath()))
                                {
                                    UnityEngine.Debug.LogWarningFormat("Missing assembly \t{0} for {1}. Player support may be incomplete.", new object[2]
                                    {
                                        (object)current1.basePath,
                                        (object)current1.name
                                    });
                                }
                                else
                                {
                                    InternalEditorUtility.SetupCustomDll(Path.GetFileName(location), location);
                                }
                            }
                        }
                        BuildPipeline.SetPlaybackEngineDirectory(target, BuildOptions.None, (string)current1.basePath);
                        InternalEditorUtility.SetPlatformPath((string)current1.basePath);
                        ModuleManager.s_PackageManager.LoadPackage(current1);
                    }
                }
            }
            return(true);
        }