Files
Juliet/Game/Entity/EntityManager.h
T

33 lines
793 B
C

#pragma once
#include <Core/Common/CoreTypes.h>
#include <Core/Container/Vector.h>
#include <Entity/Entity.h>
struct Entity;
struct World;
struct typed_entity_array
{
Arena* arena;
entity_template* array;
size_t count;
};
struct EntityManager
{
static EntityID ID;
// TODO: Should be a pool
VectorArena<Entity, 100'000> Entities;
typed_entity_array by_type[ENTITY(Count)];
};
void InitEntityManager(NonNullPtr<World> world);
void ShutdownEntityManager();
EntityManager& GetEntityManager();
void Serialize(NonNullPtr<EntityManager> entityManager);
entity_template* RegisterEntity(EntityManager& manager, Entity* base, DerivedType entity);
void UpdateEntityManager(EntityManager& manager);