Exemplo n.º 1
0
        public void RemoveComponentImmediate <TComponent>(Entity entity) where TComponent : IComponent
        {
            if (typeof(TComponent) == _iComponentType)
            {
                throw new InvalidTComponentException();
            }
            Type componentType = typeof(TComponent);
            ComponentArray <TComponent> entityComponentMap = GetComponentMap <TComponent>(false);

            if (entityComponentMap != null && entityComponentMap.Contains(entity))
            {
                _entityComponents[entity].Remove(componentType);
                entityComponentMap.Remove(entity);
                InspectComponentGroups(entity);
            }
        }
Exemplo n.º 2
0
        public void RemoveComponent <TComponent>(Entity entity) where TComponent : IComponent
        {
            if (typeof(TComponent) == _iComponentType)
            {
                throw new InvalidTComponentException();
            }
            Type componentType = typeof(TComponent);
            ComponentArray <TComponent> entityComponentMap = GetComponentMap <TComponent>(false);

            if (entityComponentMap != null && entityComponentMap.Contains(entity))
            {
                _componentRemovingFromEntityEvent.CallEvent(this, ref entity, entityComponentMap.GetComponent(entity));
                entityComponentMap.Remove(entity);
                _entityComponents[entity].Remove(componentType);
                InspectComponentGroups(entity);
                _componentRemovedFromEntityEvent.CallEvent(this, ref entity, componentType);
            }
            //_compoentRemovedList.Add(new KeyValuePair<Entity, Type>(entity, componentType));
        }
Exemplo n.º 3
0
        internal void HandleDeletion()
        {
            foreach (DeletionPair item in _deletableComponents)
            {
                Entity         entity             = item.entity;
                ComponentArray entityComponentMap = item.componentArray;
                if (entityComponentMap != null && entityComponentMap.Contains(entity))
                {
                    entityComponentMap.Remove(entity);
                    _entityComponents[entity].Remove(entityComponentMap.ComponentType);
                    InspectComponentGroups(entity);
                }
            }
            _deletableComponents.Clear();

            foreach (Entity entity in _destroyableEntities)
            {
                DestroyEntityImmediate(entity);
            }
            _destroyableEntities.Clear();
        }