Skip to content

Commit 8099a04

Browse files
committed
optimizations
1 parent 1326d5b commit 8099a04

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

Source/Scene/Cesium3DTilesetTraversal.js

+12-10
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ define([
304304
};
305305

306306
BaseTraversal.prototype.getChildren = function(tile) {
307-
if (this.updateAndCheckChildren(tile)) {
307+
if (baseUpdateAndCheckChildren(this.tileset, tile, this.baseScreenSpaceError, this.frameState)) {
308308
var children = tile.children;
309309
var childrenLength = children.length;
310310
var allReady = true;
@@ -331,14 +331,12 @@ define([
331331
return emptyArray;
332332
};
333333

334-
BaseTraversal.prototype.updateAndCheckChildren = function(tile) {
335-
var tileset = this.tileset;
336-
334+
function baseUpdateAndCheckChildren(tileset, tile, baseScreenSpaceError, frameState) {
337335
if (tile.hasTilesetContent) {
338336
// load any tilesets of tilesets now because at this point we still have not achieved a base level of content
339-
loadTile(tile, this.frameState);
337+
loadTile(tile, frameState);
340338
if (tile.contentReady) {
341-
updateChildren(tileset, tile, this.frameState);
339+
updateChildren(tileset, tile, frameState);
342340
}
343341
return true;
344342
}
@@ -348,13 +346,13 @@ define([
348346
}
349347

350348
// stop traversal when we've attained the desired level of error
351-
if (tile._screenSpaceError <= this.baseScreenSpaceError) {
349+
if (tile._screenSpaceError <= baseScreenSpaceError) {
352350
// When skipping LODs, require an existing base level of content first
353-
updateChildren(tileset, tile, this.frameState);
351+
updateChildren(tileset, tile, frameState);
354352
return false;
355353
}
356354

357-
var childrenVisibility = updateChildren(tileset, tile, this.frameState);
355+
var childrenVisibility = updateChildren(tileset, tile, frameState);
358356
var showAdditive = tile.refine === Cesium3DTileRefine.ADD;
359357
var showReplacement = tile.refine === Cesium3DTileRefine.REPLACE && (childrenVisibility & Cesium3DTileChildrenVisibility.VISIBLE_IN_REQUEST_VOLUME) !== 0;
360358

@@ -407,7 +405,7 @@ define([
407405
};
408406

409407
InternalBaseTraversal.prototype.getChildren = function(tile) {
410-
if (this.updateAndCheckChildren(tile, this.baseScreenSpaceError)) {
408+
if (baseUpdateAndCheckChildren(this.tileset, tile, this.baseScreenSpaceError, this.frameState)) {
411409
var children = tile.children;
412410
var childrenLength = children.length;
413411
for (var i = 0; i < childrenLength; ++i) {
@@ -580,6 +578,10 @@ define([
580578
};
581579

582580
function updateChildren(tileset, tile, frameState) {
581+
if (tile._lastVisitedFrame === frameState.frameNumber) {
582+
return tile.childrenVisibility;
583+
}
584+
583585
var children = tile.children;
584586

585587
updateTransforms(children, tile.computedTransform);

0 commit comments

Comments
 (0)