public void Dispatch(Object asset, PostprocessEventArgs args) { UnityEngine.Assertions.Assert.AreEqual(asset.GetType(), typeof(TAsset)); AssetHandler(asset, args); TypedAssetHandler((TAsset)asset, args); }
private void HandleImportSceneAsset(SceneAsset asset, PostprocessEventArgs args) { var assetGuid = args.AssetGuid; var sceneGuid = new SceneGuid { Guid = new Guid(asset.Guid) }; m_AssetGuidToSceneGuid.TryAdd(assetGuid, sceneGuid); m_SceneGuidToAssetGuid.TryAdd(sceneGuid, assetGuid); }
private void HandleDeleteAsset(PostprocessEventArgs args) { var assetGuid = args.AssetGuid; // Handle deleting scene if (m_AssetGuidToSceneGuid.TryGetValue(assetGuid, out var sceneGuid)) { m_AssetGuidToSceneGuid.Remove(assetGuid); m_SceneGuidToAssetGuid.Remove(sceneGuid); // Remove scene from project var wm = Session.GetManager <IWorldManager>(); Project.RemoveScene(wm.EntityManager, wm.GetConfigEntity(), new SceneReference { SceneGuid = sceneGuid.Guid }); // Called last as this will invoke OnScene unload listeners so we need to ensure // we've updated all state before they are called Session.GetManager <IEditorSceneManagerInternal>().UnloadAllScenesByGuid(sceneGuid); } // Handle deleting project var project = Project.Projects.FirstOrDefault(p => p.Guid == new Guid(args.AssetGuid)); if (project != null) { if (project == Application.AuthoringProject) { EditorApplication.delayCall += () => { Application.SetAuthoringProject(null); }; } else { project.Dispose(); } } }