(svn r5641) -Fix: Adjust/correct some bounding boxes. This fixes some graphical glitches near bridges

This commit is contained in:
tron 2006-07-30 07:42:37 +00:00
parent 801bf631b0
commit a46aa3153c
2 changed files with 16 additions and 8 deletions

View File

@ -241,7 +241,7 @@ void DrawFoundation(TileInfo *ti, uint f)
AddSortableSpriteToDraw(
HASBIT(M(SLOPE_W) | M(SLOPE_S) | M(SLOPE_E) | M(SLOPE_N), ti->tileh) ?
sprite_base + (f - 15) : SPR_FOUNDATION_BASE + ti->tileh,
ti->x, ti->y, 1, 1, 1, ti->z
ti->x, ti->y, 16, 16, 1, ti->z
);
#undef M

View File

@ -858,10 +858,10 @@ static void DrawBridgePillars(PalSpriteID image, const TileInfo *ti, int x, int
const byte *p;
static const byte _tileh_bits[4][8] = {
{2,1,8,4, 16,11,0,9},
{1,8,4,2, 11,16,9,0},
{4,8,1,2, 16,11,0,9},
{2,4,8,1, 11,16,9,0},
{ 2, 1, 8, 4, 16, 2, 0, 9 },
{ 1, 8, 4, 2, 2, 16, 9, 0 },
{ 4, 8, 1, 2, 16, 2, 0, 9 },
{ 2, 4, 8, 1, 2, 16, 9, 0 }
};
if (_display_opt & DO_TRANS_BUILDINGS) MAKE_TRANSPARENT(image);
@ -876,12 +876,15 @@ static void DrawBridgePillars(PalSpriteID image, const TileInfo *ti, int x, int
}
for (; z >= front_height || z >= back_height; z -= TILE_HEIGHT) {
/* HACK set height of the BB of pillars to 1, because the origin of the
* sprites is at the top
*/
if (z >= front_height) { // front facing pillar
AddSortableSpriteToDraw(image, x, y, p[4], p[5], 0x28, z);
AddSortableSpriteToDraw(image, x, y, p[4], p[5], 1, z);
}
if (drawfarpillar && z >= back_height && z < i - TILE_HEIGHT) { // back facing pillar
AddSortableSpriteToDraw(image, x - p[6], y - p[7], p[4], p[5], 0x28, z);
AddSortableSpriteToDraw(image, x - p[6], y - p[7], p[4], p[5], 1, z);
}
}
}
@ -987,7 +990,12 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
// draw ramp
if (_display_opt & DO_TRANS_BUILDINGS) MAKE_TRANSPARENT(image);
AddSortableSpriteToDraw(image, ti->x, ti->y, 16, 16, 7, ti->z);
/* HACK set the height of the BB of a sloped ramp to 1 so a vehicle on
* it doesn't disappear behind it
*/
AddSortableSpriteToDraw(
image, ti->x, ti->y, 16, 16, ti->tileh == SLOPE_FLAT ? 1 : 8, ti->z
);
} else {
// bridge middle part.
Axis axis = GetBridgeAxis(ti->tile);