bruce-cesium 7.0.2 → 7.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/bruce-cesium.es5.js +1370 -243
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +1368 -241
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/internal/cesium-show-gate.js +100 -0
  7. package/dist/lib/internal/cesium-show-gate.js.map +1 -0
  8. package/dist/lib/internal/cesium-utils.js +207 -1
  9. package/dist/lib/internal/cesium-utils.js.map +1 -1
  10. package/dist/lib/internal/js-utils.js +25 -1
  11. package/dist/lib/internal/js-utils.js.map +1 -1
  12. package/dist/lib/rendering/cesium-animated-in-out.js +66 -7
  13. package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -1
  14. package/dist/lib/rendering/entity-render-engine-model3d.js +17 -8
  15. package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -1
  16. package/dist/lib/rendering/entity-render-engine-point.js +46 -12
  17. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -1
  18. package/dist/lib/rendering/entity-render-engine-polygon.js +107 -35
  19. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -1
  20. package/dist/lib/rendering/entity-render-engine-polyline.js +27 -8
  21. package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -1
  22. package/dist/lib/rendering/entity-render-engine.js +86 -14
  23. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  24. package/dist/lib/rendering/menu-item-manager.js +30 -2
  25. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  26. package/dist/lib/rendering/relation-render-engine.js +2 -1
  27. package/dist/lib/rendering/relation-render-engine.js.map +1 -1
  28. package/dist/lib/rendering/render-managers/common/entity-label.js +10 -2
  29. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
  30. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +45 -3
  31. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -1
  32. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +26 -15
  33. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  34. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +50 -3
  35. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  36. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +3 -2
  37. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -1
  38. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +3 -2
  39. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -1
  40. package/dist/lib/rendering/render-managers/render-manager.js +67 -3
  41. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  42. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +2 -0
  43. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
  44. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +2 -0
  45. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  46. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +2 -0
  47. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  48. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +4 -1
  49. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
  50. package/dist/lib/rendering/texture-frame-series-animator.js +7 -0
  51. package/dist/lib/rendering/texture-frame-series-animator.js.map +1 -1
  52. package/dist/lib/rendering/tileset-render-engine.js +18 -0
  53. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  54. package/dist/lib/rendering/visual-register-culler.js +191 -97
  55. package/dist/lib/rendering/visual-register-culler.js.map +1 -1
  56. package/dist/lib/rendering/visuals-register.js +263 -25
  57. package/dist/lib/rendering/visuals-register.js.map +1 -1
  58. package/dist/lib/utils/cesium-entity-styler.js +7 -3
  59. package/dist/lib/utils/cesium-entity-styler.js.map +1 -1
  60. package/dist/types/bruce-cesium.d.ts +1 -1
  61. package/dist/types/internal/cesium-show-gate.d.ts +29 -0
  62. package/dist/types/internal/cesium-utils.d.ts +63 -0
  63. package/dist/types/internal/js-utils.d.ts +10 -0
  64. package/dist/types/rendering/cesium-animated-in-out.d.ts +5 -0
  65. package/dist/types/rendering/entity-render-engine-model3d.d.ts +2 -0
  66. package/dist/types/rendering/entity-render-engine-point.d.ts +2 -0
  67. package/dist/types/rendering/entity-render-engine-polygon.d.ts +2 -0
  68. package/dist/types/rendering/entity-render-engine-polyline.d.ts +2 -0
  69. package/dist/types/rendering/entity-render-engine.d.ts +17 -1
  70. package/dist/types/rendering/menu-item-manager.d.ts +6 -0
  71. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +11 -0
  72. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +12 -0
  73. package/dist/types/rendering/render-managers/render-manager.d.ts +33 -0
  74. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +3 -0
  75. package/dist/types/rendering/texture-frame-series-animator.d.ts +5 -0
  76. package/dist/types/rendering/tileset-render-engine.d.ts +14 -0
  77. package/dist/types/rendering/visual-register-culler.d.ts +7 -0
  78. package/dist/types/rendering/visuals-register.d.ts +65 -1
  79. package/dist/types/utils/cesium-entity-styler.d.ts +1 -0
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tileset-render-engine.js","sourceRoot":"","sources":["../../../src/rendering/tileset-render-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tileset-render-engine.js","sourceRoot":"","sources":["../../../src/rendering/tileset-render-engine.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VisualRegisterCuller = void 0;
4
4
  const bruce_models_1 = require("bruce-models");
5
+ const cesium_utils_1 = require("../internal/cesium-utils");
5
6
  const Cesium = require("cesium");
6
7
  const entity_utils_1 = require("../utils/entity-utils");
7
8
  const view_utils_1 = require("../utils/view-utils");
@@ -11,18 +12,58 @@ const POINT_MIN_RADIUS = 15;
11
12
  // If a shape has more than this amount of points, we'll avoid checking it because it will take too long.
12
13
  // We will put responsibility on the bookmark creator to view shapes they can see.
13
14
  const DO_NOT_CULL_AT_LEN_POINTS = 5000;
14
- // Returns terrain height at a given position.
15
- // This will cache the results based on the terrain provider and position.
16
- const _terrainCache = new bruce_models_1.LRUCache(1000);
17
- // Positions within this tolerance from each-other will be re-used.
18
- const TERRAIN_HEIGHT_TOLERANCE = 400;
19
- // Tolerance to use when number of entities is lower than x in the scene.
20
- const TERRAIN_HEIGHT_TOLERANCE_LOW_COUNT = 30;
21
- const TERRAIN_HEIGHT_TOLERANCE_LOW_ENTITY_THRESHOLD = 100;
15
+ const _terrainCache = new bruce_models_1.LRUCache(20000);
16
+ /*
17
+ * Past this camera distance the terrain sample is skipped entirely (resolving a long-standing TODO here).
18
+ * The sphere's radius is padded by TERRAIN_SKIP_RADIUS_PAD instead, which covers any plausible unresolved ground height.
19
+ */
20
+ const TERRAIN_SKIP_DISTANCE = 60000;
21
+ const TERRAIN_SKIP_RADIUS_PAD = 1500;
22
+ // Edge length of a coarse grid cell, and of the finer cell used where the ground turns out to be varied.
23
+ const TERRAIN_CELL_SIZE = 400;
24
+ const TERRAIN_CELL_SIZE_FINE = 50;
25
+ // A cell spanning more than this much height cannot be answered with a single average.
26
+ const TERRAIN_CELL_MAX_SPREAD = 25;
27
+ /**
28
+ * Builds the grid key for a position at a given cell size.
29
+ */
30
+ function terrainCellKey(terrainId, pos3d, cellSize) {
31
+ const x = Math.floor(pos3d.x / cellSize);
32
+ const y = Math.floor(pos3d.y / cellSize);
33
+ const z = Math.floor(pos3d.z / cellSize);
34
+ return `${terrainId}_${cellSize}_${x}_${y}_${z}`;
35
+ }
36
+ /**
37
+ * Folds a sample into a cell, refining its estimate and noticing when the region is too varied to average.
38
+ */
39
+ function recordTerrainSample(key, height) {
40
+ const existing = _terrainCache.Get(key);
41
+ if (!existing) {
42
+ const cell = {
43
+ offset: height,
44
+ count: 1,
45
+ min: height,
46
+ max: height,
47
+ needsDetail: false
48
+ };
49
+ _terrainCache.Set(key, cell);
50
+ return cell;
51
+ }
52
+ existing.count++;
53
+ // Running mean, so the estimate keeps improving rather than being whatever landed first.
54
+ existing.offset += (height - existing.offset) / existing.count;
55
+ existing.min = Math.min(existing.min, height);
56
+ existing.max = Math.max(existing.max, height);
57
+ if (existing.max - existing.min > TERRAIN_CELL_MAX_SPREAD) {
58
+ existing.needsDetail = true;
59
+ }
60
+ _terrainCache.Set(key, existing);
61
+ return existing;
62
+ }
22
63
  /**
23
64
  * Returns the terrain height for a given position.
24
65
  * This will not sample most-detailed and instead the current state of the terrain.
25
- * TODO: If something is VERY far from the camera, we should just return 0.
66
+ * Callers past TERRAIN_SKIP_DISTANCE should not be asking at all, see shouldCullEntity.
26
67
  * @param viewer
27
68
  * @param pos3d
28
69
  * @returns
@@ -39,40 +80,39 @@ const getTerrainOffset = (viewer, pos3d) => {
39
80
  return 0;
40
81
  }
41
82
  const terrainId = terrain.tilesetId;
42
- // Check for existing values within TOLERANCE distance.
43
- const keys = Array.from(_terrainCache.Entries());
44
- const tolerance = viewer.entities.values.length > TERRAIN_HEIGHT_TOLERANCE_LOW_ENTITY_THRESHOLD ? TERRAIN_HEIGHT_TOLERANCE : TERRAIN_HEIGHT_TOLERANCE_LOW_COUNT;
45
- for (let i = 0; i < keys.length; i++) {
46
- const [key, offset] = keys[i];
47
- const [terrainId2, x, y, z] = key.split("_");
48
- if (terrainId2 != terrainId) {
49
- continue;
50
- }
51
- const pos3d2 = new Cesium.Cartesian3(parseFloat(x), parseFloat(y), parseFloat(z));
52
- const distance = Cesium.Cartesian3.distance(pos3d, pos3d2);
53
- if (distance < tolerance) {
54
- return offset;
55
- }
83
+ // Always start coarse and let the region teach us where that is not good enough, rather than guessing from a scene-wide entity count.
84
+ // A cell that turns out to span varied ground flags itself and its lookups move to the finer grid.
85
+ const coarseKey = terrainCellKey(terrainId, pos3d, TERRAIN_CELL_SIZE);
86
+ const coarseCell = _terrainCache.Get(coarseKey);
87
+ const useFine = Boolean(coarseCell === null || coarseCell === void 0 ? void 0 : coarseCell.needsDetail);
88
+ const key = useFine ? terrainCellKey(terrainId, pos3d, TERRAIN_CELL_SIZE_FINE) : coarseKey;
89
+ const cell = useFine ? _terrainCache.Get(key) : coarseCell;
90
+ if (cell && !cell.needsDetail) {
91
+ return cell.offset;
56
92
  }
57
- const key = terrainId + "_" + pos3d.x + "_" + pos3d.y + "_" + pos3d.z;
58
- let offset = _terrainCache.Get(key);
59
- if (offset == null) {
60
- const carto = Cesium.Cartographic.fromCartesian(pos3d);
61
- let height = 0;
62
- try {
63
- height = viewer.scene.globe.getHeight(carto);
64
- }
65
- catch (e) {
66
- if (DEBUG_MODE) {
67
- console.warn("Failed to get terrain height.", e);
68
- }
69
- // Likely out of rendered area.
70
- // This means it's not our problem since the user isn't looking there :)
93
+ const carto = Cesium.Cartographic.fromCartesian(pos3d);
94
+ let height = 0;
95
+ try {
96
+ height = viewer.scene.globe.getHeight(carto);
97
+ }
98
+ catch (e) {
99
+ if (DEBUG_MODE) {
100
+ console.warn("Failed to get terrain height.", e);
71
101
  }
72
- offset = height;
73
- _terrainCache.Set(key, offset);
102
+ // Likely out of rendered area.
103
+ // This means it's not our problem since the user isn't looking there :)
74
104
  }
75
- return offset;
105
+ if (height == null || isNaN(height)) {
106
+ // Terrain tile not loaded yet. Don't record it, so a later pass can sample it properly.
107
+ return coarseCell ? coarseCell.offset : 0;
108
+ }
109
+ // Always fold into the coarse cell as well, so its spread keeps being learned even while the finer grid is
110
+ // answering lookups for this region.
111
+ const recorded = recordTerrainSample(key, height);
112
+ if (useFine) {
113
+ recordTerrainSample(coarseKey, height);
114
+ }
115
+ return recorded.offset;
76
116
  };
77
117
  /**
78
118
  * Converts given pos3d into a an absolute position.
@@ -257,6 +297,10 @@ function shouldCullEntity(viewer, cEntity) {
257
297
  if (cEntity.model) {
258
298
  const model = cEntity.model;
259
299
  if (model._radius && !isNaN(model._radius)) {
300
+ // _radius is already measured from the model's origin rather than its own centre: the model3d
301
+ // engine folds the bounding sphere's centre offset into it (plus padding for badly-centred
302
+ // models), and measures it at the entity's scale. So it can be used as-is against a sphere
303
+ // centred on the entity position.
260
304
  sphere.radius = Math.max(model._radius, MODEL_MIN_RADIUS);
261
305
  }
262
306
  else {
@@ -270,12 +314,10 @@ function shouldCullEntity(viewer, cEntity) {
270
314
  let radius = getValue(viewer, cEntity.ellipse.semiMajorAxis);
271
315
  const extrusion = getValue(viewer, cEntity.ellipse.extrudedHeight);
272
316
  if (extrusion && !isNaN(extrusion)) {
273
- if (!radius) {
274
- radius = extrusion;
275
- }
276
- else if (extrusion > radius / 2) {
277
- radius = extrusion;
278
- }
317
+ // Expand rather than replace: measured from the base centre, the top rim of an extruded ellipse
318
+ // sits at sqrt(radius^2 + height^2). Taking whichever of the two is larger leaves the rim outside
319
+ // the sphere, and for something both wide and tall it would actually shrink it.
320
+ radius = radius ? Math.sqrt((radius * radius) + (extrusion * extrusion)) : extrusion;
279
321
  }
280
322
  if (radius && !isNaN(radius)) {
281
323
  sphere.radius = radius;
@@ -285,12 +327,11 @@ function shouldCullEntity(viewer, cEntity) {
285
327
  else if (cEntity.polygon) {
286
328
  const extrusion = getValue(viewer, cEntity.polygon.extrudedHeight);
287
329
  if (extrusion && !isNaN(extrusion)) {
288
- if (!sphere.radius) {
289
- sphere.radius = extrusion;
290
- }
291
- else if (extrusion > sphere.radius / 2) {
292
- sphere.radius = extrusion;
293
- }
330
+ // Same as the ellipse above: the footprint sphere has to grow to reach the extruded top corners,
331
+ // at sqrt(footprint^2 + height^2) from the footprint centre.
332
+ sphere.radius = sphere.radius
333
+ ? Math.sqrt((sphere.radius * sphere.radius) + (extrusion * extrusion))
334
+ : extrusion;
294
335
  }
295
336
  }
296
337
  else if (cEntity.point || cEntity.billboard) {
@@ -312,7 +353,15 @@ function shouldCullEntity(viewer, cEntity) {
312
353
  return false;
313
354
  }
314
355
  const adjustedSphere = boundingSphere.sphere.clone();
315
- adjustedSphere.center = adjustPos3d(viewer, boundingSphere.heightRef, adjustedSphere.center);
356
+ // Terrain only matters here because it moves the sphere onto the ground.
357
+ // Far enough away that a plausible ground height is a rounding error against the viewing distance, sampling it is wasted work.
358
+ const cameraDistance = Cesium.Cartesian3.distance(camera.position, adjustedSphere.center);
359
+ if (cameraDistance > TERRAIN_SKIP_DISTANCE) {
360
+ adjustedSphere.radius += TERRAIN_SKIP_RADIUS_PAD;
361
+ }
362
+ else {
363
+ adjustedSphere.center = adjustPos3d(viewer, boundingSphere.heightRef, adjustedSphere.center);
364
+ }
316
365
  const cullingVolume = camera.frustum.computeCullingVolume(camera.position, camera.direction, camera.up);
317
366
  const visibility = cullingVolume.computeVisibility(adjustedSphere);
318
367
  // Render sphere to visualize.
@@ -408,38 +457,67 @@ function isCullingIgnored(viewer, rego) {
408
457
  rego.relation != null ||
409
458
  // Explicitly being either shown or hidden.
410
459
  rego.overrideShow != null ||
411
- // Part of an independent collection.
412
- // Won't touch in case there is special logic.
413
- rego.collection ||
460
+ // Part of a collection we did not create, eg. a geojson data source, which may have its own rules for
461
+ // what is in the scene. Our own per-menu-item data sources are fair game.
462
+ (rego.collection && !(0, cesium_utils_1.IsCCollectionOwned)(rego.collection)) ||
414
463
  // We won't cull historic records as they may be interpolating their locations.
415
464
  Boolean(rego.outline && rego.outline.some(x => !!x.DateTime))) {
416
465
  return true;
417
466
  }
418
- const visual = rego.visual;
419
- // We will only cull clamped stuff since it seems that's where we get benefits from.
420
- let heightRef;
421
- if (visual.polygon) {
422
- heightRef = getValue(viewer, visual.polygon.heightReference);
423
- }
424
- else if (visual.polyline) {
425
- heightRef = getValue(viewer, visual.polyline.clampToGround) == false ? Cesium.HeightReference.NONE : Cesium.HeightReference.CLAMP_TO_GROUND;
426
- }
427
- else if (visual.corridor) {
428
- heightRef = getValue(viewer, visual.corridor.heightReference);
429
- }
430
- else if (visual.ellipse) {
431
- heightRef = getValue(viewer, visual.ellipse.heightReference);
432
- }
433
- else if (visual.model) {
434
- heightRef = getValue(viewer, visual.model.heightReference);
467
+ return false;
468
+ }
469
+ // A tileset's bounds are padded by this fraction before testing, so panning does not immediately evict something
470
+ // at the edge of view and pay to re-traverse it moments later.
471
+ const TILESET_CULL_PADDING = 0.25;
472
+ /**
473
+ * Suppresses tilesets whose padded bounds are outside the view, and restores ones that come back.
474
+ *
475
+ * Worth doing separately from entity culling because Cesium gates a tileset's whole update on its show flag: a
476
+ * hidden tileset skips traversal, tile selection and request scheduling entirely, where hiding its features still
477
+ * does all of that and merely draws nothing. There are only ever a handful of tilesets, so this needs no batching.
478
+ * @param register
479
+ */
480
+ function cullTilesets(register) {
481
+ var _a;
482
+ const viewer = register.Viewer;
483
+ const tilesets = register.GetTilesets();
484
+ if (!tilesets.length || viewer.isDestroyed() || !viewer.scene) {
485
+ return;
435
486
  }
436
- else if (visual.point) {
437
- heightRef = getValue(viewer, visual.point.heightReference);
487
+ const camera = viewer.scene.camera;
488
+ const cullingVolume = camera.frustum.computeCullingVolume(camera.position, camera.direction, camera.up);
489
+ let changed = false;
490
+ for (const rego of tilesets) {
491
+ const tileset = rego.tileset;
492
+ if (!tileset || !rego.gate) {
493
+ continue;
494
+ }
495
+ // A destroyed tileset should not be held onto, let alone culled.
496
+ if ((_a = tileset.isDestroyed) === null || _a === void 0 ? void 0 : _a.call(tileset)) {
497
+ register.RemoveTileset(tileset);
498
+ continue;
499
+ }
500
+ let sphere;
501
+ try {
502
+ sphere = tileset.boundingSphere;
503
+ }
504
+ catch (e) {
505
+ // Not ready yet. Leave it alone rather than guessing.
506
+ continue;
507
+ }
508
+ if (!sphere || isNaN(sphere.radius) || sphere.radius <= 0) {
509
+ continue;
510
+ }
511
+ const padded = sphere.clone();
512
+ padded.radius = sphere.radius * (1 + TILESET_CULL_PADDING);
513
+ const visible = cullingVolume.computeVisibility(padded) !== Cesium.Intersect.OUTSIDE;
514
+ if (register.SetTilesetCulled(tileset, !visible)) {
515
+ changed = true;
516
+ }
438
517
  }
439
- else if (visual.billboard) {
440
- heightRef = getValue(viewer, visual.billboard.heightReference);
518
+ if (changed) {
519
+ viewer.scene.requestRender();
441
520
  }
442
- return heightRef != Cesium.HeightReference.CLAMP_TO_GROUND;
443
521
  }
444
522
  /**
445
523
  * Runs through all entities in the register and culls them if they are out of the viewport.
@@ -455,6 +533,7 @@ function runCullChecker(register) {
455
533
  const entityIds = register.GetEntityIds();
456
534
  // We'll use the terrain cache per culler cycle.
457
535
  _terrainCache.Clear();
536
+ cullTilesets(register);
458
537
  checkInterval = setInterval(() => {
459
538
  var _a;
460
539
  if (viewer.isDestroyed() || !viewer.scene) {
@@ -507,7 +586,7 @@ function runCullChecker(register) {
507
586
  else {
508
587
  delete part[VisualRegisterCuller.VISUAL_CULL_KEY];
509
588
  if (rego.overrideShow != false &&
510
- !viewer.entities.contains(part) &&
589
+ !(0, cesium_utils_1.IsCEntityInScene)(viewer, part) &&
511
590
  !state.hidden &&
512
591
  (!isIsolatedAny || state.isolated)) {
513
592
  toAdd.push(part);
@@ -547,16 +626,17 @@ function removeEntities(viewer, entities) {
547
626
  }
548
627
  const removal = viewer.scene.postRender.addEventListener(() => {
549
628
  removal();
550
- for (let i = 0; i < entities.length; i++) {
551
- const entity = entities[i];
552
- if (entityRemoveAddState.get(entity.id) != false) {
553
- continue;
554
- }
555
- entityRemoveAddState.delete(entity.id);
556
- if (viewer.entities.contains(entity)) {
557
- viewer.entities.remove(entity);
629
+ // Batched, so Cesium raises one collectionChanged for the whole cull pass instead of one per entity.
630
+ (0, cesium_utils_1.WithSuspendedCCollections)(entities.map(x => (0, cesium_utils_1.GetCEntityCollection)(viewer, x)), () => {
631
+ for (let i = 0; i < entities.length; i++) {
632
+ const entity = entities[i];
633
+ if (entityRemoveAddState.get(entity.id) != false) {
634
+ continue;
635
+ }
636
+ entityRemoveAddState.delete(entity.id);
637
+ (0, cesium_utils_1.RemoveCEntityFromScene)(viewer, entity);
558
638
  }
559
- }
639
+ });
560
640
  });
561
641
  }
562
642
  /**
@@ -571,16 +651,17 @@ function addEntities(viewer, entities) {
571
651
  }
572
652
  const removal = viewer.scene.postRender.addEventListener(() => {
573
653
  removal();
574
- for (let i = 0; i < entities.length; i++) {
575
- const entity = entities[i];
576
- if (entityRemoveAddState.get(entity.id) != true) {
577
- continue;
578
- }
579
- entityRemoveAddState.delete(entity.id);
580
- if (!viewer.entities.contains(entity)) {
581
- viewer.entities.add(entity);
654
+ // Batched, so Cesium raises one collectionChanged for the whole cull pass instead of one per entity.
655
+ (0, cesium_utils_1.WithSuspendedCCollections)(entities.map(x => (0, cesium_utils_1.GetCEntityCollection)(viewer, x)), () => {
656
+ for (let i = 0; i < entities.length; i++) {
657
+ const entity = entities[i];
658
+ if (entityRemoveAddState.get(entity.id) != true) {
659
+ continue;
660
+ }
661
+ entityRemoveAddState.delete(entity.id);
662
+ (0, cesium_utils_1.AddCEntityToScene)(viewer, entity);
582
663
  }
583
- }
664
+ });
584
665
  });
585
666
  }
586
667
  var VisualRegisterCuller;
@@ -655,6 +736,19 @@ var VisualRegisterCuller;
655
736
  };
656
737
  }
657
738
  VisualRegisterCuller.Monitor = Monitor;
739
+ /**
740
+ * Runs the tileset visibility pass immediately, rather than waiting for the next cull cycle.
741
+ * Exposed so the behaviour is directly assertable, and for a caller that needs it applied now.
742
+ * @param register
743
+ */
744
+ function CullTilesets(register) {
745
+ cullTilesets(register);
746
+ }
747
+ VisualRegisterCuller.CullTilesets = CullTilesets;
748
+ function IsCullingIgnored(viewer, rego) {
749
+ return isCullingIgnored(viewer, rego);
750
+ }
751
+ VisualRegisterCuller.IsCullingIgnored = IsCullingIgnored;
658
752
  function IsCulled(viewer, rego, visual) {
659
753
  if (isCullingIgnored(viewer, rego)) {
660
754
  return false;