bruce-cesium 7.0.1 → 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 (84) hide show
  1. package/dist/bruce-cesium.es5.js +1475 -289
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +1473 -287
  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 +146 -63
  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 +58 -4
  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 +46 -23
  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 +70 -11
  35. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  36. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +13 -1
  37. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  38. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +3 -2
  39. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -1
  40. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +3 -2
  41. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -1
  42. package/dist/lib/rendering/render-managers/render-manager.js +67 -3
  43. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  44. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +2 -0
  45. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
  46. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +2 -0
  47. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  48. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +2 -0
  49. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  50. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +4 -1
  51. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
  52. package/dist/lib/rendering/texture-frame-series-animator.js +7 -0
  53. package/dist/lib/rendering/texture-frame-series-animator.js.map +1 -1
  54. package/dist/lib/rendering/tileset-render-engine.js +18 -0
  55. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  56. package/dist/lib/rendering/visual-register-culler.js +191 -97
  57. package/dist/lib/rendering/visual-register-culler.js.map +1 -1
  58. package/dist/lib/rendering/visuals-register.js +263 -25
  59. package/dist/lib/rendering/visuals-register.js.map +1 -1
  60. package/dist/lib/utils/cesium-entity-styler.js +7 -3
  61. package/dist/lib/utils/cesium-entity-styler.js.map +1 -1
  62. package/dist/types/bruce-cesium.d.ts +1 -1
  63. package/dist/types/internal/cesium-show-gate.d.ts +29 -0
  64. package/dist/types/internal/cesium-utils.d.ts +63 -0
  65. package/dist/types/internal/js-utils.d.ts +10 -0
  66. package/dist/types/rendering/cesium-animated-in-out.d.ts +5 -0
  67. package/dist/types/rendering/entity-render-engine-model3d.d.ts +2 -0
  68. package/dist/types/rendering/entity-render-engine-point.d.ts +2 -0
  69. package/dist/types/rendering/entity-render-engine-polygon.d.ts +2 -0
  70. package/dist/types/rendering/entity-render-engine-polyline.d.ts +2 -0
  71. package/dist/types/rendering/entity-render-engine.d.ts +17 -1
  72. package/dist/types/rendering/menu-item-manager.d.ts +6 -0
  73. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +13 -0
  74. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +2 -0
  75. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +14 -0
  76. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +2 -0
  77. package/dist/types/rendering/render-managers/render-manager.d.ts +33 -0
  78. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +3 -0
  79. package/dist/types/rendering/texture-frame-series-animator.d.ts +5 -0
  80. package/dist/types/rendering/tileset-render-engine.d.ts +14 -0
  81. package/dist/types/rendering/visual-register-culler.d.ts +7 -0
  82. package/dist/types/rendering/visuals-register.d.ts +65 -1
  83. package/dist/types/utils/cesium-entity-styler.d.ts +1 -0
  84. package/package.json +1 -1
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"visual-register-culler.js","sourceRoot":"","sources":["../../../src/rendering/visual-register-culler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visual-register-culler.js","sourceRoot":"","sources":["../../../src/rendering/visual-register-culler.ts"],"names":[],"mappings":"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"}