public void OnEntityComponentAdded(ComponentsChangedEvent args) { if (CachedEntities.ContainsKey(args.Entity.Id)) { if (false == Token.LookupGroup.ContainsAnyExcludedComponents(args.Entity)) { return; } entityRemoving.OnNext(args.Entity); CachedEntities.Remove(args.Entity.Id); entityRemoved.OnNext(args.Entity); return; } if (false == Token.LookupGroup.Matches(args.Entity)) { return; } CachedEntities.Add(args.Entity.Id, args.Entity); entityAdded.OnNext(args.Entity); }
public void OnEntityComponentRemoving(ComponentsChangedEvent args) { if (!CachedEntities.Contains(args.Entity.Id)) { return; } if (Token.LookupGroup.ContainsAnyRequiredComponents(args.ComponentTypeIds)) { _onEntityRemoving.OnNext(args.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); }