private void HandleChanges(Changes changes) { foreach (var created in changes.CreatedEntities()) { var entity = m_WorldManager.GetEntityFromGuid(created); if (EntityManager.Exists(entity) && EntityManager.HasComponent <EntityName>(entity)) { m_EntityGuidToName[created] = EntityManager.GetBufferAsString <EntityName>(entity); } } foreach (var changed in changes.ChangedEntitiesWithAddComponent <EntityName>() .Concat(changes.ChangedEntitiesWithSetComponent <EntityName>())) { var entity = m_WorldManager.GetEntityFromGuid(changed); if (EntityManager.Exists(entity) && EntityManager.HasComponent <EntityName>(entity)) { m_EntityGuidToName[changed] = EntityManager.GetBufferAsString <EntityName>(entity); } } foreach (var changed in changes.ChangedEntitiesWithRemoveComponent <EntityName>()) { m_EntityGuidToName.Remove(changed); } foreach (var deleted in changes.DeletedEntities()) { m_EntityGuidToName.Remove(deleted); } }
private void HandleChanges(Changes changes) { if (changes.EntitiesWereCreated || changes.EntitiesWereDeleted || changes.ComponentsWereRemoved || changes.ComponentsWereAdded || changes.ChangedEntitiesWithSetComponent <Parent>().Any() || changes.ChangedEntitiesWithSetSharedComponent <SceneGuid>().Any() || changes.ChangedEntitiesWithSetComponent <SiblingIndex>().Any() || changes.ReparentedEntities().Any() || changes.ChangedEntitiesWithSetComponent <WorkspaceScenes>().Any() || changes.ChangedEntitiesWithSetComponent <ActiveScene>().Any()) { m_TreeView?.Invalidate(); Repaint(); } }
private void HandleChanges(Changes changes) { if (m_SuspendEvents || null == m_CurrentWorkspace) { return; } if (changes.ChangedEntitiesWithSetComponent <WorkspaceScenes>().Any() || changes.ChangedEntitiesWithSetComponent <ActiveScene>().Any()) { m_CurrentWorkspace.ClearScenes(); for (var i = 0; i < m_SceneManager.LoadedSceneCount; ++i) { m_CurrentWorkspace.AddScene(m_SceneManager.GetLoadedSceneAtIndex(i)); } m_CurrentWorkspace.SetActiveScene(m_SceneManager.GetActiveScene()); SaveWorkspace(); } }
private void HandleChanges(Changes changes) { if (m_EditorUndoManager.IsUndoRedoing || DomainReload.IsDomainReloading) { return; } var workspaceScenes = GetWorkspaceScenesRW(); using (var pooled = HashSetPool <Scene> .GetDisposable()) { var sceneSet = pooled.Set; foreach (var entityGuid in changes.AllChangedEntities()) { var entity = m_WorldManager.GetEntityFromGuid(entityGuid); if (m_WorldManager.EntityManager.HasComponent <SceneGuid>(entity) && m_WorldManager.EntityManager.HasComponent <SceneInstanceId>(entity)) { var sceneGuid = m_WorldManager.EntityManager.GetSharedComponentData <SceneGuid>(entity); var sceneInstanceId = m_WorldManager.EntityManager.GetSharedComponentData <SceneInstanceId>(entity); if (ConfigurationScene.Guid == sceneGuid.Guid) { continue; } sceneSet.Add(new Scene(sceneGuid, sceneInstanceId)); } } if (sceneSet.Count > 0) { foreach (var scene in sceneSet) { if (m_ChangedScenes.Add(scene)) { var index = IndexOf(workspaceScenes, scene); var workspaceScene = workspaceScenes[index]; workspaceScene.ChangeVersion++; workspaceScenes[index] = workspaceScene; } } } } if (changes.EntitiesWereDeleted) { // Use the created inverse entities. Since we have component data for them. foreach (var scene in GetScenesForCreatedEntities(changes.InverseDiff)) { m_RebuildScenes.Add(scene); if (m_ChangedScenes.Add(scene)) { var index = IndexOf(workspaceScenes, scene); if (index != -1) { var workspaceScene = workspaceScenes[index]; workspaceScene.ChangeVersion++; workspaceScenes[index] = workspaceScene; } else { m_Graphs.Remove(scene.SceneGuid.Guid); } } } } using (var pooledGuids = ListPool <Guid> .GetDisposable()) { var guids = pooledGuids.List; guids.AddRange(changes.ChangedEntitiesWithSetComponent <SiblingIndex>()); guids.AddRange(changes.ChangedEntitiesWithSetComponent <Parent>()); if (guids.Count > 0) { var entityManager = m_WorldManager.EntityManager; for (var i = 0; i < guids.Count; ++i) { var entityGuid = guids[i]; var entity = m_WorldManager.GetEntityFromGuid(entityGuid); if (entityManager.HasComponent <SceneGuid>(entity) && entityManager.HasComponent <SceneInstanceId>(entity)) { var sceneGuid = entityManager.GetSharedComponentData <SceneGuid>(entity); var sceneInstanceId = entityManager.GetSharedComponentData <SceneInstanceId>(entity); m_RebuildScenes.Add(new Scene(sceneGuid, sceneInstanceId)); } } } } }