Debug: Add viewport debug flags for sprite split control
This commit is contained in:
@@ -323,6 +323,8 @@ static void SetRailSnapTile(TileIndex tile);
|
|||||||
enum ViewportDebugFlags {
|
enum ViewportDebugFlags {
|
||||||
VDF_DIRTY_BLOCK_PER_DRAW,
|
VDF_DIRTY_BLOCK_PER_DRAW,
|
||||||
VDF_DIRTY_WHOLE_VIEWPORT,
|
VDF_DIRTY_WHOLE_VIEWPORT,
|
||||||
|
VDF_DIRTY_BLOCK_PER_SPLIT,
|
||||||
|
VDF_DISABLE_DRAW_SPLIT,
|
||||||
};
|
};
|
||||||
uint32 _viewport_debug_flags;
|
uint32 _viewport_debug_flags;
|
||||||
|
|
||||||
@@ -2975,7 +2977,7 @@ void ViewportMapDraw(const ViewPort * const vp)
|
|||||||
|
|
||||||
static void ViewportProcessParentSprites()
|
static void ViewportProcessParentSprites()
|
||||||
{
|
{
|
||||||
if (_vd.parent_sprites_to_sort.size() > 60 && (_cur_dpi->width >= 256 || _cur_dpi->height >= 256) && !_draw_bounding_boxes) {
|
if (_vd.parent_sprites_to_sort.size() > 60 && (_cur_dpi->width >= 256 || _cur_dpi->height >= 256) && !_draw_bounding_boxes && !HasBit(_viewport_debug_flags, VDF_DISABLE_DRAW_SPLIT)) {
|
||||||
/* split drawing region */
|
/* split drawing region */
|
||||||
ParentSpriteToSortVector all_sprites = std::move(_vd.parent_sprites_to_sort);
|
ParentSpriteToSortVector all_sprites = std::move(_vd.parent_sprites_to_sort);
|
||||||
_vd.parent_sprites_to_sort.clear();
|
_vd.parent_sprites_to_sort.clear();
|
||||||
@@ -3042,6 +3044,11 @@ static void ViewportProcessParentSprites()
|
|||||||
} else {
|
} else {
|
||||||
_vp_sprite_sorter(&_vd.parent_sprites_to_sort);
|
_vp_sprite_sorter(&_vd.parent_sprites_to_sort);
|
||||||
ViewportDrawParentSprites(&_vd.parent_sprites_to_sort, &_vd.child_screen_sprites_to_draw);
|
ViewportDrawParentSprites(&_vd.parent_sprites_to_sort, &_vd.child_screen_sprites_to_draw);
|
||||||
|
|
||||||
|
if (_draw_dirty_blocks && HasBit(_viewport_debug_flags, VDF_DIRTY_BLOCK_PER_SPLIT)) {
|
||||||
|
ViewportDrawDirtyBlocks();
|
||||||
|
++_dirty_block_colour;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3106,7 +3113,7 @@ void ViewportDoDraw(ViewPort *vp, int left, int top, int right, int bottom)
|
|||||||
|
|
||||||
if (_draw_bounding_boxes) ViewportDrawBoundingBoxes(&_vd.parent_sprites_to_sort);
|
if (_draw_bounding_boxes) ViewportDrawBoundingBoxes(&_vd.parent_sprites_to_sort);
|
||||||
}
|
}
|
||||||
if (_draw_dirty_blocks) {
|
if (_draw_dirty_blocks && !(HasBit(_viewport_debug_flags, VDF_DIRTY_BLOCK_PER_SPLIT) && vp->zoom < ZOOM_LVL_DRAW_MAP)) {
|
||||||
ViewportDrawDirtyBlocks();
|
ViewportDrawDirtyBlocks();
|
||||||
if (HasBit(_viewport_debug_flags, VDF_DIRTY_BLOCK_PER_DRAW)) ++_dirty_block_colour;
|
if (HasBit(_viewport_debug_flags, VDF_DIRTY_BLOCK_PER_DRAW)) ++_dirty_block_colour;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user