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(); } }