From a17e47baa3f39b27d26efb2da118d5d8cf9bf091 Mon Sep 17 00:00:00 2001 From: Alec Thomas Date: Thu, 14 Mar 2013 23:08:54 -0400 Subject: Typedef bitset out. --- entityx/Entity.h | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/entityx/Entity.h b/entityx/Entity.h index 76e646a..6e82a5a 100644 --- a/entityx/Entity.h +++ b/entityx/Entity.h @@ -214,6 +214,8 @@ class EntityManager : boost::noncopyable { public: static const int MAX_COMPONENTS = 64; + typedef std::bitset ComponentMask; + EntityManager(EventManager &event_manager) : event_manager_(event_manager) {} class View { @@ -223,15 +225,15 @@ class EntityManager : boost::noncopyable { /// A predicate that excludes entities that don't match the given component mask. class ComponentMaskPredicate { public: - ComponentMaskPredicate(const std::vector> &entity_bits, std::bitset mask) : entity_bits_(entity_bits), mask_(mask) {} + ComponentMaskPredicate(const std::vector &entity_bits, ComponentMask mask) : entity_bits_(entity_bits), mask_(mask) {} bool operator () (EntityManager &, Entity::Id entity) { return (entity_bits_.at(entity) & mask_) == mask_; } private: - const std::vector> &entity_bits_; - std::bitset mask_; + const std::vector &entity_bits_; + ComponentMask mask_; }; /// An iterator over a view of the entities in an EntityManager. @@ -474,24 +476,24 @@ class EntityManager : boost::noncopyable { private: template - std::bitset component_mask() { - std::bitset mask; + ComponentMask component_mask() { + ComponentMask mask; mask.set(C::family()); return mask; } template - std::bitset component_mask() { + ComponentMask component_mask() { return component_mask() | component_mask(); } template - std::bitset component_mask(const boost::shared_ptr &c) { + ComponentMask component_mask(const boost::shared_ptr &c) { return component_mask(); } template - std::bitset component_mask(const boost::shared_ptr &c1, const boost::shared_ptr &c2, Components && ... args) { + ComponentMask component_mask(const boost::shared_ptr &c1, const boost::shared_ptr &c2, Components && ... args) { return component_mask(c1) | component_mask(c2, args...); } @@ -519,7 +521,7 @@ class EntityManager : boost::noncopyable { // A nested array of: components = entity_components_[family][entity] std::vector>> entity_components_; // Bitmask of components associated with each entity. Index into the vector is the Entity::Id. - std::vector> entity_component_mask_; + std::vector entity_component_mask_; // List of available Entity::Id IDs. std::list free_list_; }; -- cgit v1.2.3