bool ActorFunctor::filter(FactoryWrapper<Reference>& reference) { if (ContainerFunctor::filter(reference)) return true; return GameFactory::Operate<Actor>(reference->GetNetworkID(), [this](Actor* actor) { unsigned int flags = this->flags(); if (flags & FLAG_ALIVE && actor->GetActorDead()) return true; return false; }); }
bool ObjectFunctor::filter(FactoryWrapper<Reference>& reference) { return GameFactory::Operate<Object>(reference->GetNetworkID(), [this](FactoryObject& object) { unsigned int flags = this->flags(); if (flags & FLAG_NOTSELF && object->GetReference() == PLAYER_REFERENCE) return true; else if (flags & FLAG_SELF && object->GetReference() != PLAYER_REFERENCE) return true; if (flags & FLAG_ENABLED && !object->GetEnabled()) return true; return false; }); }