#pragma once

#include <cstddef>
#include <utility.h>
#include <Entities/EntityMemoryPool.h>
#include <Containers.h>

class EntityView;
class Entity;

class EntityManager
{
public:
	int update();

	EntityView getEntities(tag_t);

	inline Entity player();

	Entity addEntity(tag_t);

private:
	EntityMemoryPool m_entityData;
	size_t m_nextId{};
	index_t m_numEntities[util::TAG_COUNT]{};
	index_t m_numEntitiesToAdd[util::TAG_COUNT]{};
	#ifdef CORE_DEBUG
	index_t m_totalEntities{};
	#endif
};


