Entities must be added to grid based on their centre.
This commit is contained in:
parent
950cffcb4f
commit
61068f04f4
|
@ -28,10 +28,10 @@ void addToGrid(Entity *e)
|
||||||
GridCell *cell, *prev;
|
GridCell *cell, *prev;
|
||||||
int x, y, x1, y1, x2, y2;
|
int x, y, x1, y1, x2, y2;
|
||||||
|
|
||||||
x1 = e->x / GRID_CELL_WIDTH;
|
x1 = (e->x - e->w / 2) / GRID_CELL_WIDTH;
|
||||||
y1 = e->y / GRID_CELL_HEIGHT;
|
y1 = (e->y - e->h / 2) / GRID_CELL_HEIGHT;
|
||||||
x2 = (e->x + e->w) / GRID_CELL_WIDTH;
|
x2 = (e->x + e->w / 2) / GRID_CELL_WIDTH;
|
||||||
y2 = (e->y + e->h) / GRID_CELL_HEIGHT;
|
y2 = (e->y + e->h / 2) / GRID_CELL_HEIGHT;
|
||||||
|
|
||||||
for (x = x1 ; x <= x2 ; x++)
|
for (x = x1 ; x <= x2 ; x++)
|
||||||
{
|
{
|
||||||
|
@ -61,10 +61,10 @@ void removeFromGrid(Entity *e)
|
||||||
GridCell *cell, *prev;
|
GridCell *cell, *prev;
|
||||||
int x, y, x1, y1, x2, y2;
|
int x, y, x1, y1, x2, y2;
|
||||||
|
|
||||||
x1 = e->x / GRID_CELL_WIDTH;
|
x1 = (e->x - e->w / 2) / GRID_CELL_WIDTH;
|
||||||
y1 = e->y / GRID_CELL_HEIGHT;
|
y1 = (e->y - e->h / 2) / GRID_CELL_HEIGHT;
|
||||||
x2 = (e->x + e->w) / GRID_CELL_WIDTH;
|
x2 = (e->x + e->w / 2) / GRID_CELL_WIDTH;
|
||||||
y2 = (e->y + e->h) / GRID_CELL_HEIGHT;
|
y2 = (e->y + e->h / 2) / GRID_CELL_HEIGHT;
|
||||||
|
|
||||||
for (x = x1 ; x <= x2 ; x++)
|
for (x = x1 ; x <= x2 ; x++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue