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); } }
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); } } }
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); } }
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); }