Remove entity map in favor of spatial grid

This commit is contained in:
2023-11-16 16:31:19 +01:00
parent 6974a80611
commit 3ec6e9ad47
12 changed files with 310 additions and 255 deletions

View File

@@ -0,0 +1,56 @@
#ifndef BREEZE_SPATIAL_GRID_H
#define BREEZE_SPATIAL_GRID_H
#include "../defines.h"
typedef struct BzSpatialGridIndex {
i32 minX, minY;
i32 maxX, maxY;
} BzSpatialGridIndex;
typedef i32 BzSpatialGridID;
typedef struct BzSpatialGridEntry {
i32 queryIdx;
BzSpatialGridID id;
BzSpatialGridIndex index;
} BzSpatialGridEntry;
typedef struct BzSpatialGrid BzSpatialGrid;
typedef struct BzSpatialGridIter {
BzSpatialGridEntry entry;
void *data;
BzSpatialGridIndex index;
BzSpatialGrid *_grid;
i32 _queryIdx;
i32 _x;
i32 _y;
i32 _cellIdx;
} BzSpatialGridIter;
typedef struct BzSpatialGridDesc {
i32 maxWidth;
i32 maxHeight;
i32 cellWidth;
i32 cellHeight;
i32 userDataSize;
} BzSpatialGridDesc;
BzSpatialGrid *bzSpatialGridCreate(const BzSpatialGridDesc *desc);
void bzSpatialGridDestroy(BzSpatialGrid *grid);
//void *bzSpatialGridGetData(const BzSpatialGrid *grid, BzSpatialGridID id);
BzSpatialGridID bzSpatialGridInsert(BzSpatialGrid *grid, void *data, f32 posX, f32 posY, f32 sizeX, f32 sizeY);
BzSpatialGridID bzSpatialGridUpdate(BzSpatialGrid *grid, BzSpatialGridID id, f32 posX, f32 posY, f32 sizeX, f32 sizeY);
void bzSpatialGridRemove(BzSpatialGrid *grid, BzSpatialGridID id);
BzSpatialGridIter bzSpatialGridIter(BzSpatialGrid *grid, f32 posX, f32 posY, f32 sizeX, f32 sizeY);
bool bzSpatialGridQueryNext(BzSpatialGridIter *it);
void bzSpatialGridDrawDebugGrid(const BzSpatialGrid *grid);
#endif //BREEZE_SPATIAL_GRID_H