Remove entity map in favor of spatial grid
This commit is contained in:
@@ -9,10 +9,6 @@ typedef struct BzObjectPool {
|
||||
i32 firstFree;
|
||||
} BzObjectPool;
|
||||
|
||||
static i32 *bzObjectPoolGetObject(const BzObjectPool *pool, size_t idx) {
|
||||
return (i32 *) ((u8 *) pool->objects + idx * pool->stride);
|
||||
}
|
||||
|
||||
BzObjectPool *bzObjectPoolCreate(const BzObjectPoolDesc *desc) {
|
||||
BZ_ASSERT(desc->objectSize > 0);
|
||||
|
||||
@@ -53,9 +49,16 @@ void *bzObjectPool(BzObjectPool *pool) {
|
||||
pool->firstFree = *object;
|
||||
return object;
|
||||
}
|
||||
void *bzObjectPoolGetObject(BzObjectPool *pool, i32 idx) {
|
||||
BZ_ASSERT(idx >= 0 && (size_t) idx < pool->numObjects);
|
||||
return (void *) ((u8 *) pool->objects + idx * pool->stride);
|
||||
}
|
||||
i32 bzObjectPoolGetIdx(BzObjectPool *pool, void *object) {
|
||||
size_t objectIdx = (size_t) object - (size_t) pool->numObjects;
|
||||
return (i32) (objectIdx / pool->stride);
|
||||
}
|
||||
void bzObjectPoolRelease(BzObjectPool *pool, void *object) {
|
||||
size_t objectIdx = (size_t) object - (size_t) pool->objects;
|
||||
objectIdx /= pool->stride;
|
||||
size_t objectIdx = bzObjectPoolGetIdx(pool, object);
|
||||
BZ_ASSERT(objectIdx < pool->numObjects);
|
||||
*(i32 *) ((u8 *) pool->objects + objectIdx * pool->stride) = pool->firstFree;
|
||||
pool->firstFree = (i32) objectIdx;
|
||||
|
||||
Reference in New Issue
Block a user