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;
            }
        }
Пример #2
0
        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;
            }
        }