Add mempool macros to simplify definition
parent
056b50c431
commit
bf655daf8d
|
@ -33,4 +33,23 @@ void free_component_to_mempool(unsigned int comp_type, unsigned long idx);
|
|||
|
||||
void print_mempool_stats(char* buffer);
|
||||
uint32_t get_num_of_free_entities(void);
|
||||
|
||||
#define DEFINE_COMP_MEMPOOL_BUF(type, n) \
|
||||
static type type##_buf[n]; \
|
||||
const unsigned long type##_CNT = n; \
|
||||
|
||||
#define ADD_COMP_MEMPOOL(type) \
|
||||
{type##_buf, type##_CNT, sizeof(type), NULL, {0}}, \
|
||||
|
||||
#define BEGIN_DEFINE_COMP_MEMPOOL \
|
||||
DEFINE_COMP_MEMPOOL_BUF(CBBox_t, MAX_COMP_POOL_SIZE); \
|
||||
DEFINE_COMP_MEMPOOL_BUF(CTransform_t, MAX_COMP_POOL_SIZE); \
|
||||
DEFINE_COMP_MEMPOOL_BUF(CTileCoord_t, MAX_COMP_POOL_SIZE); \
|
||||
MemPool_t comp_mempools[N_COMPONENTS] = { \
|
||||
ADD_COMP_MEMPOOL(CBBox_t) \
|
||||
ADD_COMP_MEMPOOL(CTransform_t) \
|
||||
ADD_COMP_MEMPOOL(CTileCoord_t) \
|
||||
|
||||
#define END_DEFINE_COMP_MEMPOOL };
|
||||
|
||||
#endif //__MEMPOOL_H
|
||||
|
|
|
@ -1,38 +1,33 @@
|
|||
#include "mempool.h"
|
||||
#include "components.h"
|
||||
/** This file is supposed to implement any required engine functions
|
||||
*/
|
||||
|
||||
// Static allocate buffers
|
||||
static CBBox_t bbox_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CTransform_t ctransform_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CTileCoord_t ctilecoord_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CMovementState_t cmstate_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CJump_t cjump_buffer[8]; // Only player is expected to have this
|
||||
static CPlayerState_t cplayerstate_buffer[8]; // Only player is expected to have this
|
||||
static CContainer_t ccontainer_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CHitBoxes_t chitboxes_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CHurtbox_t churtbox_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CSprite_t csprite_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CMoveable_t cmoveable_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CLifeTimer_t clifetimer_buffer[MAX_COMP_POOL_SIZE];
|
||||
static CWaterRunner_t cwaterrunner_buffer[32];
|
||||
static CAirTimer_t cairtimer_buffer[8]; // Only player is expected to have this
|
||||
static CEmitter_t cemitter_buffer[MAX_COMP_POOL_SIZE]; // Only player is expected to have this
|
||||
;
|
||||
DEFINE_COMP_MEMPOOL_BUF(CMovementState_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CJump_t, 8)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CPlayerState_t, 8)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CContainer_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CHitBoxes_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CHurtbox_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CSprite_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CMoveable_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CLifeTimer_t, MAX_COMP_POOL_SIZE)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CWaterRunner_t, 32)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CAirTimer_t, 8)
|
||||
DEFINE_COMP_MEMPOOL_BUF(CEmitter_t, 32)
|
||||
|
||||
MemPool_t comp_mempools[N_COMPONENTS] = {
|
||||
{bbox_buffer, MAX_COMP_POOL_SIZE, sizeof(CBBox_t), NULL, {0}},
|
||||
{ctransform_buffer, MAX_COMP_POOL_SIZE, sizeof(CTransform_t), NULL, {0}},
|
||||
{ctilecoord_buffer, MAX_COMP_POOL_SIZE, sizeof(CTileCoord_t), NULL, {0}},
|
||||
{cmstate_buffer, MAX_COMP_POOL_SIZE, sizeof(CMovementState_t), NULL, {0}},
|
||||
{cjump_buffer, 8, sizeof(CJump_t), NULL, {0}},
|
||||
{cplayerstate_buffer, 8, sizeof(CPlayerState_t), NULL, {0}},
|
||||
{ccontainer_buffer, MAX_COMP_POOL_SIZE, sizeof(CContainer_t), NULL, {0}},
|
||||
{chitboxes_buffer, MAX_COMP_POOL_SIZE, sizeof(CHitBoxes_t), NULL, {0}},
|
||||
{churtbox_buffer, MAX_COMP_POOL_SIZE, sizeof(CHurtbox_t), NULL, {0}},
|
||||
{csprite_buffer, MAX_COMP_POOL_SIZE, sizeof(CSprite_t), NULL, {0}},
|
||||
{cmoveable_buffer, MAX_COMP_POOL_SIZE, sizeof(CMoveable_t), NULL, {0}},
|
||||
{clifetimer_buffer, MAX_COMP_POOL_SIZE, sizeof(CLifeTimer_t), NULL, {0}},
|
||||
{cwaterrunner_buffer, 32, sizeof(CWaterRunner_t), NULL, {0}},
|
||||
{cairtimer_buffer, 8, sizeof(CAirTimer_t), NULL, {0}},
|
||||
{cemitter_buffer, MAX_COMP_POOL_SIZE, sizeof(CEmitter_t), NULL, {0}},
|
||||
};
|
||||
// Component mempools are added in the order of the component enums
|
||||
BEGIN_DEFINE_COMP_MEMPOOL
|
||||
ADD_COMP_MEMPOOL(CMovementState_t)
|
||||
ADD_COMP_MEMPOOL(CJump_t)
|
||||
ADD_COMP_MEMPOOL(CPlayerState_t)
|
||||
ADD_COMP_MEMPOOL(CContainer_t)
|
||||
ADD_COMP_MEMPOOL(CHitBoxes_t)
|
||||
ADD_COMP_MEMPOOL(CHurtbox_t)
|
||||
ADD_COMP_MEMPOOL(CSprite_t)
|
||||
ADD_COMP_MEMPOOL(CMoveable_t)
|
||||
ADD_COMP_MEMPOOL(CLifeTimer_t)
|
||||
ADD_COMP_MEMPOOL(CWaterRunner_t)
|
||||
ADD_COMP_MEMPOOL(CAirTimer_t)
|
||||
ADD_COMP_MEMPOOL(CEmitter_t)
|
||||
END_DEFINE_COMP_MEMPOOL
|
||||
|
|
Loading…
Reference in New Issue