File Entities2DCollection.c
File List > engine > src > gameframework > layers > Game2D > EntitySystem > Entities2DCollection.c
Go to the documentation of this file
#include "Entity2DCollection.h"
HDynamicEntityListItem DynL_AddEntity(struct DynamicEnt2DList* pDynList, HEntity2D hEnt)
{
HDynamicEntityListItem hItem = NULL_HANDLE;
pDynList->pDynamicListItemPool = GetObjectPoolIndex(pDynList->pDynamicListItemPool, &hItem);
struct DynamicEntityListItem* pItem = &pDynList->pDynamicListItemPool[hItem];
pItem->hNext = NULL_HANDLE;
pItem->hPrev = NULL_HANDLE;
pItem->hEnt = hEnt;
if(pDynList->nDynamicListSize == 0)
{
pDynList->hDynamicListHead = hItem;
pDynList->hDynamicListTail = hItem;
}
else
{
struct DynamicEntityListItem* pTail = &pDynList->pDynamicListItemPool[pDynList->hDynamicListTail];
pTail->hNext = hItem;
pItem->hPrev = pDynList->hDynamicListTail;
pDynList->hDynamicListTail = hItem;
}
pDynList->nDynamicListSize++;
return hItem;
}
void DynL_RemoveItem(struct DynamicEnt2DList* pDynList, HDynamicEntityListItem hListItem)
{
struct DynamicEntityListItem* pItem = &pDynList->pDynamicListItemPool[hListItem];
if(pDynList->hDynamicListHead == hListItem)
{
pDynList->hDynamicListHead = pItem->hNext;
}
if(pDynList->hDynamicListTail == hListItem)
{
pDynList->hDynamicListTail = pItem->hPrev;
}
if(pItem->hPrev != NULL_HANDLE)
{
pDynList->pDynamicListItemPool[pItem->hPrev].hNext = pItem->hNext;
}
if(pItem->hNext != NULL_HANDLE)
{
pDynList->pDynamicListItemPool[pItem->hNext].hPrev = pItem->hPrev;
}
pDynList->nDynamicListSize--;
}
int DynL_GetSize(struct DynamicEnt2DList* pDynList)
{
return pDynList->nDynamicListSize;
}