Example #1
0
        public void OnEntityRemovingFromGroup(IEntity entity)
        {
            if (!CachedEntities.Contains(entity.Id))
            {
                return;
            }

            _onEntityRemoving.OnNext(entity);
            CachedEntities.Remove(entity.Id);
            _onEntityRemoved.OnNext(entity);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }