public bool RemoveComponent(Entity entity, ComponentType componentType) { EntityComponentStore->ValidateEntity(entity); EntityComponentStore->AssertCanRemoveComponent(entity, componentType); if (m_IsMainThread) { BeforeStructuralChange(); } var archetypeChanges = EntityComponentStore->BeginArchetypeChangeTracking(); var removed = StructuralChange.RemoveComponentEntity(EntityComponentStore, &entity, componentType.TypeIndex); EntityComponentStore->EndArchetypeChangeTracking(archetypeChanges, EntityQueryManager); PlaybackManagedChanges(); return(removed); }
public bool RemoveComponent(Entity entity, ComponentType componentType) { EntityComponentStore->AssertCanRemoveComponent(entity, componentType); if (m_IsMainThread) { EntityManager.BeforeStructuralChange(); } var archetypeChanges = EntityComponentStore->BeginArchetypeChangeTracking(); var removed = StructuralChange.RemoveComponentEntity(EntityComponentStore, &entity, componentType.TypeIndex); var changedArchetypes = EntityComponentStore->EndArchetypeChangeTracking(archetypeChanges); EntityQueryManager.AddAdditionalArchetypes(changedArchetypes); ManagedComponentStore.Playback(ref EntityComponentStore->ManagedChangesTracker); return(removed); }