Exemple #1
0
 public void Open(string projectFilePath)
 {
     try {
         The.UI.ClearLog();
         ProjectFilePath = projectFilePath;
         ReadProject(projectFilePath);
         var tangerineAssetBundle = new Tangerine.Core.TangerineAssetBundle(AssetsDirectory);
         if (!tangerineAssetBundle.IsActual())
         {
             tangerineAssetBundle.CleanupBundle();
         }
         Lime.AssetBundle.Current = tangerineAssetBundle;
         PluginLoader.ScanForPlugins();
         if (defaultCsprojSynchronizationSkipUnwantedDirectoriesPredicate == null)
         {
             defaultCsprojSynchronizationSkipUnwantedDirectoriesPredicate = CsprojSynchronization.SkipUnwantedDirectoriesPredicate;
         }
         CsprojSynchronization.SkipUnwantedDirectoriesPredicate = (di) => {
             return(defaultCsprojSynchronizationSkipUnwantedDirectoriesPredicate(di) && !di.FullName.StartsWith(AssetsDirectory, StringComparison.OrdinalIgnoreCase));
         };
         AssetFiles = new FileEnumerator(AssetsDirectory);
         LoadCacheSettings();
         The.UI.OnWorkspaceOpened();
         The.UI.ReloadBundlePicker();
         The.UI.UpdateOpenedProjectPath(projectFilePath);
     } catch (System.Exception e) {
         // TODO: make a general way to close project and reset everything to default state
         ProjectFilePath      = null;
         AssetsDirectory      = null;
         AssetFiles           = null;
         TangerineCacheBundle = null;
         throw new System.Exception($"Can't open {projectFilePath}:\n{e.Message}");
     }
 }
        public static IEnumerator <object> ExecuteOrangeAction(Func <string> action, Action onBegin, Action onEnd,
                                                               Func <Action, IEnumerator <object> > onCreateOrNotAsynchTask)
        {
            var startTime = DateTime.Now;

            onBegin();
            var executionResult = "Build Failed! Unknown Error.";

            try {
                executionResult = "Done.";
                Action mainAction = () => {
                    var         savedAssetBundle = AssetBundle.Initialized ? AssetBundle.Current : null;
                    AssetBundle bundle           = null;
                    if (Workspace.Instance.AssetsDirectory != null)
                    {
                        bundle = new Tangerine.Core.TangerineAssetBundle(Workspace.Instance.AssetsDirectory);
                        AssetBundle.SetCurrent(bundle, resetTexturePool: false);
                    }
                    try {
                        var errorDetails = SafeExecuteWithErrorDetails(action);
                        if (errorDetails != null)
                        {
                            if (errorDetails.Length > 0)
                            {
                                Console.WriteLine(errorDetails);
                            }
                            executionResult = "Build Failed!";
                        }
                    } finally {
                        if (bundle != null)
                        {
                            bundle.Dispose();
                            AssetBundle.SetCurrent(savedAssetBundle, resetTexturePool: false);
                        }
                    }
                };
                if (onCreateOrNotAsynchTask != null)
                {
                    yield return(onCreateOrNotAsynchTask(mainAction));
                }
                else
                {
                    mainAction();
                }
            } finally {
                Console.WriteLine(executionResult);
                Console.WriteLine(@"Elapsed time {0:hh\:mm\:ss}", DateTime.Now - startTime);
                onEnd();
            }
        }