- moved the blockmap into a substructure of FLevelLocals.
This part can certainly improved a lot but the most important thing, grouping all those global variables into one place, is done.
This commit is contained in:
parent
f864a09faa
commit
33d36157c8
10 changed files with 189 additions and 174 deletions
|
|
@ -1069,10 +1069,10 @@ void FPolyObj::UnLinkPolyobj ()
|
|||
// remove the polyobj from each blockmap section
|
||||
for(j = bbox[BOXBOTTOM]; j <= bbox[BOXTOP]; j++)
|
||||
{
|
||||
index = j*bmapwidth;
|
||||
index = j*level.blockmap.bmapwidth;
|
||||
for(i = bbox[BOXLEFT]; i <= bbox[BOXRIGHT]; i++)
|
||||
{
|
||||
if(i >= 0 && i < bmapwidth && j >= 0 && j < bmapheight)
|
||||
if(i >= 0 && i < level.blockmap.bmapwidth && j >= 0 && j < level.blockmap.bmapheight)
|
||||
{
|
||||
link = PolyBlockMap[index+i];
|
||||
while(link != NULL && link->polyobj != this)
|
||||
|
|
@ -1105,13 +1105,15 @@ bool FPolyObj::CheckMobjBlocking (side_t *sd)
|
|||
line_t *ld;
|
||||
bool blocked;
|
||||
bool performBlockingThrust;
|
||||
int bmapwidth = level.blockmap.bmapwidth;
|
||||
int bmapheight = level.blockmap.bmapheight;
|
||||
|
||||
ld = sd->linedef;
|
||||
|
||||
top = GetBlockY(ld->bbox[BOXTOP]);
|
||||
bottom = GetBlockY(ld->bbox[BOXBOTTOM]);
|
||||
left = GetBlockX(ld->bbox[BOXLEFT]);
|
||||
right = GetBlockX(ld->bbox[BOXRIGHT]);
|
||||
top = level.blockmap.GetBlockY(ld->bbox[BOXTOP]);
|
||||
bottom = level.blockmap.GetBlockY(ld->bbox[BOXBOTTOM]);
|
||||
left = level.blockmap.GetBlockX(ld->bbox[BOXLEFT]);
|
||||
right = level.blockmap.GetBlockX(ld->bbox[BOXRIGHT]);
|
||||
|
||||
blocked = false;
|
||||
checker.Clear();
|
||||
|
|
@ -1129,7 +1131,7 @@ bool FPolyObj::CheckMobjBlocking (side_t *sd)
|
|||
{
|
||||
for (i = left; i <= right; i++)
|
||||
{
|
||||
for (block = blocklinks[j+i]; block != NULL; block = block->NextActor)
|
||||
for (block = level.blockmap.blocklinks[j+i]; block != NULL; block = block->NextActor)
|
||||
{
|
||||
mobj = block->Me;
|
||||
for (k = (int)checker.Size()-1; k >= 0; --k)
|
||||
|
|
@ -1230,6 +1232,8 @@ void FPolyObj::LinkPolyobj ()
|
|||
{
|
||||
polyblock_t **link;
|
||||
polyblock_t *tempLink;
|
||||
int bmapwidth = level.blockmap.bmapwidth;
|
||||
int bmapheight = level.blockmap.bmapheight;
|
||||
|
||||
// calculate the polyobj bbox
|
||||
Bounds.ClearBox();
|
||||
|
|
@ -1242,10 +1246,10 @@ void FPolyObj::LinkPolyobj ()
|
|||
vt = Sidedefs[i]->linedef->v2;
|
||||
Bounds.AddToBox(vt->fPos());
|
||||
}
|
||||
bbox[BOXRIGHT] = GetBlockX(Bounds.Right());
|
||||
bbox[BOXLEFT] = GetBlockX(Bounds.Left());
|
||||
bbox[BOXTOP] = GetBlockY(Bounds.Top());
|
||||
bbox[BOXBOTTOM] = GetBlockY(Bounds.Bottom());
|
||||
bbox[BOXRIGHT] = level.blockmap.GetBlockX(Bounds.Right());
|
||||
bbox[BOXLEFT] = level.blockmap.GetBlockX(Bounds.Left());
|
||||
bbox[BOXTOP] = level.blockmap.GetBlockY(Bounds.Top());
|
||||
bbox[BOXBOTTOM] = level.blockmap.GetBlockY(Bounds.Bottom());
|
||||
// add the polyobj to each blockmap section
|
||||
for(int j = bbox[BOXBOTTOM]*bmapwidth; j <= bbox[BOXTOP]*bmapwidth;
|
||||
j += bmapwidth)
|
||||
|
|
@ -1398,6 +1402,8 @@ void FPolyObj::ClosestPoint(const DVector2 &fpos, DVector2 &out, side_t **side)
|
|||
static void InitBlockMap (void)
|
||||
{
|
||||
int i;
|
||||
int bmapwidth = level.blockmap.bmapwidth;
|
||||
int bmapheight = level.blockmap.bmapheight;
|
||||
|
||||
PolyBlockMap = new polyblock_t *[bmapwidth*bmapheight];
|
||||
memset (PolyBlockMap, 0, bmapwidth*bmapheight*sizeof(polyblock_t *));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue