diff --git a/src/core/renderer/tiles/optimizedTraverseFunctions.js b/src/core/renderer/tiles/optimizedTraverseFunctions.js index 5159ffe15..83bfd0417 100644 --- a/src/core/renderer/tiles/optimizedTraverseFunctions.js +++ b/src/core/renderer/tiles/optimizedTraverseFunctions.js @@ -463,10 +463,6 @@ function toggleTiles( tile, renderer ) { } - } else { - - tile.traversal.active = false; - } // when loading parent tiles as fallbacks, keep all used tiles downloaded @@ -552,6 +548,17 @@ function toggleTiles( tile, renderer ) { } + } else { + + // For non-renderable tiles, notify plugins when the tile becomes or stops being a traversal leaf so we + // can display "empty" tiles in plugins like the DebugTilesPlugin. + setVisible = tile.traversal.isLeaf; + if ( tile.traversal.wasSetVisible !== setVisible ) { + + renderer.invokeOnePlugin( plugin => plugin.setEmptyTileVisible && plugin.setEmptyTileVisible( tile, setVisible ) ); + + } + } tile.traversal.wasSetActive = setActive; diff --git a/src/three/plugins/DebugTilesPlugin.js b/src/three/plugins/DebugTilesPlugin.js index 31012de8f..8e43bd6e2 100644 --- a/src/three/plugins/DebugTilesPlugin.js +++ b/src/three/plugins/DebugTilesPlugin.js @@ -393,6 +393,12 @@ export class DebugTilesPlugin { } + setEmptyTileVisible( tile, visible ) { + + this._onTileVisibilityChange( tile, visible ); + + } + _initExtremes() { if ( ! ( this.tiles && this.tiles.root ) ) {