Beispiel #1
0
        private void HandleImportAsset(Object asset, PostprocessEventArgs args)
        {
            var assets = new List <Object>();

            AddChildrenRecursive(assets, new AssetEnumerator(Session).GetAssetInfo(asset));

            var entities = new NativeArray <Entity>(assets.Count, Allocator.Temp);

            for (var i = 0; i < assets.Count; i++)
            {
                var obj = assets[i];

                if (TryGetEntity(obj.ToAssetReference(), out var entity))
                {
                    EntityManager.DestroyEntity(entity);
                }

                entities[i] = entity;
            }

            for (var i = 0; i < assets.Count; i++)
            {
                var entity = AssetImporter.Import(assets[i]);

                if (entities[i] != Entity.Null)
                {
                    m_PostProcessRemap.TryAdd(entities[i], entity);
                }
            }
        }
Beispiel #2
0
        private void HandleDeleteAsset(Object asset, PostprocessEventArgs args)
        {
            var assetWithChildren = new List <Object>();

            AddChildrenRecursive(assetWithChildren, new AssetEnumerator(Session).GetAssetInfo(asset));

            foreach (var obj in assetWithChildren)
            {
                if (TryGetEntity(obj.ToAssetReference(), out var entity))
                {
                    EntityManager.DestroyEntity(entity);
                }
            }
        }
Beispiel #3
0
        private void HandleSceneImported(SceneAsset asset, PostprocessEventArgs args)
        {
            if (Entity.Null == m_WorldManager.GetConfigEntity())
            {
                return;
            }

            if (m_SceneSaveScope > 0)
            {
                var sceneGuid = new SceneGuid {
                    Guid = new Guid(asset.Guid)
                };
                var workspaceScenes = GetWorkspaceScenesRW();

                for (var i = 0; i < workspaceScenes.Length; i++)
                {
                    var workspaceScene = workspaceScenes[i];
                    if (workspaceScene.Scene.SceneGuid == sceneGuid)
                    {
                        workspaceScene.ChangeVersion = 1;
                    }
                    workspaceScenes[i] = workspaceScene;
                }

                EntityHierarchyWindow.RepaintAll();
                return;
            }

            if (!IsAnyInstanceOfSceneLoaded(new Guid(asset.Guid)))
            {
                return;
            }

            if (EditorUtility.DisplayDialog(
                    $"Scene asset has been changed",
                    $"'{args.AssetPath}' has been changed. Would you like to reload the file?",
                    "Yes",
                    "No"))
            {
                LoadScene(args.AssetPath);
            }
        }
 private void HandleMovedAsset(SceneAsset scene, PostprocessEventArgs args)
 {
     Invalidate();
     Repaint();
 }