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()); } }
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()); } }