mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-13 07:10:57 +00:00
Fix 3d7ab09: stopped trains not updating viewport hash when reversed for a second time (#9165)
This commit is contained in:
parent
05394d5216
commit
520595ff87
@ -1639,13 +1639,19 @@ void Vehicle::UpdateBoundingBoxCoordinates(bool update_cache) const
|
||||
*/
|
||||
void Vehicle::UpdateViewport(bool dirty)
|
||||
{
|
||||
Rect old_coord = this->sprite_cache.old_coord;
|
||||
/* If the existing cache is invalid we should ignore it, as it will be set to the current coords by UpdateBoundingBoxCoordinates */
|
||||
bool ignore_cached_coords = this->sprite_cache.old_coord.left == INVALID_COORD;
|
||||
|
||||
this->UpdateBoundingBoxCoordinates(true);
|
||||
UpdateVehicleViewportHash(this, this->coord.left, this->coord.top, old_coord.left, old_coord.top);
|
||||
|
||||
if (ignore_cached_coords) {
|
||||
UpdateVehicleViewportHash(this, this->coord.left, this->coord.top, INVALID_COORD, INVALID_COORD);
|
||||
} else {
|
||||
UpdateVehicleViewportHash(this, this->coord.left, this->coord.top, this->sprite_cache.old_coord.left, this->sprite_cache.old_coord.top);
|
||||
}
|
||||
|
||||
if (dirty) {
|
||||
if (old_coord.left == INVALID_COORD) {
|
||||
if (ignore_cached_coords) {
|
||||
this->sprite_cache.is_viewport_candidate = this->MarkAllViewportsDirty();
|
||||
} else {
|
||||
this->sprite_cache.is_viewport_candidate = ::MarkAllViewportsDirty(
|
||||
|
Loading…
Reference in New Issue
Block a user