mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-31 05:30:48 +00:00
Simplify P_BlockThingsIterator
There was no reason to do what I did, since the loop only needs to hold
a reference to the next block. This reverts the function to how it was
before 7469a6271b
, but holds the
reference properly.
This commit is contained in:
parent
466f3504f2
commit
c9a1984da5
1 changed files with 2 additions and 14 deletions
|
@ -1052,7 +1052,6 @@ boolean P_BlockLinesIterator(INT32 x, INT32 y, boolean (*func)(line_t *))
|
|||
//
|
||||
boolean P_BlockThingsIterator(INT32 x, INT32 y, boolean (*func)(mobj_t *))
|
||||
{
|
||||
mobj_t *bnext = NULL;
|
||||
blocknode_t *block, *next = NULL;
|
||||
|
||||
if (x < 0 || y < 0 || x >= bmapwidth || y >= bmapheight)
|
||||
|
@ -1061,26 +1060,15 @@ boolean P_BlockThingsIterator(INT32 x, INT32 y, boolean (*func)(mobj_t *))
|
|||
// Check interaction with the objects in the blockmap.
|
||||
for (block = blocklinks[y*bmapwidth + x]; block; block = next)
|
||||
{
|
||||
next = block->mnext;
|
||||
if (next)
|
||||
P_SetTarget(&bnext, next->mobj); // We want to note our reference to bnext here in case it is MF_NOTHINK and gets removed!
|
||||
next = block->mnext; // We want to note our reference to mnext here in case the object gets removed!
|
||||
|
||||
if (!func(block->mobj))
|
||||
{
|
||||
P_SetTarget(&bnext, NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (P_MobjWasRemoved(tmthing) // func just popped our tmthing, cannot continue.
|
||||
|| (bnext && P_MobjWasRemoved(bnext))) // func just broke blockmap chain, cannot continue.
|
||||
{
|
||||
P_SetTarget(&bnext, NULL);
|
||||
if (P_MobjWasRemoved(tmthing)) // func just popped our tmthing, cannot continue.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
P_SetTarget(&bnext, NULL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue