bruce-cesium 0.6.3 → 0.6.5

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 (30) hide show
  1. package/dist/bruce-cesium.es5.js +160 -54
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +159 -53
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/rendering/entity-render-engine.js +24 -13
  6. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  7. package/dist/lib/rendering/menu-item-manager.js +9 -0
  8. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  9. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +13 -5
  10. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  11. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +9 -3
  12. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  13. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +9 -3
  14. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  15. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +9 -3
  16. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  17. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +15 -5
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  19. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +8 -3
  20. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  21. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +6 -1
  22. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -1
  23. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +8 -3
  24. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
  25. package/dist/lib/rendering/tileset-render-engine.js +46 -11
  26. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  27. package/dist/lib/rendering/view-render-engine.js.map +1 -1
  28. package/dist/lib/utils/entity-utils.js +3 -3
  29. package/dist/lib/utils/entity-utils.js.map +1 -1
  30. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, ProgramKey, Camera } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, JulianDate, createOsmBuildings, Cesium3DTileStyle } from 'cesium';
2
+ import { Cartesian2, Cartographic, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, Color, HeightReference, Cartesian3, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, JulianDate, createOsmBuildings, Cesium3DTileStyle } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -563,14 +563,14 @@ var EntityUtils;
563
563
  var points = Geometry.ParsePoints(pointStr);
564
564
  var point = points.length > 0 ? points[0] : null;
565
565
  if (point && Carto.ValidateCarto(point)) {
566
- return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
566
+ return Cartesian3.fromDegrees(Number(point.longitude), Number(point.latitude), Number(point.altitude));
567
567
  }
568
568
  }
569
569
  var lineStr = entity.geometry.LineString;
570
570
  if (lineStr && typeof lineStr == "string") {
571
571
  var points = Geometry.ParsePoints(lineStr);
572
572
  if (points.length > 0) {
573
- var posses = points.map(function (x) { return Cartesian3.fromDegrees(x.longitude, x.latitude, x.altitude); });
573
+ var posses = points.map(function (x) { return Cartesian3.fromDegrees(Number(x.longitude), Number(x.latitude), Number(x.altitude)); });
574
574
  var length_1 = MeasureUtils.MeasurePolyline(posses);
575
575
  if (length_1 > 0) {
576
576
  var point = DrawingUtils.PointAcrossPolyline(viewer, posses, length_1 / 2);
@@ -590,7 +590,7 @@ var EntityUtils;
590
590
  var points = Geometry.ParsePoints(boundary.LinearRing);
591
591
  var point = Carto.GetCenter(points);
592
592
  if (point && Carto.ValidateCarto(point)) {
593
- return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
593
+ return Cartesian3.fromDegrees(Number(point.longitude), Number(point.latitude), Number(point.altitude));
594
594
  }
595
595
  }
596
596
  }
@@ -845,7 +845,7 @@ function getPolygonExtrusion(entity, tags, ring, posses, heightRef, pStyle) {
845
845
  points.forEach(function (point) {
846
846
  point.height = alt_1;
847
847
  });
848
- posses = points.map(function (x) { return Cartesian3.fromRadians(x.longitude, x.latitude, x.height); });
848
+ posses = points.map(function (x) { return Cartesian3.fromRadians(Number(x.longitude), Number(x.latitude), Number(x.height)); });
849
849
  }
850
850
  }
851
851
  // Step 2. Try get using geometry data.
@@ -871,6 +871,9 @@ function getPolygonExtrusion(entity, tags, ring, posses, heightRef, pStyle) {
871
871
  }
872
872
  }
873
873
  data.posses = posses;
874
+ if (data.value != undefined) {
875
+ data.value = Number(data.value);
876
+ }
874
877
  return data;
875
878
  }
876
879
  function getHeightRef(style) {
@@ -890,7 +893,7 @@ function getZIndex(style, entity, tags) {
890
893
  if (zIndex == null) {
891
894
  zIndex = 0;
892
895
  }
893
- return zIndex;
896
+ return Number(zIndex);
894
897
  }
895
898
  function getStyle(api, entity, styleId) {
896
899
  return __awaiter(this, void 0, void 0, function () {
@@ -1056,6 +1059,9 @@ var EntityRenderEngine;
1056
1059
  }
1057
1060
  EntityRenderEngine.Render = Render;
1058
1061
  function Remove(viewer, entity) {
1062
+ if (viewer.isDestroyed()) {
1063
+ return;
1064
+ }
1059
1065
  if (entity._parentEntity) {
1060
1066
  Remove(viewer, entity._parentEntity);
1061
1067
  }
@@ -1087,7 +1093,7 @@ var EntityRenderEngine;
1087
1093
  iconUrl = ClientFile.GetUrl(params.api, style.iconId);
1088
1094
  }
1089
1095
  if (iconUrl) {
1090
- var iconScale = +Calculator.GetValue(style.iconScale, entity, params.tags);
1096
+ var iconScale = Number(Calculator.GetValue(style.iconScale, entity, params.tags));
1091
1097
  if (!iconScale && iconScale != 0) {
1092
1098
  iconScale = 1;
1093
1099
  }
@@ -1097,7 +1103,8 @@ var EntityRenderEngine;
1097
1103
  horizontalOrigin: HorizontalOrigin.CENTER,
1098
1104
  verticalOrigin: VerticalOrigin.BOTTOM,
1099
1105
  image: iconUrl,
1100
- heightReference: getHeightRef(style)
1106
+ heightReference: getHeightRef(style),
1107
+ scale: iconScale
1101
1108
  },
1102
1109
  position: EntityUtils.GetPos(params.viewer, entity),
1103
1110
  show: false
@@ -1113,6 +1120,7 @@ var EntityRenderEngine;
1113
1120
  if (size == null) {
1114
1121
  size = 30;
1115
1122
  }
1123
+ size = Number(size);
1116
1124
  if (size <= 0) {
1117
1125
  return null;
1118
1126
  }
@@ -1199,7 +1207,7 @@ var EntityRenderEngine;
1199
1207
  if (!isValid) {
1200
1208
  return null;
1201
1209
  }
1202
- var posses = points.map(function (x) { return Cartesian3.fromDegrees(x.longitude, x.latitude, x.altitude); });
1210
+ var posses = points.map(function (x) { return Cartesian3.fromDegrees(Number(x.longitude), Number(x.latitude), Number(x.altitude)); });
1203
1211
  // Making sure no 0 length lines coming through.
1204
1212
  // Ideally we would measure the full line but I fear that's too expensive.
1205
1213
  if (posses.length == 2 || posses.length == 3) {
@@ -1222,6 +1230,7 @@ var EntityRenderEngine;
1222
1230
  if (width == null) {
1223
1231
  width = 4;
1224
1232
  }
1233
+ width = Number(width);
1225
1234
  if (width <= 0) {
1226
1235
  return null;
1227
1236
  }
@@ -1309,19 +1318,20 @@ var EntityRenderEngine;
1309
1318
  if (width == null) {
1310
1319
  width = 4;
1311
1320
  }
1321
+ width = Number(width);
1312
1322
  if (width <= 0) {
1313
1323
  return null;
1314
1324
  }
1315
1325
  var heightRef = getHeightRef(style);
1316
1326
  var outerRing = pRings.find(function (x) { return x.Facing == Geometry.EPolygonRingType.Boundaries; });
1317
1327
  var points = Geometry.ParsePoints(outerRing === null || outerRing === void 0 ? void 0 : outerRing.LinearRing);
1318
- var posses = points.map(function (x) { return Cartesian3.fromDegrees(x.longitude, x.latitude, x.altitude); });
1328
+ var posses = points.map(function (x) { return Cartesian3.fromDegrees(Number(x.longitude), Number(x.latitude), Number(x.altitude)); });
1319
1329
  var extrusion = getPolygonExtrusion(entity, params.tags, outerRing, posses, heightRef, style);
1320
1330
  posses = extrusion.posses;
1321
1331
  var holeRings = pRings.filter(function (x) { return x.Facing == Geometry.EPolygonRingType.Hole; });
1322
1332
  var holePosses = holeRings.map(function (x) {
1323
1333
  var points = Geometry.ParsePoints(x.LinearRing);
1324
- return points.map(function (x) { return Cartesian3.fromDegrees(x.longitude, x.latitude, x.altitude); });
1334
+ return points.map(function (x) { return Cartesian3.fromDegrees(Number(x.longitude), Number(x.latitude), Number(x.altitude)); });
1325
1335
  });
1326
1336
  var zIndex = getZIndex(style, entity, params.tags);
1327
1337
  var cEntity = new Entity({
@@ -1415,16 +1425,17 @@ var EntityRenderEngine;
1415
1425
  function Render(params) {
1416
1426
  var entity = params.entity;
1417
1427
  var transform = entity === null || entity === void 0 ? void 0 : entity.transform;
1418
- var heading = transform ? +transform.heading : 0;
1428
+ var heading = transform ? Number(transform.heading) : 0;
1419
1429
  heading = (heading + 90) % 360;
1420
- var pitch = transform ? +transform.pitch : 0;
1421
- var roll = transform ? +transform.roll : 0;
1422
- var scale = transform ? +transform.scale : 1;
1430
+ var pitch = transform ? Number(transform.pitch) : 0;
1431
+ var roll = transform ? Number(transform.roll) : 0;
1432
+ var scale = transform ? Number(transform.scale) : 1;
1423
1433
  if (scale <= 0) {
1424
1434
  scale = 1;
1425
1435
  }
1426
1436
  var style = params.style;
1427
- var styleScale = (style === null || style === void 0 ? void 0 : style.scale) ? +Calculator.GetValue(style === null || style === void 0 ? void 0 : style.scale, entity, params.tags) : null;
1437
+ var styleScale = (style === null || style === void 0 ? void 0 : style.scale) ? Calculator.GetValue(style === null || style === void 0 ? void 0 : style.scale, entity, params.tags) : null;
1438
+ styleScale = Number(styleScale);
1428
1439
  if (!styleScale) {
1429
1440
  styleScale = 1;
1430
1441
  }
@@ -1434,7 +1445,7 @@ var EntityRenderEngine;
1434
1445
  var pos = EntityUtils.GetPos(params.viewer, entity);
1435
1446
  if (heightRef == HeightReference.CLAMP_TO_GROUND) {
1436
1447
  var carto = Cartographic.fromCartesian(pos);
1437
- pos = Cartesian3.fromRadians(carto.longitude, carto.latitude, 0);
1448
+ pos = Cartesian3.fromRadians(Number(carto.longitude), Number(carto.latitude), 0);
1438
1449
  heightRef = HeightReference.RELATIVE_TO_GROUND;
1439
1450
  }
1440
1451
  var orientation = Transforms.headingPitchRollQuaternion(pos, hpr);
@@ -1735,11 +1746,12 @@ var EntitiesRenderManager;
1735
1746
  Manager.prototype.onGetterUpdate = function (entities) {
1736
1747
  var _a;
1737
1748
  return __awaiter(this, void 0, void 0, function () {
1738
- var cEntities, i, entity, id, cEntity, visual;
1749
+ var cEntities, i, entity, id, cEntity, visual, e_2;
1739
1750
  return __generator(this, function (_b) {
1740
1751
  switch (_b.label) {
1741
1752
  case 0:
1742
- if (this.disposed) {
1753
+ _b.trys.push([0, 2, , 3]);
1754
+ if (this.disposed || this.viewer.isDestroyed()) {
1743
1755
  return [2 /*return*/];
1744
1756
  }
1745
1757
  return [4 /*yield*/, EntityRenderEngine.Render({
@@ -1773,7 +1785,12 @@ var EntitiesRenderManager;
1773
1785
  this.visualsManager.Remove(id, this.item.id);
1774
1786
  }
1775
1787
  }
1776
- return [2 /*return*/];
1788
+ return [3 /*break*/, 3];
1789
+ case 2:
1790
+ e_2 = _b.sent();
1791
+ console.error(e_2);
1792
+ return [3 /*break*/, 3];
1793
+ case 3: return [2 /*return*/];
1777
1794
  }
1778
1795
  });
1779
1796
  });
@@ -1838,11 +1855,12 @@ var EntitiesLoadedRenderManager;
1838
1855
  Manager.prototype.onGetterUpdate = function (entities) {
1839
1856
  var _a;
1840
1857
  return __awaiter(this, void 0, void 0, function () {
1841
- var cEntities, i, entity, id, cEntity, visual;
1858
+ var cEntities, i, entity, id, cEntity, visual, e_1;
1842
1859
  return __generator(this, function (_b) {
1843
1860
  switch (_b.label) {
1844
1861
  case 0:
1845
- if (this.disposed) {
1862
+ _b.trys.push([0, 2, , 3]);
1863
+ if (this.disposed || this.viewer.isDestroyed()) {
1846
1864
  return [2 /*return*/];
1847
1865
  }
1848
1866
  return [4 /*yield*/, EntityRenderEngine.Render({
@@ -1876,7 +1894,12 @@ var EntitiesLoadedRenderManager;
1876
1894
  this.visualsManager.Remove(id, this.item.id);
1877
1895
  }
1878
1896
  }
1879
- return [2 /*return*/];
1897
+ return [3 /*break*/, 3];
1898
+ case 2:
1899
+ e_1 = _b.sent();
1900
+ console.error(e_1);
1901
+ return [3 /*break*/, 3];
1902
+ case 3: return [2 /*return*/];
1880
1903
  }
1881
1904
  });
1882
1905
  });
@@ -2416,16 +2439,19 @@ var EntitiesIdsRenderManager;
2416
2439
  Manager.prototype.onGetterUpdate = function (entityIds) {
2417
2440
  var _a;
2418
2441
  return __awaiter(this, void 0, void 0, function () {
2419
- var api, entities, cEntities, i, entity, id, cEntity, visual;
2442
+ var api, entities, cEntities, i, entity, id, cEntity, visual, e_1;
2420
2443
  return __generator(this, function (_b) {
2421
2444
  switch (_b.label) {
2422
2445
  case 0:
2423
- if (this.disposed) {
2446
+ if (this.disposed || this.viewer.isDestroyed()) {
2424
2447
  return [2 /*return*/];
2425
2448
  }
2449
+ _b.label = 1;
2450
+ case 1:
2451
+ _b.trys.push([1, 4, , 5]);
2426
2452
  api = this.apiGetter.getApi();
2427
2453
  return [4 /*yield*/, Entity$1.GetListByIds(api, entityIds)];
2428
- case 1:
2454
+ case 2:
2429
2455
  entities = _b.sent();
2430
2456
  return [4 /*yield*/, EntityRenderEngine.Render({
2431
2457
  viewer: this.viewer,
@@ -2435,7 +2461,7 @@ var EntitiesIdsRenderManager;
2435
2461
  visualRegister: this.visualsManager,
2436
2462
  zoomControl: this.item.CameraZoomSettings
2437
2463
  })];
2438
- case 2:
2464
+ case 3:
2439
2465
  cEntities = _b.sent();
2440
2466
  for (i = 0; i < entities.length; i++) {
2441
2467
  entity = entities[i];
@@ -2458,7 +2484,12 @@ var EntitiesIdsRenderManager;
2458
2484
  this.visualsManager.Remove(id, this.item.id);
2459
2485
  }
2460
2486
  }
2461
- return [2 /*return*/];
2487
+ return [3 /*break*/, 5];
2488
+ case 4:
2489
+ e_1 = _b.sent();
2490
+ console.error(e_1);
2491
+ return [3 /*break*/, 5];
2492
+ case 5: return [2 /*return*/];
2462
2493
  }
2463
2494
  });
2464
2495
  });
@@ -2520,11 +2551,12 @@ var EntityRenderManager;
2520
2551
  Manager.prototype.onGetterUpdate = function (id) {
2521
2552
  var _a;
2522
2553
  return __awaiter(this, void 0, void 0, function () {
2523
- var api, entity, cEntities, cEntity, visual;
2554
+ var api, entity, cEntities, cEntity, visual, e_1;
2524
2555
  return __generator(this, function (_b) {
2525
2556
  switch (_b.label) {
2526
2557
  case 0:
2527
- if (this.disposed) {
2558
+ _b.trys.push([0, 3, , 4]);
2559
+ if (this.disposed || this.viewer.isDestroyed()) {
2528
2560
  return [2 /*return*/];
2529
2561
  }
2530
2562
  api = this.apiGetter.getApi();
@@ -2557,7 +2589,12 @@ var EntityRenderManager;
2557
2589
  else {
2558
2590
  this.visualsManager.Remove(id, this.item.id);
2559
2591
  }
2560
- return [2 /*return*/];
2592
+ return [3 /*break*/, 4];
2593
+ case 3:
2594
+ e_1 = _b.sent();
2595
+ console.error(e_1);
2596
+ return [3 /*break*/, 4];
2597
+ case 4: return [2 /*return*/];
2561
2598
  }
2562
2599
  });
2563
2600
  });
@@ -2570,6 +2607,24 @@ var EntityRenderManager;
2570
2607
  function colorToCColor$1(color) {
2571
2608
  return new Color(color.red ? color.red / 255 : 0, color.green ? color.green / 255 : 0, color.blue ? color.blue / 255 : 0, color.alpha);
2572
2609
  }
2610
+ /**
2611
+ * Returns if a given tileset is alive and in the scene.
2612
+ * @param viewer
2613
+ * @param cTileset
2614
+ * @returns
2615
+ */
2616
+ function isAlive(viewer, cTileset) {
2617
+ if (viewer.isDestroyed()) {
2618
+ return false;
2619
+ }
2620
+ if (!(viewer === null || viewer === void 0 ? void 0 : viewer.scene)) {
2621
+ return false;
2622
+ }
2623
+ if (cTileset.isDestroyed()) {
2624
+ return false;
2625
+ }
2626
+ return viewer.scene.primitives.contains(cTileset);
2627
+ }
2573
2628
  var TilesetRenderEngine;
2574
2629
  (function (TilesetRenderEngine) {
2575
2630
  function ApplyPosition(cTileset, tileset, coords) {
@@ -2597,16 +2652,17 @@ var TilesetRenderEngine;
2597
2652
  return;
2598
2653
  }
2599
2654
  transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
2655
+ transform.scale = Number(transform.scale);
2600
2656
  if (transform.scale <= 0) {
2601
2657
  transform.scale = 0.000001;
2602
2658
  }
2603
- var pos = Cartesian3.fromDegrees(location.longitude, location.latitude, location.altitude);
2604
- var hpr = HeadingPitchRoll.fromDegrees(transform.heading, transform.pitch, transform.roll, new HeadingPitchRoll());
2659
+ var pos = Cartesian3.fromDegrees(Number(location.longitude), Number(location.latitude), Number(location.altitude));
2660
+ var hpr = HeadingPitchRoll.fromDegrees(Number(transform.heading), Number(transform.pitch), Number(transform.roll), new HeadingPitchRoll());
2605
2661
  var root = cTileset.root;
2606
2662
  root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
2607
2663
  var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
2608
2664
  root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
2609
- root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(transform.x, transform.y, transform.z), root.transform);
2665
+ root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(Number(transform.x), Number(transform.y), Number(transform.z)), root.transform);
2610
2666
  // Force matrix to update
2611
2667
  root.updateTransform();
2612
2668
  }
@@ -2616,22 +2672,22 @@ var TilesetRenderEngine;
2616
2672
  var settings = tileset.settings;
2617
2673
  var maxScreenSpaceError = settings.maximumScreenSpaceError;
2618
2674
  if (maxScreenSpaceError || maxScreenSpaceError == 0) {
2619
- cTileset.maximumScreenSpaceError = maxScreenSpaceError;
2675
+ cTileset.maximumScreenSpaceError = Number(maxScreenSpaceError);
2620
2676
  }
2621
2677
  }
2622
2678
  else if (tileset.type == Tileset.EType.PointCloud) {
2623
2679
  var settings = tileset.settings;
2624
2680
  var maxScreenSpaceError = settings.maximumScreenSpaceError;
2625
2681
  if (maxScreenSpaceError || maxScreenSpaceError == 0) {
2626
- cTileset.maximumScreenSpaceError = maxScreenSpaceError;
2682
+ cTileset.maximumScreenSpaceError = Number(maxScreenSpaceError);
2627
2683
  }
2628
2684
  var attenuation = settings.attenuation;
2629
2685
  if (attenuation != null) {
2630
- cTileset.pointCloudShading.attenuation = attenuation;
2686
+ cTileset.pointCloudShading.attenuation = Boolean(attenuation);
2631
2687
  }
2632
2688
  var attenuationMax = settings.attenuationMax;
2633
2689
  if (attenuationMax || attenuationMax == 0) {
2634
- cTileset.pointCloudShading.maximumAttenuation = attenuationMax;
2690
+ cTileset.pointCloudShading.maximumAttenuation = Number(attenuationMax);
2635
2691
  }
2636
2692
  }
2637
2693
  else {
@@ -2647,8 +2703,16 @@ var TilesetRenderEngine;
2647
2703
  });
2648
2704
  params.viewer.scene.primitives.add(cTileset_1);
2649
2705
  cTileset_1.readyPromise.then(function () {
2650
- ApplySettings(cTileset_1, params.tileset);
2651
- ApplyPosition(cTileset_1, params.tileset, params.coords);
2706
+ try {
2707
+ if (!isAlive(params.viewer, cTileset_1)) {
2708
+ return;
2709
+ }
2710
+ ApplySettings(cTileset_1, params.tileset);
2711
+ ApplyPosition(cTileset_1, params.tileset, params.coords);
2712
+ }
2713
+ catch (e) {
2714
+ console.error(e);
2715
+ }
2652
2716
  });
2653
2717
  return cTileset_1;
2654
2718
  }
@@ -2665,8 +2729,16 @@ var TilesetRenderEngine;
2665
2729
  });
2666
2730
  params.viewer.scene.primitives.add(cTileset_2);
2667
2731
  cTileset_2.readyPromise.then(function () {
2668
- ApplySettings(cTileset_2, params.tileset);
2669
- ApplyPosition(cTileset_2, params.tileset, null);
2732
+ try {
2733
+ if (!isAlive(params.viewer, cTileset_2)) {
2734
+ return;
2735
+ }
2736
+ ApplySettings(cTileset_2, params.tileset);
2737
+ ApplyPosition(cTileset_2, params.tileset, null);
2738
+ }
2739
+ catch (e) {
2740
+ console.error(e);
2741
+ }
2670
2742
  });
2671
2743
  return cTileset_2;
2672
2744
  }
@@ -3104,14 +3176,24 @@ var TilesetCadRenderManager;
3104
3176
  coords: coords
3105
3177
  });
3106
3178
  cTileset.readyPromise.then(function () {
3107
- if (_this.disposed) {
3108
- return;
3179
+ try {
3180
+ if (_this.disposed || cTileset.isDestroyed()) {
3181
+ return;
3182
+ }
3183
+ _this.onCTilesetLoad();
3184
+ _this.styler = new TilesetRenderEngine.CadStyler(api, _this.cTileset, _this.item.styleId, _this.item.StyleMapping);
3185
+ }
3186
+ catch (e) {
3187
+ console.error(e);
3109
3188
  }
3110
- _this.onCTilesetLoad();
3111
- _this.styler = new TilesetRenderEngine.CadStyler(api, _this.cTileset, _this.item.styleId, _this.item.StyleMapping);
3112
3189
  });
3113
3190
  cTileset.tileLoad.addEventListener(function (tile) {
3114
- _this.mapCTile(tile);
3191
+ try {
3192
+ _this.mapCTile(tile);
3193
+ }
3194
+ catch (e) {
3195
+ console.error(e);
3196
+ }
3115
3197
  });
3116
3198
  return [2 /*return*/];
3117
3199
  }
@@ -3345,7 +3427,12 @@ var TilesetOsmRenderManager;
3345
3427
  }
3346
3428
  this.viewer.scene.primitives.add(this.cTileset);
3347
3429
  this.cTileset.tileLoad.addEventListener(function (tile) {
3348
- _this.mapCTile(tile);
3430
+ try {
3431
+ _this.mapCTile(tile);
3432
+ }
3433
+ catch (e) {
3434
+ console.error(e);
3435
+ }
3349
3436
  });
3350
3437
  this.queueCheckInterval = setInterval(function () {
3351
3438
  if (_this.featureQueue.length > 0) {
@@ -3604,10 +3691,15 @@ var TilesetEntitiesRenderManager;
3604
3691
  viewer: this.viewer
3605
3692
  });
3606
3693
  cTileset.readyPromise.then(function () {
3607
- if (_this.disposed) {
3608
- return;
3694
+ try {
3695
+ if (_this.disposed || _this.viewer.isDestroyed()) {
3696
+ return;
3697
+ }
3698
+ _this.onCTilesetLoad();
3699
+ }
3700
+ catch (e) {
3701
+ console.error(e);
3609
3702
  }
3610
- _this.onCTilesetLoad();
3611
3703
  });
3612
3704
  cTileset.tileLoad.addEventListener(function (tile) {
3613
3705
  _this.mapCTile(tile);
@@ -3703,10 +3795,15 @@ var TilesetPointcloudRenderManager;
3703
3795
  coords: null
3704
3796
  });
3705
3797
  cTileset.readyPromise.then(function () {
3706
- if (_this.disposed) {
3707
- return;
3798
+ try {
3799
+ if (_this.disposed || _this.viewer.isDestroyed()) {
3800
+ return;
3801
+ }
3802
+ _this.onCTilesetLoad();
3803
+ }
3804
+ catch (e) {
3805
+ console.error(e);
3708
3806
  }
3709
- _this.onCTilesetLoad();
3710
3807
  });
3711
3808
  return [2 /*return*/];
3712
3809
  }
@@ -3788,6 +3885,9 @@ var MenuItemManager;
3788
3885
  return __generator(this, function (_c) {
3789
3886
  switch (_c.label) {
3790
3887
  case 0:
3888
+ if (this.viewer.isDestroyed()) {
3889
+ return [2 /*return*/, null];
3890
+ }
3791
3891
  rItem = this.items.find(function (x) { return x.id == params.item.id; });
3792
3892
  if (!!rItem) return [3 /*break*/, 2];
3793
3893
  rItem = {
@@ -3798,6 +3898,9 @@ var MenuItemManager;
3798
3898
  type: params.item.Type
3799
3899
  };
3800
3900
  this.items.push(rItem);
3901
+ if (!params.item.Type) {
3902
+ params.item.Type = MenuItem.EType.None;
3903
+ }
3801
3904
  switch (params.item.Type) {
3802
3905
  case MenuItem.EType.Entities:
3803
3906
  rItem.renderManager = new EntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, this.sharedMonitor, params.item, this.sharedGetters);
@@ -3872,6 +3975,9 @@ var MenuItemManager;
3872
3975
  return __generator(this, function (_c) {
3873
3976
  switch (_c.label) {
3874
3977
  case 0:
3978
+ if (this.viewer.isDestroyed()) {
3979
+ return [2 /*return*/];
3980
+ }
3875
3981
  item = this.items.find(function (x) { return x.id === id; });
3876
3982
  if (!item) return [3 /*break*/, 5];
3877
3983
  if (!recursive) return [3 /*break*/, 4];