private static void OnPlayModeStateChanged(PlayModeStateChange state) { switch (state) { case PlayModeStateChange.EnteredEditMode: // call any queued code processing methods if (!QueuedAssetsToBeProcessed) { break; } QueuedAssetsToBeProcessed = false; var importedAssets = PostprocessBatch.ImportedAssets.ToArray(); var deletedAssets = PostprocessBatch.DeletedAssets.ToArray(); var movedAssets = PostprocessBatch.MovedAssets.ToArray(); var movedFromAssets = PostprocessBatch.MovedFromAssets.ToArray(); PostprocessBatch.Clear(); ContentAssetProcessor.OnPostprocessAllAssets(importedAssets, deletedAssets, movedAssets, movedFromAssets); break; case PlayModeStateChange.ExitingEditMode: // generate bundles if necessary var config = MasterConfig.GetInstance(); var needBuild = config.AssetsNeedBuild; if (!needBuild) { break; } var bundles = ContentObjectModel.GetInstance().AssetBundleObjects.Where(x => x.NeedBuild).ToList(); if (bundles.Count > 0) { try { ContentAssetProcessor.IgnoreChanges = true; ContentParser.BuildAssetBundles(bundles); } finally { ContentAssetProcessor.IgnoreChanges = false; } } break; case PlayModeStateChange.EnteredPlayMode: break; case PlayModeStateChange.ExitingPlayMode: break; } }
private static void OnPlayModeStateChanged(PlayModeStateChange state) { switch (state) { case PlayModeStateChange.EnteredEditMode: break; case PlayModeStateChange.ExitingEditMode: // generate bundles if necessary var config = MasterConfig.GetInstance(); var needBuild = config.AssetsNeedBuild; if (!needBuild) { break; } var bundles = ContentObjectModel.GetInstance().AssetBundleObjects.Where(x => x.NeedBuild).ToList(); if (bundles.Count > 0) { ContentParser.BuildAssetBundles(bundles); } break; case PlayModeStateChange.EnteredPlayMode: break; case PlayModeStateChange.ExitingPlayMode: bool exitInterrupted = false; #if DELIGHT_MODULE_TEXTMESHPRO if (IsInDelightDesigner) { //var activeScene = EditorSceneManager.GetActiveScene(); // TODO cleanup // check if delight designer has unsaved progress var viewPresenter = GameObject.Find("/Delight")?.GetComponent <ViewPresenter>(); if (viewPresenter == null) { break; } var delightDesignerView = viewPresenter.PresentedView as DelightDesigner; if (delightDesignerView == null) { break; } if (delightDesignerView.CheckForUnsavedChanges()) { EditorApplication.isPlaying = true; exitInterrupted = true; } } #endif if (!exitInterrupted && QueuedAssetsToBeProcessed) { // call any queued code processing methods var importedAssets = PostprocessBatch.ImportedAssets.ToArray(); var deletedAssets = PostprocessBatch.DeletedAssets.ToArray(); var movedAssets = PostprocessBatch.MovedAssets.ToArray(); var movedFromAssets = PostprocessBatch.MovedFromAssets.ToArray(); PostprocessBatch.Clear(); QueuedAssetsToBeProcessed = false; ContentAssetProcessor.ForceProcessing = true; ContentAssetProcessor.OnPostprocessAllAssets(importedAssets, deletedAssets, movedAssets, movedFromAssets); ContentAssetProcessor.ForceProcessing = false; } break; } }