123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #ifndef CORE_COMPONENTS_H
- #define CORE_COMPONENTS_H
- #include "core/HashMap.h"
- #include "core/List.h"
- typedef size_t CoreEntity;
- typedef struct {
- CoreHashMap entityToIndex;
- CoreList indexToEntity;
- CoreList components;
- } CoreComponents;
- typedef struct {
- CoreEntity entity;
- void* component;
- } CoreComponentNode;
- typedef struct {
- const CoreEntity* indexToEntity;
- const CoreEntity* indexToEntityEnd;
- void* component;
- void* componentEnd;
- size_t componentSize;
- CoreComponentNode node;
- } CoreComponentIterator;
- void coreInitComponents(CoreComponents* c, size_t componentSize);
- void coreDestroyComponents(CoreComponents* c);
- void* coreGetOrAddComponent(CoreComponents* c, CoreEntity e);
- void* coreSearchComponent(CoreComponents* c, CoreEntity e);
- bool coreRemoveComponent(CoreComponents* c, CoreEntity e);
- void coreInitComponentIterator(CoreComponentIterator* ci, CoreComponents* c);
- bool coreHasNextComponentNode(CoreComponentIterator* ci);
- CoreComponentNode* coreNextComponentNode(CoreComponentIterator* ci);
- void* coreGetComponentsStart(CoreComponents* c);
- void* coreGetComponentsEnd(CoreComponents* c);
- #ifdef IMPORT_CORE
- #define Entity CoreEntity
- #define Components CoreComponents
- #define ComponentNode CoreComponentNode
- #define ComponentIterator CoreComponentIterator
- #define initComponents coreInitComponents
- #define destroyComponents coreDestroyComponents
- #define getOrAddComponent coreGetOrAddComponent
- #define searchComponent coreSearchComponent
- #define removeComponent coreRemoveComponent
- #define initComponentIterator coreInitComponentIterator
- #define hasNextComponentNode coreHasNextComponentNode
- #define nextComponentNode coreNextComponentNode
- #define getComponentsStart coreGetComponentsStart
- #define getComponentsEnd coreGetComponentsEnd
- #endif
- #endif
|