bruce-cesium 0.0.2 → 0.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 (49) hide show
  1. package/dist/bruce-cesium.es5.js +335 -199
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +310 -203
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  6. package/dist/lib/rendering/menu-item-manager.js +26 -0
  7. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  8. package/dist/lib/rendering/render-helper.js +3 -0
  9. package/dist/lib/rendering/render-helper.js.map +1 -1
  10. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +5 -1
  11. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  12. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +6 -1
  13. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  14. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +5 -1
  15. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +4 -1
  17. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +5 -4
  19. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  20. package/dist/lib/rendering/tileset-render-engine.js +1 -1
  21. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  22. package/dist/lib/rendering/visuals-register.js +166 -139
  23. package/dist/lib/rendering/visuals-register.js.map +1 -1
  24. package/dist/lib/utils/drawing-utils.js +8 -0
  25. package/dist/lib/utils/drawing-utils.js.map +1 -1
  26. package/dist/lib/utils/entity-utils.js +33 -0
  27. package/dist/lib/utils/entity-utils.js.map +1 -1
  28. package/dist/lib/utils/measure-utils.js +6 -0
  29. package/dist/lib/utils/measure-utils.js.map +1 -1
  30. package/dist/lib/viewer/cesium-view-monitor.js +3 -0
  31. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -1
  32. package/dist/lib/viewer/viewer-utils.js +10 -0
  33. package/dist/lib/viewer/viewer-utils.js.map +1 -1
  34. package/dist/types/rendering/entity-render-engine.d.ts +5 -5
  35. package/dist/types/rendering/menu-item-manager.d.ts +17 -1
  36. package/dist/types/rendering/render-helper.d.ts +3 -0
  37. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +5 -1
  38. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +6 -1
  39. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +5 -1
  40. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +4 -1
  41. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +5 -1
  42. package/dist/types/rendering/tileset-render-engine.d.ts +2 -2
  43. package/dist/types/rendering/visuals-register.d.ts +38 -20
  44. package/dist/types/utils/drawing-utils.d.ts +8 -0
  45. package/dist/types/utils/entity-utils.d.ts +12 -0
  46. package/dist/types/utils/measure-utils.d.ts +6 -0
  47. package/dist/types/viewer/cesium-view-monitor.d.ts +3 -0
  48. package/dist/types/viewer/viewer-utils.d.ts +10 -0
  49. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, Tileset, MenuItem, ObjectUtils } from 'bruce-models';
2
1
  import { Cartesian2, Cartographic, Math as Math$1, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Color, HeightReference, Cartesian3, Entity, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
2
+ import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, ObjectUtils, Tileset, MenuItem } from 'bruce-models';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -72,6 +72,9 @@ function areBoundsEqual(a, b) {
72
72
  function arePosEqual(a, b) {
73
73
  return a.latitude == b.latitude && a.longitude == b.longitude;
74
74
  }
75
+ /**
76
+ * Monitors and emits events when the Cesium view changes.
77
+ */
75
78
  var CesiumViewMonitor = /** @class */ (function () {
76
79
  function CesiumViewMonitor(viewer) {
77
80
  var _this = this;
@@ -219,6 +222,12 @@ var CesiumViewMonitor = /** @class */ (function () {
219
222
 
220
223
  var ViewerUtils;
221
224
  (function (ViewerUtils) {
225
+ /**
226
+ * Creates a Cesium viewer in a given HTML container and returns it.
227
+ * This will kill all widgets in the process.
228
+ * @param container
229
+ * @returns
230
+ */
222
231
  function InitViewer(container) {
223
232
  if (container._cViewer) {
224
233
  throw new Error("Container already has a viewer.");
@@ -252,6 +261,10 @@ var ViewerUtils;
252
261
  }
253
262
  }
254
263
  ViewerUtils.DestroyWidget = DestroyWidget;
264
+ /**
265
+ * Hides all unnecessary elements from the Cesium viewer container.
266
+ * @param viewer
267
+ */
255
268
  function StyleContainer(viewer) {
256
269
  var _a;
257
270
  var container = viewer.container;
@@ -354,6 +367,14 @@ function __generator(thisArg, body) {
354
367
 
355
368
  var DrawingUtils;
356
369
  (function (DrawingUtils) {
370
+ /**
371
+ * Returns the point across a polyline at a given distance.
372
+ * If the distance exceeds the length of the line, the point will be placed at the end of the line.
373
+ * @param viewer
374
+ * @param positions
375
+ * @param distance
376
+ * @returns
377
+ */
357
378
  function PointAcrossPolyline(viewer, positions, distance) {
358
379
  if (positions.length > 1) {
359
380
  var currentDistance = 0;
@@ -385,6 +406,12 @@ var DrawingUtils;
385
406
 
386
407
  var MeasureUtils;
387
408
  (function (MeasureUtils) {
409
+ /**
410
+ * Returns the total distance in meters between an array of points.
411
+ * This distance is NOT following the terrain.
412
+ * @param posses
413
+ * @returns
414
+ */
388
415
  function MeasurePolyline(posses) {
389
416
  if (posses.length < 2) {
390
417
  return 0;
@@ -408,8 +435,27 @@ var MeasureUtils;
408
435
  MeasureUtils.MeasurePolyline = MeasurePolyline;
409
436
  })(MeasureUtils || (MeasureUtils = {}));
410
437
 
438
+ function traverseEntity(cEntity, arr) {
439
+ if (cEntity._parentEntity) {
440
+ traverseEntity(cEntity._parentEntity, arr);
441
+ }
442
+ if (cEntity._siblingGraphics) {
443
+ for (var i = 0; i < cEntity._siblingGraphics.length; i++) {
444
+ var sibling = cEntity._siblingGraphics[i];
445
+ traverseEntity(sibling, arr);
446
+ }
447
+ }
448
+ arr.push(cEntity);
449
+ }
411
450
  var EntityUtils;
412
451
  (function (EntityUtils) {
452
+ /**
453
+ * Returns an entity's position.
454
+ * This will attempt to calculate it from multiple sources of data.
455
+ * @param viewer
456
+ * @param entity
457
+ * @returns
458
+ */
413
459
  function GetPos(viewer, entity) {
414
460
  if (entity.location && Carto.ValidateCarto(entity.location)) {
415
461
  var location_1 = entity.location;
@@ -466,6 +512,20 @@ var EntityUtils;
466
512
  return null;
467
513
  }
468
514
  EntityUtils.GetPos = GetPos;
515
+ /**
516
+ * Returns entity and any associated parent/sibling entities as a flat array.
517
+ * @param entity
518
+ */
519
+ function GatherEntity(entity) {
520
+ if (entity instanceof Entity) {
521
+ var cEntity = entity;
522
+ var items = [];
523
+ traverseEntity(cEntity, items);
524
+ return items;
525
+ }
526
+ return [entity];
527
+ }
528
+ EntityUtils.GatherEntity = GatherEntity;
469
529
  })(EntityUtils || (EntityUtils = {}));
470
530
 
471
531
  var RenderManager;
@@ -1244,6 +1304,10 @@ var EntityRenderEngine;
1244
1304
  })(Model3d = EntityRenderEngine.Model3d || (EntityRenderEngine.Model3d = {}));
1245
1305
  })(EntityRenderEngine || (EntityRenderEngine = {}));
1246
1306
 
1307
+ /**
1308
+ * Manager for rendering Bruce entities.
1309
+ * This will request entities based on setup menu item filter.
1310
+ */
1247
1311
  var EntitiesRenderManager;
1248
1312
  (function (EntitiesRenderManager) {
1249
1313
  var Manager = /** @class */ (function () {
@@ -1395,7 +1459,7 @@ var EntitiesRenderManager;
1395
1459
  this.visualsManager.Add({
1396
1460
  entityId: id,
1397
1461
  menuItemId: this.item.id,
1398
- visuals: [cEntity],
1462
+ visual: cEntity,
1399
1463
  priority: 0
1400
1464
  });
1401
1465
  }
@@ -1414,6 +1478,11 @@ var EntitiesRenderManager;
1414
1478
  EntitiesRenderManager.Manager = Manager;
1415
1479
  })(EntitiesRenderManager || (EntitiesRenderManager = {}));
1416
1480
 
1481
+ /**
1482
+ * Render manager for a group of pre-loaded entities.
1483
+ * The entities may or may not have records.
1484
+ * If the entities DON'T have records, it is recommended to avoid using the 3dmodel visualization as it will fail to locate LODs.
1485
+ */
1417
1486
  var EntitiesLoadedRenderManager;
1418
1487
  (function (EntitiesLoadedRenderManager) {
1419
1488
  var Manager = /** @class */ (function () {
@@ -1488,7 +1557,7 @@ var EntitiesLoadedRenderManager;
1488
1557
  this.visualsManager.Add({
1489
1558
  entityId: id,
1490
1559
  menuItemId: this.item.id,
1491
- visuals: [cEntity],
1560
+ visual: cEntity,
1492
1561
  priority: 0
1493
1562
  });
1494
1563
  }
@@ -1507,6 +1576,230 @@ var EntitiesLoadedRenderManager;
1507
1576
  EntitiesLoadedRenderManager.Manager = Manager;
1508
1577
  })(EntitiesLoadedRenderManager || (EntitiesLoadedRenderManager = {}));
1509
1578
 
1579
+ function removeEntity(viewer, visual) {
1580
+ unmarkEntity(visual);
1581
+ if (visual instanceof Entity) {
1582
+ EntityRenderEngine.Remove(viewer, visual);
1583
+ }
1584
+ else if (visual instanceof Primitive) {
1585
+ if (viewer.scene.primitives.contains(visual)) {
1586
+ viewer.scene.primitives.remove(visual);
1587
+ }
1588
+ }
1589
+ else if (visual instanceof Cesium3DTileFeature) {
1590
+ // No way to tell if changing show will crash it!
1591
+ try {
1592
+ visual.show = false;
1593
+ }
1594
+ catch (e) {
1595
+ console.error(e);
1596
+ }
1597
+ }
1598
+ }
1599
+ function updateCEntityShow(viewer, visual, show) {
1600
+ if (visual._parentEntity) {
1601
+ updateCEntityShow(viewer, visual._parentEntity, show);
1602
+ }
1603
+ if (visual._siblingGraphics) {
1604
+ for (var i = 0; i < visual._siblingGraphics.length; i++) {
1605
+ var sibling = visual._siblingGraphics[i];
1606
+ updateCEntityShow(viewer, sibling, show);
1607
+ }
1608
+ }
1609
+ if (viewer.entities.contains(visual)) {
1610
+ visual.show = show;
1611
+ }
1612
+ }
1613
+ function updateEntityShow(viewer, visual, show) {
1614
+ if (visual instanceof Entity) {
1615
+ updateCEntityShow(viewer, visual, show);
1616
+ }
1617
+ else if (visual instanceof Primitive) {
1618
+ if (viewer.scene.primitives.contains(visual)) {
1619
+ visual.show = show;
1620
+ }
1621
+ }
1622
+ else if (visual instanceof Cesium3DTileFeature) {
1623
+ // No way to tell if changing show will crash it!
1624
+ try {
1625
+ visual.show = show;
1626
+ }
1627
+ catch (e) {
1628
+ console.error(e);
1629
+ }
1630
+ }
1631
+ }
1632
+ function updateEntity(viewer, entityRegos) {
1633
+ var highestPriority = null;
1634
+ for (var i = 0; i < entityRegos.length; i++) {
1635
+ var rego = entityRegos[i];
1636
+ if (highestPriority === null || rego.priority > highestPriority.priority) {
1637
+ highestPriority = rego;
1638
+ }
1639
+ }
1640
+ for (var i = 0; i < entityRegos.length; i++) {
1641
+ var rego = entityRegos[i];
1642
+ updateEntityShow(viewer, rego.visual, rego === highestPriority);
1643
+ }
1644
+ }
1645
+ function markEntity(register, rego, visual) {
1646
+ var vis = visual;
1647
+ vis._register = register;
1648
+ vis._rego = rego;
1649
+ if (visual instanceof Entity) {
1650
+ var visEnt = visual;
1651
+ if (visEnt._parentEntity) {
1652
+ markEntity(register, rego, visEnt._parentEntity);
1653
+ }
1654
+ if (visEnt._siblingGraphics) {
1655
+ for (var i = 0; i < visEnt._siblingGraphics.length; i++) {
1656
+ markEntity(register, rego, visEnt._siblingGraphics[i]);
1657
+ }
1658
+ }
1659
+ }
1660
+ }
1661
+ function unmarkEntity(visual) {
1662
+ var vis = visual;
1663
+ vis._register = null;
1664
+ if (visual instanceof Entity) {
1665
+ var visEnt = visual;
1666
+ if (visEnt._parentEntity) {
1667
+ unmarkEntity(visEnt._parentEntity);
1668
+ }
1669
+ if (visEnt._siblingGraphics) {
1670
+ for (var i = 0; i < visEnt._siblingGraphics.length; i++) {
1671
+ unmarkEntity(visEnt._siblingGraphics[i]);
1672
+ }
1673
+ }
1674
+ }
1675
+ }
1676
+ /**
1677
+ * Manages a registry of all Bruce visuals being rendered by menu items.
1678
+ * If multiple stuff is registered with the same entity id, only the "best" one is left visible.
1679
+ */
1680
+ var VisualsRegister;
1681
+ (function (VisualsRegister) {
1682
+ var Register = /** @class */ (function () {
1683
+ function Register(viewer) {
1684
+ this.id = ObjectUtils.UId();
1685
+ this.rego = {};
1686
+ this.onUpdate = null;
1687
+ this.viewer = viewer;
1688
+ }
1689
+ Object.defineProperty(Register.prototype, "Id", {
1690
+ get: function () {
1691
+ return this.id;
1692
+ },
1693
+ enumerable: false,
1694
+ configurable: true
1695
+ });
1696
+ Object.defineProperty(Register.prototype, "OnUpdate", {
1697
+ get: function () {
1698
+ return this.onUpdate;
1699
+ },
1700
+ enumerable: false,
1701
+ configurable: true
1702
+ });
1703
+ Register.prototype.Add = function (rego) {
1704
+ var _a, _b;
1705
+ this.Remove(rego.entityId, rego.menuItemId, false);
1706
+ var entityId = rego.entityId;
1707
+ var entityRegos = (_a = this.rego[entityId]) !== null && _a !== void 0 ? _a : [];
1708
+ entityRegos.push(rego);
1709
+ this.rego[entityId] = entityRegos;
1710
+ markEntity(this, rego, rego.visual);
1711
+ updateEntity(this.viewer, this.rego[entityId]);
1712
+ (_b = this.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({ rego: rego, isAdding: true });
1713
+ };
1714
+ Register.prototype.GetVisuals = function (entityId, menuItemId) {
1715
+ var _a;
1716
+ var entityRegos = this.rego[entityId];
1717
+ if (!entityRegos) {
1718
+ return [];
1719
+ }
1720
+ var visuals = (_a = entityRegos.find(function (r) { return r.menuItemId === menuItemId; })) === null || _a === void 0 ? void 0 : _a.visual;
1721
+ return visuals !== null && visuals !== void 0 ? visuals : [];
1722
+ };
1723
+ Register.prototype.RemoveByEntityId = function (id) {
1724
+ var _a;
1725
+ var entityRegos = this.rego[id];
1726
+ if (!entityRegos) {
1727
+ return;
1728
+ }
1729
+ for (var i = 0; i < entityRegos.length; i++) {
1730
+ var rego = entityRegos[i];
1731
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
1732
+ removeEntity(this.viewer, rego.visual);
1733
+ }
1734
+ this.rego[id] = [];
1735
+ delete this.rego[id];
1736
+ };
1737
+ Register.prototype.RemoveByMenuItemId = function (id) {
1738
+ var _a;
1739
+ for (var entityId in this.rego) {
1740
+ var entityRegos = this.rego[entityId];
1741
+ if (entityRegos) {
1742
+ var rego = entityRegos.find(function (r) { return r.menuItemId === id; });
1743
+ if (!rego) {
1744
+ continue;
1745
+ }
1746
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
1747
+ removeEntity(this.viewer, rego.visual);
1748
+ var doesInclude = this.rego[entityId].find(function (r) { return r.menuItemId === id; });
1749
+ if (doesInclude) {
1750
+ this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== id; });
1751
+ updateEntity(this.viewer, this.rego[entityId]);
1752
+ }
1753
+ }
1754
+ }
1755
+ };
1756
+ Register.prototype.Remove = function (entityId, menuItemId, _doUpdate) {
1757
+ var _a;
1758
+ if (_doUpdate === void 0) { _doUpdate = true; }
1759
+ var entityRegos = this.rego[entityId];
1760
+ if (!entityRegos) {
1761
+ return;
1762
+ }
1763
+ var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
1764
+ if (!rego) {
1765
+ return;
1766
+ }
1767
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
1768
+ removeEntity(this.viewer, rego.visual);
1769
+ this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
1770
+ if (_doUpdate) {
1771
+ updateEntity(this.viewer, this.rego[entityId]);
1772
+ }
1773
+ };
1774
+ /**
1775
+ * Returns an array of drilled visuals associated with this register.
1776
+ * The top array item is the first found.
1777
+ * @param cursor
1778
+ * @returns
1779
+ */
1780
+ Register.prototype.GetFromCursor = function (cursor) {
1781
+ var _a;
1782
+ var found = [];
1783
+ var picked = this.viewer.scene.drillPick(new Cartesian2(cursor.x, cursor.y), 5);
1784
+ for (var i = 0; i < picked.length; i++) {
1785
+ var object = picked[i];
1786
+ var entity = (object && object.id && object.id instanceof Entity ? object.id : object);
1787
+ var visual = entity;
1788
+ if (((_a = visual === null || visual === void 0 ? void 0 : visual._register) === null || _a === void 0 ? void 0 : _a.Id) == this.id) {
1789
+ found.push(visual._rego);
1790
+ }
1791
+ }
1792
+ return found;
1793
+ };
1794
+ return Register;
1795
+ }());
1796
+ VisualsRegister.Register = Register;
1797
+ })(VisualsRegister || (VisualsRegister = {}));
1798
+
1799
+ /**
1800
+ * Render manager for rendering an array of entity ids.
1801
+ * This will render them in batches to avoid overloading the viewer.
1802
+ */
1510
1803
  var EntitiesIdsRenderManager;
1511
1804
  (function (EntitiesIdsRenderManager) {
1512
1805
  var Manager = /** @class */ (function () {
@@ -1584,7 +1877,7 @@ var EntitiesIdsRenderManager;
1584
1877
  this.visualsManager.Add({
1585
1878
  entityId: id,
1586
1879
  menuItemId: this.item.id,
1587
- visuals: [cEntity],
1880
+ visual: cEntity,
1588
1881
  priority: 0
1589
1882
  });
1590
1883
  }
@@ -1603,6 +1896,9 @@ var EntitiesIdsRenderManager;
1603
1896
  EntitiesIdsRenderManager.Manager = Manager;
1604
1897
  })(EntitiesIdsRenderManager || (EntitiesIdsRenderManager = {}));
1605
1898
 
1899
+ /**
1900
+ * Manager for rendering a single Bruce entity.
1901
+ */
1606
1902
  var EntityRenderManager;
1607
1903
  (function (EntityRenderManager) {
1608
1904
  var Manager = /** @class */ (function () {
@@ -1676,7 +1972,7 @@ var EntityRenderManager;
1676
1972
  this.visualsManager.Add({
1677
1973
  entityId: entity.Bruce.ID,
1678
1974
  menuItemId: this.item.id,
1679
- visuals: [cEntity],
1975
+ visual: cEntity,
1680
1976
  priority: 0
1681
1977
  });
1682
1978
  }
@@ -2084,7 +2380,7 @@ var TilesetRenderEngine;
2084
2380
  var bColor = (((_a = style.modelStyle) === null || _a === void 0 ? void 0 : _a.fillColor) ? Calculator.GetValue(style.modelStyle.fillColor, data, []) : null);
2085
2381
  if (bColor != null) {
2086
2382
  var cColor = colorToCColor$1(bColor);
2087
- var visual = entity.visuals.length > 0 ? entity.visuals[0] : null;
2383
+ var visual = entity.visual;
2088
2384
  if (visual && visual instanceof Cesium3DTileFeature) {
2089
2385
  visual.color = cColor;
2090
2386
  }
@@ -2125,6 +2421,10 @@ var TilesetRenderEngine;
2125
2421
  TilesetRenderEngine.CadStyler = CadStyler;
2126
2422
  })(TilesetRenderEngine || (TilesetRenderEngine = {}));
2127
2423
 
2424
+ /**
2425
+ * Manager for rendering CAD tilesets.
2426
+ * CAD tilesets are referred to as "MODEL" tilesets in some other areas of Bruce code.
2427
+ */
2128
2428
  var TilesetCadRenderManager;
2129
2429
  (function (TilesetCadRenderManager) {
2130
2430
  var Manager = /** @class */ (function () {
@@ -2208,7 +2508,7 @@ var TilesetCadRenderManager;
2208
2508
  entityTypeId: null,
2209
2509
  menuItemId: this.item.id,
2210
2510
  priority: 0,
2211
- visuals: [feature]
2511
+ visual: feature
2212
2512
  };
2213
2513
  if (version == 1) {
2214
2514
  var pathStr = feature.getProperty("BrucePath");
@@ -2309,12 +2609,32 @@ var TilesetCadRenderManager;
2309
2609
  TilesetCadRenderManager.Manager = Manager;
2310
2610
  })(TilesetCadRenderManager || (TilesetCadRenderManager = {}));
2311
2611
 
2612
+ /**
2613
+ * Utility to keep track of enabled menu items within a Cesium viewer.
2614
+ */
2312
2615
  var MenuItemManager = /** @class */ (function () {
2313
2616
  function MenuItemManager(viewer, visualsRegister) {
2314
2617
  this.items = [];
2315
2618
  this.viewer = viewer;
2619
+ if (!visualsRegister) {
2620
+ visualsRegister = new VisualsRegister.Register(viewer);
2621
+ }
2316
2622
  this.visualsRegister = visualsRegister;
2317
2623
  }
2624
+ Object.defineProperty(MenuItemManager.prototype, "VisualsRegister", {
2625
+ get: function () {
2626
+ return this.visualsRegister;
2627
+ },
2628
+ enumerable: false,
2629
+ configurable: true
2630
+ });
2631
+ /**
2632
+ * Renders a given menu item and all ids children.
2633
+ * Will return the enabled item id.
2634
+ * @param api
2635
+ * @param item
2636
+ * @returns
2637
+ */
2318
2638
  MenuItemManager.prototype.RenderItem = function (api, item) {
2319
2639
  var _a;
2320
2640
  return __awaiter(this, void 0, void 0, function () {
@@ -2389,6 +2709,11 @@ var MenuItemManager = /** @class */ (function () {
2389
2709
  });
2390
2710
  });
2391
2711
  };
2712
+ /**
2713
+ * Disables a menu item by ids id.
2714
+ * This will disable all children as well.
2715
+ * @param id
2716
+ */
2392
2717
  MenuItemManager.prototype.RemoveItemById = function (id) {
2393
2718
  return __awaiter(this, void 0, void 0, function () {
2394
2719
  var item, _loop_1, this_1, i;
@@ -2441,6 +2766,9 @@ var MenuItemManager = /** @class */ (function () {
2441
2766
  return MenuItemManager;
2442
2767
  }());
2443
2768
 
2769
+ /**
2770
+ * Utility to help generate menu items for rendering various data.
2771
+ */
2444
2772
  var RenderHelper;
2445
2773
  (function (RenderHelper) {
2446
2774
  function RenderEntities(manager, api, entityIds) {
@@ -2570,197 +2898,5 @@ var RenderHelper;
2570
2898
  RenderHelper.RenderTileset = RenderTileset;
2571
2899
  })(RenderHelper || (RenderHelper = {}));
2572
2900
 
2573
- function removeEntity(viewer, visuals) {
2574
- unmarkEntity(visuals);
2575
- for (var i = 0; i < visuals.length; i++) {
2576
- var visual = visuals[i];
2577
- if (visual instanceof Entity) {
2578
- EntityRenderEngine.Remove(viewer, visual);
2579
- }
2580
- else if (visual instanceof Primitive) {
2581
- viewer.scene.primitives.remove(visual);
2582
- }
2583
- else if (visual instanceof Cesium3DTileFeature) {
2584
- visual.show = false;
2585
- }
2586
- }
2587
- }
2588
- function updateCEntityShow(viewer, visual, show) {
2589
- if (visual._parentEntity) {
2590
- updateCEntityShow(viewer, visual._parentEntity, show);
2591
- }
2592
- if (visual._siblingGraphics) {
2593
- for (var i = 0; i < visual._siblingGraphics.length; i++) {
2594
- var sibling = visual._siblingGraphics[i];
2595
- updateCEntityShow(viewer, sibling, show);
2596
- }
2597
- }
2598
- visual.show = show;
2599
- }
2600
- function updateEntityShow(viewer, visual, show) {
2601
- if (visual instanceof Entity) {
2602
- updateCEntityShow(viewer, visual, show);
2603
- }
2604
- else if (visual instanceof Primitive) {
2605
- visual.show = show;
2606
- }
2607
- else if (visual instanceof Cesium3DTileFeature) {
2608
- visual.show = show;
2609
- }
2610
- }
2611
- function updateEntity(viewer, entityRegos) {
2612
- var highestPriority = null;
2613
- for (var i = 0; i < entityRegos.length; i++) {
2614
- var rego = entityRegos[i];
2615
- if (highestPriority === null || rego.priority > highestPriority.priority) {
2616
- highestPriority = rego;
2617
- }
2618
- }
2619
- for (var i = 0; i < entityRegos.length; i++) {
2620
- var rego = entityRegos[i];
2621
- for (var j = 0; j < rego.visuals.length; j++) {
2622
- var visual = rego.visuals[j];
2623
- updateEntityShow(viewer, visual, rego === highestPriority);
2624
- }
2625
- }
2626
- }
2627
- function markEntity(register, rego, visuals) {
2628
- for (var i = 0; i < visuals.length; i++) {
2629
- var visual = visuals[i];
2630
- var vis = visual;
2631
- vis._register = register;
2632
- vis._rego = rego;
2633
- if (visual instanceof Entity) {
2634
- var visEnt = visual;
2635
- if (visEnt._parentEntity) {
2636
- markEntity(register, rego, [visEnt._parentEntity]);
2637
- }
2638
- if (visEnt._siblingGraphics) {
2639
- markEntity(register, rego, visEnt._siblingGraphics);
2640
- }
2641
- }
2642
- }
2643
- }
2644
- function unmarkEntity(visuals) {
2645
- for (var i = 0; i < visuals.length; i++) {
2646
- var visual = visuals[i];
2647
- var vis = visual;
2648
- vis._register = null;
2649
- if (visual instanceof Entity) {
2650
- var visEnt = visual;
2651
- if (visEnt._parentEntity) {
2652
- unmarkEntity([visEnt._parentEntity]);
2653
- }
2654
- if (visEnt._siblingGraphics) {
2655
- unmarkEntity(visEnt._siblingGraphics);
2656
- }
2657
- }
2658
- }
2659
- }
2660
- var VisualsRegister = /** @class */ (function () {
2661
- function VisualsRegister(viewer) {
2662
- this.id = ObjectUtils.UId();
2663
- this.rego = {};
2664
- this.viewer = viewer;
2665
- }
2666
- Object.defineProperty(VisualsRegister.prototype, "Id", {
2667
- get: function () {
2668
- return this.id;
2669
- },
2670
- enumerable: false,
2671
- configurable: true
2672
- });
2673
- VisualsRegister.prototype.Add = function (rego) {
2674
- var _a;
2675
- this.Remove(rego.entityId, rego.menuItemId, false);
2676
- var entityId = rego.entityId;
2677
- var entityRegos = (_a = this.rego[entityId]) !== null && _a !== void 0 ? _a : [];
2678
- entityRegos.push(rego);
2679
- this.rego[entityId] = entityRegos;
2680
- markEntity(this, rego, rego.visuals);
2681
- updateEntity(this.viewer, this.rego[entityId]);
2682
- };
2683
- VisualsRegister.prototype.GetVisuals = function (entityId, menuItemId) {
2684
- var _a;
2685
- var entityRegos = this.rego[entityId];
2686
- if (!entityRegos) {
2687
- return [];
2688
- }
2689
- var visuals = (_a = entityRegos.find(function (r) { return r.menuItemId === menuItemId; })) === null || _a === void 0 ? void 0 : _a.visuals;
2690
- return visuals !== null && visuals !== void 0 ? visuals : [];
2691
- };
2692
- VisualsRegister.prototype.RemoveByEntityId = function (id) {
2693
- var entityRegos = this.rego[id];
2694
- if (!entityRegos) {
2695
- return;
2696
- }
2697
- for (var i = 0; i < entityRegos.length; i++) {
2698
- var rego = entityRegos[i];
2699
- removeEntity(this.viewer, rego.visuals);
2700
- }
2701
- this.rego[id] = [];
2702
- delete this.rego[id];
2703
- };
2704
- VisualsRegister.prototype.RemoveByMenuItemId = function (id) {
2705
- for (var entityId in this.rego) {
2706
- var entityRegos = this.rego[entityId];
2707
- if (entityRegos) {
2708
- var rego = entityRegos.find(function (r) { return r.menuItemId === id; });
2709
- if (!rego) {
2710
- continue;
2711
- }
2712
- removeEntity(this.viewer, rego.visuals);
2713
- var doesInclude = this.rego[entityId].find(function (r) { return r.menuItemId === id; });
2714
- if (doesInclude) {
2715
- this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== id; });
2716
- updateEntity(this.viewer, this.rego[entityId]);
2717
- }
2718
- }
2719
- }
2720
- };
2721
- VisualsRegister.prototype.Remove = function (entityId, menuItemId, _doUpdate) {
2722
- if (_doUpdate === void 0) { _doUpdate = true; }
2723
- var entityRegos = this.rego[entityId];
2724
- if (!entityRegos) {
2725
- return;
2726
- }
2727
- var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
2728
- if (!rego) {
2729
- return;
2730
- }
2731
- for (var i = 0; i < rego.visuals.length; i++) {
2732
- var visual = rego.visuals[i];
2733
- if (visual instanceof Entity) {
2734
- this.viewer.entities.remove(visual);
2735
- }
2736
- else if (visual instanceof Primitive) {
2737
- this.viewer.scene.primitives.remove(visual);
2738
- }
2739
- else if (visual instanceof Cesium3DTileFeature) {
2740
- visual.show = false;
2741
- }
2742
- }
2743
- this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
2744
- if (_doUpdate) {
2745
- updateEntity(this.viewer, this.rego[entityId]);
2746
- }
2747
- };
2748
- VisualsRegister.prototype.GetFromCursor = function (cursor) {
2749
- var _a;
2750
- var found = [];
2751
- var picked = this.viewer.scene.drillPick(new Cartesian2(cursor.x, cursor.y), 5);
2752
- for (var i = 0; i < picked.length; i++) {
2753
- var object = picked[i];
2754
- var entity = (object && object.id && object.id instanceof Entity ? object.id : object);
2755
- var visual = entity;
2756
- if (((_a = visual === null || visual === void 0 ? void 0 : visual._register) === null || _a === void 0 ? void 0 : _a.Id) == this.id) {
2757
- found.push(visual._rego);
2758
- }
2759
- }
2760
- return found;
2761
- };
2762
- return VisualsRegister;
2763
- }());
2764
-
2765
2901
  export { CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, RenderHelper, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager };
2766
2902
  //# sourceMappingURL=bruce-cesium.es5.js.map