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 (m_IsUndoing) { return; } foreach (var guid in changes.CreatedEntities()) { var entity = m_WorldManager.GetEntityFromGuid(guid); PopulateInitialComponentList(entity); } foreach (var diff in changes.WorldDiff.AddComponents) { var hash = changes.WorldDiff.TypeHashes[diff.TypeHashIndex]; var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(hash); var type = TypeManager.GetType(typeIndex); if (hash == ComponentOrderHash || type.GetCustomAttributes(typeof(HideInInspectorAttribute)).Any()) { continue; } var guid = changes.WorldDiff.Entities[diff.EntityIndex].ToGuid(); var entity = m_WorldManager.GetEntityFromGuid(guid); AddTypeToBuffer(entity, hash); } foreach (var diff in changes.WorldDiff.RemoveComponents) { var hash = changes.WorldDiff.TypeHashes[diff.TypeHashIndex]; var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(hash); var type = TypeManager.GetType(typeIndex); if (hash == ComponentOrderHash || type.GetCustomAttributes(typeof(HideInInspectorAttribute)).Any()) { continue; } var guid = changes.WorldDiff.Entities[diff.EntityIndex].ToGuid(); var entity = m_WorldManager.GetEntityFromGuid(guid); RemoveTypeFromBuffer(entity, hash); } }
private void HandleChanges(Changes changes) { foreach (var guid in changes.CreatedEntities()) { CreateLink(guid); } using (var entities = new NativeArray <Guid>(changes.DeletedEntities().ToArray(), Allocator.Temp)) { DeleteLinks(entities); } using (var entities = new NativeArray <Guid>(changes.ReparentedEntities().ToArray(), Allocator.Temp)) { ReparentLinks(entities); } using (var entities = new NativeArray <Guid>(changes.EnabledStateChanged().ToArray(), Allocator.Temp)) { SetEnabledState(entities); } }