Ejemplo n.º 1
0
        void updateGroupsComponentAddedOrRemoved(IEntity entity, int index, IComponent component)
        {
            var groups = _groupsForIndex[index];

            if (groups != null)
            {
                var events = _groupChangedListPool.Get();

                var tEntity = (TEntity)entity;

                for (int i = 0; i < groups.Count; i++)
                {
                    events.Add(groups[i].HandleEntity(tEntity));
                }

                for (int i = 0; i < events.Count; i++)
                {
                    var groupChangedEvent = events[i];
                    if (groupChangedEvent != null)
                    {
                        groupChangedEvent(
                            groups[i], tEntity, index, component
                            );
                    }
                }

                _groupChangedListPool.Push(events);
            }
        }
Ejemplo n.º 2
0
        void updateGroupsComponentAddedOrRemoved(Entity entity, Type type, IComponent component)
        {
            if (_groupsForComponentType.ContainsKey(type))
            {
                var groups = _groupsForComponentType[type];
                if (groups != null)
                {
                    var events = _groupChangedListPool.Get();

                    var tEntity = (Entity)entity;

                    for (int i = 0; i < groups.Count; i++)
                    {
                        events.Add(groups[i].HandleEntity(tEntity));
                    }

                    for (int i = 0; i < events.Count; i++)
                    {
                        var groupChangedEvent = events[i];
                        if (groupChangedEvent != null)
                        {
                            groupChangedEvent(
                                groups[i], tEntity, type, component
                                );
                        }
                    }

                    _groupChangedListPool.Push(events);
                }
            }
        }
Ejemplo n.º 3
0
        public virtual void DestroyEntity(Entity entity)
        {
            var removed = _entities.Remove(entity);

            if (!removed)
            {
                throw new PoolDoesNotContainEntityException(entity,
                                                            "Could not destroy entity!");
            }
            _entitiesCache = null;

            if (OnEntityWillBeDestroyed != null)
            {
                OnEntityWillBeDestroyed(this, entity);
            }

            entity.RemoveAllComponents();
            entity.OnComponentAdded    -= onComponentAddedOrRemoved;
            entity.OnComponentReplaced -= onComponentReplaced;
            entity.OnComponentRemoved  -= onComponentAddedOrRemoved;
            _entityPool.Push(entity);

            if (OnEntityDestroyed != null)
            {
                OnEntityDestroyed(this, entity);
            }
        }
Ejemplo n.º 4
0
 public void DestroyEntity(Entity entity)
 {
     entity.RemoveAllComponents();
     entity.OnComponentAdded         -= onComponentAdded;
     entity.OnComponentReplaced      -= onComponentReplaced;
     entity.OnComponentWillBeRemoved -= onComponentWillBeRemoved;
     entity.OnComponentRemoved       -= onComponentRemoved;
     _entities.Remove(entity);
     _entitiesCache = null;
     _entityPool.Push(entity);
 }