Esempio n. 1
0
        public static void DeleteSelection(CommandExecuteContext context)
        {
            var session         = Application.AuthoringProject?.Session;
            var worldManager    = session.GetManager <IWorldManager>();
            var m_EntityManager = worldManager.EntityManager;
            var m_SceneManager  = session.GetManager <IEditorSceneManagerInternal>();

            var selection = SelectionUtility.GetEntityGuidSelection();

            foreach (var group in selection.Select(worldManager.GetEntityFromGuid).GroupBy(e => m_EntityManager.GetSharedComponentData <SceneGuid>(e)))
            {
                var graph = m_SceneManager.GetGraphForScene(group.Key);
                foreach (var node in group.Select(graph.FindNode))
                {
                    graph.Delete(node);
                }
            }
        }
        public static void CreateEmptyChild(CommandExecuteContext context = null)
        {
            var session      = Application.AuthoringProject.Session;
            var worldManager = session.GetManager <IWorldManager>();

            using (var pooled = ListPool <Entity> .GetDisposable())
            {
                var list = pooled.List;
                foreach (var guid in SelectionUtility.GetEntityGuidSelection())
                {
                    list.Add(CreateEntity(Application.AuthoringProject.Session.GetManager <IArchetypeManager>().Empty, "Entity", guid));
                }

                if (list.Count == 0)
                {
                    list.Add(CreateEntity(Application.AuthoringProject.Session.GetManager <IArchetypeManager>().Empty, "Entity", default));
                }

                EntityHierarchyWindow.SelectOnNextPaint(list.Select(worldManager.GetEntityGuid).ToList());
            }
        }
Esempio n. 3
0
        public static void DuplicateSelection(CommandExecuteContext context)
        {
            var session         = Application.AuthoringProject?.Session;
            var worldManager    = session.GetManager <IWorldManager>();
            var m_EntityManager = worldManager.EntityManager;
            var m_SceneManager  = session.GetManager <IEditorSceneManagerInternal>();

            using (var pooled = ListPool <ISceneGraphNode> .GetDisposable())
            {
                var toSelect  = pooled.List;
                var selection = SelectionUtility.GetEntityGuidSelection();

                foreach (var group in selection.Select(worldManager.GetEntityFromGuid)
                         .GroupBy(e => m_EntityManager.GetSharedComponentData <SceneGuid>(e)))
                {
                    var graph = m_SceneManager.GetGraphForScene(group.Key);
                    var list  = group.Select(graph.FindNode).Cast <ISceneGraphNode>().ToList();
                    toSelect.AddRange(graph.Duplicate(list));
                }

                EntityHierarchyWindow.SelectOnNextPaint(toSelect.OfType <EntityNode>().Select(e => e.Guid).ToList());
            }
        }