logging macros
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user