#pragma once #include #include #include #ifndef MAX_ZECSY_ENTITIES #define MAX_ZECSY_ENTITIES 65536 #endif // !MAX_ZECSY_ENTITIES namespace zecsy { using entity_id = uint64_t; class world final { public: world() = default; world(const world &) = default; world(world &&) = default; world &operator=(const world &) = default; world &operator=(world &&) = default; entity_id make_entity(); bool is_alive(entity_id e) const; private: std::bitset entities_bitset; entity_id entity_counter = 0; }; inline entity_id world::make_entity() { auto id = entity_counter; entities_bitset.set(id); entity_counter++; return id; } inline bool world::is_alive(entity_id e) const { return entities_bitset.test(e); } };