Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }