Remove entity map in favor of spatial grid
This commit is contained in:
56
engine/breeze/utils/spatial_grid.h
Normal file
56
engine/breeze/utils/spatial_grid.h
Normal 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
|
||||
Reference in New Issue
Block a user