Skip to content

Commit 2066c5a

Browse files
authored
Fix active tile transforms (#1627)
* Fix active tile transforms * Update comment
1 parent 78e7b87 commit 2066c5a

2 files changed

Lines changed: 59 additions & 1 deletion

File tree

src/three/renderer/tiles/TilesGroup.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,35 @@ export class TilesGroup extends Group {
7979

8080
}
8181

82+
// update the active tile scenes so they are up to date, as well. We iterate over all
83+
// children above because plugins etc may add other objects.
84+
const { tilesRenderer } = this;
85+
const { activeTiles, visibleTiles } = tilesRenderer;
86+
activeTiles.forEach( tile => {
87+
88+
if ( ! visibleTiles.has( tile ) ) {
89+
90+
const { scene } = tile.engineData;
91+
scene.traverse( c => {
92+
93+
c.updateMatrix();
94+
c.matrixWorld.copy( c.matrix );
95+
if ( c.parent ) {
96+
97+
c.matrixWorld.premultiply( c.parent.matrixWorld );
98+
99+
} else {
100+
101+
c.matrixWorld.premultiply( this.matrixWorld );
102+
103+
}
104+
105+
} );
106+
107+
}
108+
109+
} );
110+
82111
}
83112

84113
}

src/three/renderer/tiles/TilesRenderer.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,6 +935,36 @@ export class TilesRenderer extends TilesRendererBase {
935935

936936
}
937937

938+
setTileActive( tile, active ) {
939+
940+
const scene = tile.engineData.scene;
941+
const group = this.group;
942+
943+
if ( scene ) {
944+
945+
// update matrices for the tile scene
946+
scene.traverse( c => {
947+
948+
c.updateMatrix();
949+
c.matrixWorld.copy( c.matrix );
950+
if ( c.parent ) {
951+
952+
c.matrixWorld.premultiply( c.parent.matrixWorld );
953+
954+
} else {
955+
956+
c.matrixWorld.premultiply( group.matrixWorld );
957+
958+
}
959+
960+
} );
961+
962+
}
963+
964+
super.setTileActive( tile, active );
965+
966+
}
967+
938968
setTileVisible( tile, visible ) {
939969

940970
const scene = tile.engineData.scene;
@@ -945,7 +975,6 @@ export class TilesRenderer extends TilesRendererBase {
945975
if ( scene ) {
946976

947977
group.add( scene );
948-
scene.updateMatrixWorld( true );
949978

950979
}
951980

0 commit comments

Comments
 (0)