@@ -510,7 +510,6 @@ function selectTilesForRendering(primitive, frameState) {
510510 tilesToRender . length = 0 ;
511511
512512 // We can't render anything before the level zero tiles exist.
513- let i ;
514513 const tileProvider = primitive . _tileProvider ;
515514 if ( ! defined ( primitive . _levelZeroTiles ) ) {
516515 const tilingScheme = tileProvider . tilingScheme ;
@@ -521,7 +520,7 @@ function selectTilesForRendering(primitive, frameState) {
521520 const numberOfRootTiles = primitive . _levelZeroTiles . length ;
522521 if ( rootTraversalDetails . length < numberOfRootTiles ) {
523522 rootTraversalDetails = new Array ( numberOfRootTiles ) ;
524- for ( i = 0 ; i < numberOfRootTiles ; ++ i ) {
523+ for ( let i = 0 ; i < numberOfRootTiles ; ++ i ) {
525524 if ( rootTraversalDetails [ i ] === undefined ) {
526525 rootTraversalDetails [ i ] = new TraversalDetails ( ) ;
527526 }
@@ -534,7 +533,6 @@ function selectTilesForRendering(primitive, frameState) {
534533
535534 primitive . _occluders . ellipsoid . cameraPosition = frameState . camera . positionWC ;
536535
537- let tile ;
538536 const levelZeroTiles = primitive . _levelZeroTiles ;
539537 const occluders =
540538 levelZeroTiles . length > 1 ? primitive . _occluders : undefined ;
@@ -548,18 +546,27 @@ function selectTilesForRendering(primitive, frameState) {
548546 const customDataAdded = primitive . _addHeightCallbacks ;
549547 const customDataRemoved = primitive . _removeHeightCallbacks ;
550548
551- let len ;
552- if ( customDataAdded . length > 0 || customDataRemoved . length > 0 ) {
553- for ( i = 0 , len = levelZeroTiles . length ; i < len ; ++ i ) {
554- tile = levelZeroTiles [ i ] ;
555- tile . _addedCustomData = customDataAdded ;
556- tile . _removedCustomData = customDataRemoved ;
557- tile . _updateCustomData ( ) ;
549+ customDataAdded . forEach ( ( data ) => {
550+ const tile = levelZeroTiles . find ( ( tile ) =>
551+ Rectangle . contains ( tile . rectangle , data . positionCartographic ) ,
552+ ) ;
553+ if ( tile ) {
554+ tile . _addedCustomData . push ( data ) ;
558555 }
556+ } ) ;
559557
560- customDataAdded . length = 0 ;
561- customDataRemoved . length = 0 ;
562- }
558+ customDataRemoved . forEach ( ( data ) => {
559+ const tile = levelZeroTiles . find ( ( tile ) =>
560+ Rectangle . contains ( tile . rectangle , data . positionCartographic ) ,
561+ ) ;
562+ if ( tile ) {
563+ tile . _removedCustomData . push ( data ) ;
564+ }
565+ } ) ;
566+
567+ levelZeroTiles . forEach ( ( tile ) => tile . _updateCustomData ( ) ) ;
568+ customDataAdded . length = 0 ;
569+ customDataRemoved . length = 0 ;
563570
564571 const camera = frameState . camera ;
565572
@@ -575,8 +582,8 @@ function selectTilesForRendering(primitive, frameState) {
575582 ) ;
576583
577584 // Traverse in depth-first, near-to-far order.
578- for ( i = 0 , len = levelZeroTiles . length ; i < len ; ++ i ) {
579- tile = levelZeroTiles [ i ] ;
585+ for ( let i = 0 ; i < levelZeroTiles . length ; ++ i ) {
586+ const tile = levelZeroTiles [ i ] ;
580587 primitive . _tileReplacementQueue . markTileRendered ( tile ) ;
581588 if ( ! tile . renderable ) {
582589 queueTileLoad ( primitive , primitive . _tileLoadQueueHigh , tile , frameState ) ;
0 commit comments