public void OnEntityRemovingFromGroup(IEntity entity) { if (!CachedEntities.Contains(entity.Id)) { return; } _onEntityRemoving.OnNext(entity); CachedEntities.Remove(entity.Id); _onEntityRemoved.OnNext(entity); }
public void OnEntityComponentRemoved(ComponentsChangedEvent args) { if (CachedEntities.Contains(args.Entity.Id)) { if (args.Entity.HasAllComponents(Token.LookupGroup.RequiredComponents)) { return; } CachedEntities.Remove(args.Entity.Id); _onEntityRemoved.OnNext(args.Entity); return; } if (!Token.LookupGroup.Matches(args.Entity)) { return; } CachedEntities.Add(args.Entity); _onEntityAdded.OnNext(args.Entity); }
public void RemoveEntity(int id, bool disposeOnRemoval = true) { var entity = GetEntity(id); EntityLookup.Remove(id); var entityId = entity.Id; if (disposeOnRemoval) { entity.Dispose(); EntityFactory.Destroy(entityId); } UnsubscribeFromEntity(entityId); _onEntityRemoved.OnNext(new CollectionEntityEvent(entity)); }