logging macros

This commit is contained in:
Asuro
2025-02-28 20:53:43 +01:00
parent 136a0e09a9
commit b0c80c1bbb
10 changed files with 139 additions and 59 deletions

View File

@@ -51,12 +51,25 @@ namespace Game
EntityRenderData EData;
};
template <typename T, typename HandleT, uint32_t C> class EntityManager
ENTITY_HANDLE(UIQuadEntityHandle);
struct UIQuadEntity
{
EntityRenderData EData;
};
class IEntityManager
{
public:
virtual bool Setup(void*& ptr, bool forceReset) = 0;
};
template <typename T, typename HandleT, uint32_t C> class EntityManager : public IEntityManager
{
public:
uint16_t Count = 0;
T* Data = nullptr;
uint32_t EntitySize = 0;
T InvalidObject{};
public:
// Returns true if size changed
@@ -78,12 +91,12 @@ namespace Game
{
if (Data == nullptr)
{
Log("Accessed EntityManager before setup!");
ERROR_ONCE("Accessed EntityManager before setup!");
return {};
}
if (Count >= C)
{
Log("Too many entities!");
ERROR_ONCE("Too many entities!");
return {};
}
Data[Count] = {};
@@ -93,22 +106,21 @@ namespace Game
return H;
}
T* Get(HandleT handle)
T& Get(HandleT handle)
{
if (handle.Idx > Count)
{
Log("OOB Access!");
return nullptr;
ERROR_ONCE("OOB Access!");
return InvalidObject;
}
return &Data[handle.Idx];
return Data[handle.Idx];
}
void Render(const Model* models, const Material* materials)
{
for (uint16_t i = 0; i < Count; ++i)
{
T* c = Get({i});
if (c) c->EData.Render(models, materials);
Get({i}).EData.Render(models, materials);
}
}
};
@@ -119,6 +131,7 @@ namespace Game
Puzzle::PuzzleData Data;
Vec3 WorldPosition;
PuzzleTileEntityHandle TileHandles[Puzzle::Config::MaxCardsInPuzzle];
UIQuadEntityHandle UIPlacedCards[Puzzle::Config::MaxCardsInPuzzle];
void Setup();
void Update();
@@ -130,6 +143,8 @@ namespace Game
EntityManager<Cube, CubeHandle, 1024> Cubes;
EntityManager<TestEntity, TestEntityHandle, 32> Tests;
EntityManager<PuzzleTileEntity, PuzzleTileEntityHandle, 1024> PuzzleTiles;
EntityManager<UIQuadEntity, UIQuadEntityHandle, 1024> UIQuads;
public:
Puzzle::StaticPuzzleData PuzzleData;