bruce-cesium 3.1.8 → 3.2.0

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 (39) hide show
  1. package/dist/bruce-cesium.es5.js +582 -314
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +581 -313
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/rendering/entity-render-engine.js +81 -47
  7. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  8. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +9 -9
  9. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
  10. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +1 -1
  11. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  12. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +2 -2
  13. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  14. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +1 -0
  15. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +65 -25
  17. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -1
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +1 -1
  19. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
  20. package/dist/lib/rendering/tile-render-engine.js +325 -170
  21. package/dist/lib/rendering/tile-render-engine.js.map +1 -1
  22. package/dist/lib/rendering/tileset-render-engine.js +29 -4
  23. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  24. package/dist/lib/rendering/visual-register-culler.js +3 -4
  25. package/dist/lib/rendering/visual-register-culler.js.map +1 -1
  26. package/dist/lib/rendering/visuals-register.js +8 -9
  27. package/dist/lib/rendering/visuals-register.js.map +1 -1
  28. package/dist/lib/utils/drawing-utils.js +16 -18
  29. package/dist/lib/utils/drawing-utils.js.map +1 -1
  30. package/dist/lib/utils/entity-utils.js +9 -10
  31. package/dist/lib/utils/entity-utils.js.map +1 -1
  32. package/dist/lib/widgets/widget-branding.js +30 -11
  33. package/dist/lib/widgets/widget-branding.js.map +1 -1
  34. package/dist/lib/widgets/widget-embedded-info-view.js +1 -1
  35. package/dist/lib/widgets/widget-embedded-info-view.js.map +1 -1
  36. package/dist/types/bruce-cesium.d.ts +1 -1
  37. package/dist/types/rendering/tileset-render-engine.d.ts +7 -0
  38. package/dist/types/widgets/widget-branding.d.ts +1 -0
  39. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { Cartes, ProjectViewTile, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, DelayQueue, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, BruceEvent, EntityCoords, Api, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, AbstractApi, ProjectViewBookmark, EntityAttachment, EntityAttachmentType, EntityAttribute, ProjectView, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, JulianDate, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, SceneMode, DistanceDisplayCondition, NearFarScalar, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Model, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, Cesium3DTileStyle, createOsmBuildings, KmlDataSource, SceneTransforms, EllipsoidTerrainProvider, CesiumInspector, OrthographicFrustum, defined, EasingFunction, EllipsoidGeodesic, sampleTerrainMostDetailed, Cesium3DTileset, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Matrix3, IonResource, Ion, PolygonPipeline, ColorMaterialProperty, BoundingSphere, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, Intersect } from 'cesium';
3
+ import { Cartographic, JulianDate, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, DistanceDisplayCondition, NearFarScalar, Model, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, SceneMode, Cesium3DTileColorBlendMode, HeadingPitchRange, Cesium3DTileStyle, KmlDataSource, SceneTransforms, EllipsoidTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, Cesium3DTileset, Matrix4, Matrix3, IonResource, Ion, EllipsoidGeodesic, sampleTerrainMostDetailed, defined, CesiumInspector, OrthographicFrustum, EasingFunction, PolygonPipeline, ColorMaterialProperty, BoundingSphere, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, Intersect } from 'cesium';
4
4
 
5
5
  /*! *****************************************************************************
6
6
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -246,18 +246,17 @@ var DrawingUtils;
246
246
  * @returns
247
247
  */
248
248
  function GetTerrainHeight(params) {
249
- var _a;
250
249
  return __awaiter(this, void 0, void 0, function () {
251
- var pos3d, viewer, terrainProviderReady, sample, height, e_1;
252
- return __generator(this, function (_b) {
253
- switch (_b.label) {
250
+ var pos3d, viewer, sample, height, e_1;
251
+ return __generator(this, function (_a) {
252
+ switch (_a.label) {
254
253
  case 0:
255
254
  pos3d = params.pos3d, viewer = params.viewer;
256
- _b.label = 1;
255
+ _a.label = 1;
257
256
  case 1:
258
- _b.trys.push([1, 3, , 4]);
259
- terrainProviderReady = Boolean((_a = viewer === null || viewer === void 0 ? void 0 : viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a.ready);
260
- if (!terrainProviderReady) {
257
+ _a.trys.push([1, 3, , 4]);
258
+ // If the terrain provider is not ready let's not ping it.
259
+ if (!viewer.terrainProvider || viewer.terrainProvider["ready"] == false) {
261
260
  return [2 /*return*/, {
262
261
  height: 0,
263
262
  error: "Terrain provider not ready."
@@ -270,7 +269,7 @@ var DrawingUtils;
270
269
  }
271
270
  return [4 /*yield*/, sampleTerrainMostDetailed(viewer.scene.terrainProvider, [Cartographic.fromCartesian(pos3d)])];
272
271
  case 2:
273
- sample = _b.sent();
272
+ sample = _a.sent();
274
273
  height = (sample === null || sample === void 0 ? void 0 : sample.length) ? sample[0].height : null;
275
274
  if (isNaN(height)) {
276
275
  return [2 /*return*/, {
@@ -282,7 +281,7 @@ var DrawingUtils;
282
281
  height: height
283
282
  }];
284
283
  case 3:
285
- e_1 = _b.sent();
284
+ e_1 = _a.sent();
286
285
  return [2 /*return*/, {
287
286
  height: 0,
288
287
  error: e_1
@@ -453,15 +452,14 @@ var DrawingUtils;
453
452
  * @param minimumHeight height relative to ground
454
453
  */
455
454
  function RaisePos3d(viewer, pos3d, minimumHeight) {
456
- var _a;
457
455
  if (minimumHeight === void 0) { minimumHeight = 0; }
458
456
  return __awaiter(this, void 0, void 0, function () {
459
- var terrainProviderReady, carto, terrainCarto, sample, terrainHeight;
460
- return __generator(this, function (_b) {
461
- switch (_b.label) {
457
+ var carto, terrainCarto, sample, terrainHeight;
458
+ return __generator(this, function (_a) {
459
+ switch (_a.label) {
462
460
  case 0:
463
- terrainProviderReady = Boolean((_a = viewer === null || viewer === void 0 ? void 0 : viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a.ready);
464
- if (!terrainProviderReady) {
461
+ // If the terrain provider is not ready let's not ping it.
462
+ if (!viewer.terrainProvider || viewer.terrainProvider["ready"] == false) {
465
463
  return [2 /*return*/, pos3d];
466
464
  }
467
465
  carto = Cartographic.fromCartesian(pos3d);
@@ -472,12 +470,12 @@ var DrawingUtils;
472
470
  return [3 /*break*/, 3];
473
471
  case 1: return [4 /*yield*/, sampleTerrainMostDetailed(viewer.scene.terrainProvider, [terrainCarto])];
474
472
  case 2:
475
- sample = _b.sent();
473
+ sample = _a.sent();
476
474
  terrainHeight = (sample === null || sample === void 0 ? void 0 : sample.length) ? sample[0].height : null;
477
475
  if (terrainHeight != null) {
478
476
  carto.height = Math.max(carto.height, terrainHeight + minimumHeight);
479
477
  }
480
- _b.label = 3;
478
+ _a.label = 3;
481
479
  case 3: return [2 /*return*/, Cartesian3.fromRadians(carto.longitude, carto.latitude, carto.height)];
482
480
  }
483
481
  });
@@ -864,12 +862,12 @@ var EntityUtils;
864
862
  * @param params
865
863
  */
866
864
  function GetLocation(params) {
867
- var _a, _b;
865
+ var _a;
868
866
  return __awaiter(this, void 0, void 0, function () {
869
- var api, viewer, samples, visualRegister, minimumAlt, paddingAlt, MAX_DISTANCE_BETWEEN_SAMPLES, MAX_TERRAIN_SAMPLES, terrainSamples, MAX_API_CALLS, apiCalls, MAX_VALID_SAMPLES, validSamples, MIN_RECT_DIAGONAL_LENGTH, terrainProviderReady, data, spheres, processPosHeight, ensureHeightRefs, getEntityPositions, allPosses, i, sample, samplePosses, valid, j, samplePos, k, allPos, distance, rect, factor, marginX, marginY, diagonalLen, terrData, posCarto, height, MIN_POSSES_LEN, allPointSphere, rectSphere, combinedSphere;
867
+ var api, viewer, samples, visualRegister, minimumAlt, paddingAlt, MAX_DISTANCE_BETWEEN_SAMPLES, MAX_TERRAIN_SAMPLES, terrainSamples, MAX_API_CALLS, apiCalls, MAX_VALID_SAMPLES, validSamples, MIN_RECT_DIAGONAL_LENGTH, data, spheres, processPosHeight, ensureHeightRefs, getEntityPositions, allPosses, i, sample, samplePosses, valid, j, samplePos, k, allPos, distance, rect, factor, marginX, marginY, diagonalLen, terrData, posCarto, height, MIN_POSSES_LEN, allPointSphere, rectSphere, combinedSphere;
870
868
  var _this = this;
871
- return __generator(this, function (_c) {
872
- switch (_c.label) {
869
+ return __generator(this, function (_b) {
870
+ switch (_b.label) {
873
871
  case 0:
874
872
  api = params.api, viewer = params.viewer, samples = params.samples, visualRegister = params.visualRegister, minimumAlt = params.minimumAlt, paddingAlt = params.paddingAlt;
875
873
  if (!paddingAlt) {
@@ -886,7 +884,6 @@ var EntityUtils;
886
884
  if (MIN_RECT_DIAGONAL_LENGTH < 1500) {
887
885
  MIN_RECT_DIAGONAL_LENGTH = 1500;
888
886
  }
889
- terrainProviderReady = Boolean((_a = viewer === null || viewer === void 0 ? void 0 : viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a.ready);
890
887
  data = {
891
888
  pos3d: null,
892
889
  rectangle: null,
@@ -903,7 +900,7 @@ var EntityUtils;
903
900
  if (!(carto === null || carto === void 0 ? void 0 : carto.latitude)) return [3 /*break*/, 6];
904
901
  baseHeight = 0;
905
902
  if (!(heightRef == null || heightRef == HeightReference.RELATIVE_TO_GROUND || heightRef == HeightReference.NONE)) return [3 /*break*/, 5];
906
- if (!terrainProviderReady) return [3 /*break*/, 4];
903
+ if (!(!viewer.terrainProvider || viewer.terrainProvider["ready"] == false)) return [3 /*break*/, 4];
907
904
  if (!(terrainSamples > MAX_TERRAIN_SAMPLES)) return [3 /*break*/, 1];
908
905
  baseHeight = viewer.scene.globe.getHeight(carto);
909
906
  return [3 /*break*/, 3];
@@ -1304,13 +1301,13 @@ var EntityUtils;
1304
1301
  }); };
1305
1302
  allPosses = [];
1306
1303
  i = 0;
1307
- _c.label = 1;
1304
+ _b.label = 1;
1308
1305
  case 1:
1309
1306
  if (!(i < samples.length)) return [3 /*break*/, 4];
1310
1307
  sample = samples[i];
1311
1308
  return [4 /*yield*/, getEntityPositions(sample)];
1312
1309
  case 2:
1313
- samplePosses = _c.sent();
1310
+ samplePosses = _b.sent();
1314
1311
  if (samplePosses === null || samplePosses === void 0 ? void 0 : samplePosses.length) {
1315
1312
  valid = !(allPosses === null || allPosses === void 0 ? void 0 : allPosses.length);
1316
1313
  if (!valid) {
@@ -1337,7 +1334,7 @@ var EntityUtils;
1337
1334
  }
1338
1335
  }
1339
1336
  }
1340
- _c.label = 3;
1337
+ _b.label = 3;
1341
1338
  case 3:
1342
1339
  i++;
1343
1340
  return [3 /*break*/, 1];
@@ -1355,7 +1352,7 @@ var EntityUtils;
1355
1352
  terrData = ViewUtils.GatherTerrainTile({
1356
1353
  viewer: viewer
1357
1354
  });
1358
- if (((_b = terrData === null || terrData === void 0 ? void 0 : terrData.terrain) === null || _b === void 0 ? void 0 : _b.tilesetId) == ProjectViewTile.EDefaultTerrain.FlatTerrain) {
1355
+ if (((_a = terrData === null || terrData === void 0 ? void 0 : terrData.terrain) === null || _a === void 0 ? void 0 : _a.tilesetId) == ProjectViewTile.EDefaultTerrain.FlatTerrain) {
1359
1356
  MIN_RECT_DIAGONAL_LENGTH = 0;
1360
1357
  }
1361
1358
  posCarto = Cartographic.fromCartesian(allPosses[0]);
@@ -2110,8 +2107,7 @@ var TERRAIN_HEIGHT_TOLERANCE_LOW_ENTITY_THRESHOLD = 100;
2110
2107
  * @returns
2111
2108
  */
2112
2109
  var getTerrainOffset = function (viewer, pos3d) {
2113
- var _a;
2114
- if (!((_a = viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a.ready)) {
2110
+ if (!viewer.terrainProvider || viewer.terrainProvider["ready"] == false) {
2115
2111
  return null;
2116
2112
  }
2117
2113
  var terrain = ViewUtils.GatherTerrainTile({
@@ -2125,8 +2121,8 @@ var getTerrainOffset = function (viewer, pos3d) {
2125
2121
  var keys = Array.from(_terrainCache.Entries());
2126
2122
  var tolerance = viewer.entities.values.length > TERRAIN_HEIGHT_TOLERANCE_LOW_ENTITY_THRESHOLD ? TERRAIN_HEIGHT_TOLERANCE : TERRAIN_HEIGHT_TOLERANCE_LOW_COUNT;
2127
2123
  for (var i = 0; i < keys.length; i++) {
2128
- var _b = keys[i], key_1 = _b[0], offset_1 = _b[1];
2129
- var _c = key_1.split("_"), terrainId2 = _c[0], x = _c[1], y = _c[2], z = _c[3];
2124
+ var _a = keys[i], key_1 = _a[0], offset_1 = _a[1];
2125
+ var _b = key_1.split("_"), terrainId2 = _b[0], x = _b[1], y = _b[2], z = _b[3];
2130
2126
  if (terrainId2 != terrainId) {
2131
2127
  continue;
2132
2128
  }
@@ -3002,6 +2998,35 @@ function cullDuplicatePoints(posses) {
3002
2998
  }
3003
2999
  return newPosses;
3004
3000
  }
3001
+ /**
3002
+ * Util to support both old and newer versions of Cesium for creating 3D model primitives.
3003
+ * @param url
3004
+ */
3005
+ function getModelEntity(url, scale) {
3006
+ return __awaiter(this, void 0, void 0, function () {
3007
+ var CESIUM;
3008
+ return __generator(this, function (_a) {
3009
+ CESIUM = Cesium;
3010
+ // Newer versions of Cesium have a fromGltfAsync method.
3011
+ if (CESIUM.Model.hasOwnProperty("fromGltfAsync")) {
3012
+ return [2 /*return*/, CESIUM.Model.fromGltfAsync({
3013
+ url: url,
3014
+ asynchronous: true,
3015
+ scale: scale
3016
+ })];
3017
+ }
3018
+ // Older versions of Cesium have a fromGltf method.
3019
+ else if (Model.hasOwnProperty("fromGltf")) {
3020
+ return [2 /*return*/, CESIUM.Model.fromGltf({
3021
+ url: url,
3022
+ asynchronous: true,
3023
+ scale: scale
3024
+ })];
3025
+ }
3026
+ return [2 /*return*/, null];
3027
+ });
3028
+ });
3029
+ }
3005
3030
  var EntityRenderEngine;
3006
3031
  (function (EntityRenderEngine) {
3007
3032
  function Render(params) {
@@ -3987,6 +4012,7 @@ var EntityRenderEngine;
3987
4012
  var Model3d;
3988
4013
  (function (Model3d) {
3989
4014
  function Render(params) {
4015
+ var _this = this;
3990
4016
  var entity = params.entity;
3991
4017
  var transform = entity === null || entity === void 0 ? void 0 : entity.transform;
3992
4018
  var heading = EnsureNumber(transform === null || transform === void 0 ? void 0 : transform.heading);
@@ -4055,54 +4081,58 @@ var EntityRenderEngine;
4055
4081
  var fileRadiusKey = "model3d_".concat(params.lodUrl, "_").concat(scale * styleScale, "_radius");
4056
4082
  var heightProm = _fileRadiusCache.Get(fileRadiusKey);
4057
4083
  if (!heightProm) {
4058
- heightProm = new Promise(function (res) {
4059
- try {
4060
- // We'll have an async secondary model created for calculating boundaries.
4061
- // Once calculated we remove it.
4062
- var modelPrim_1 = Model.fromGltf({
4063
- url: params.lodUrl,
4064
- asynchronous: true,
4065
- scale: scale * styleScale
4066
- });
4067
- modelPrim_1.readyPromise.then(function (loaded) {
4068
- var kill = function () {
4069
- if (params.viewer && !params.viewer.isDestroyed() && params.viewer.scene.primitives.contains(modelPrim_1)) {
4070
- params.viewer.scene.primitives.remove(modelPrim_1);
4071
- }
4072
- if (!modelPrim_1.isDestroyed()) {
4073
- modelPrim_1.destroy();
4074
- }
4075
- };
4076
- if (!cEntity || !(loaded === null || loaded === void 0 ? void 0 : loaded.boundingSphere)) {
4077
- kill();
4084
+ heightProm = new Promise(function (res) { return __awaiter(_this, void 0, void 0, function () {
4085
+ var modelPrim_1, e_6;
4086
+ return __generator(this, function (_a) {
4087
+ switch (_a.label) {
4088
+ case 0:
4089
+ _a.trys.push([0, 2, , 3]);
4090
+ return [4 /*yield*/, getModelEntity(params.lodUrl, scale * styleScale)];
4091
+ case 1:
4092
+ modelPrim_1 = _a.sent();
4093
+ modelPrim_1.readyPromise.then(function (loaded) {
4094
+ var kill = function () {
4095
+ if (params.viewer && !params.viewer.isDestroyed() && params.viewer.scene.primitives.contains(modelPrim_1)) {
4096
+ params.viewer.scene.primitives.remove(modelPrim_1);
4097
+ }
4098
+ if (!modelPrim_1.isDestroyed()) {
4099
+ modelPrim_1.destroy();
4100
+ }
4101
+ };
4102
+ if (!cEntity || !(loaded === null || loaded === void 0 ? void 0 : loaded.boundingSphere)) {
4103
+ kill();
4104
+ res(null);
4105
+ return;
4106
+ }
4107
+ var radius = loaded.boundingSphere.radius;
4108
+ var centerOffset = loaded.boundingSphere.center;
4109
+ if (centerOffset) {
4110
+ // Add the center offset to the radius because I am not good at math.
4111
+ var magnitude = Cartesian3.magnitude(centerOffset);
4112
+ radius += magnitude;
4113
+ // Extra padding if the model is super not centered.
4114
+ // I saw some strange boundaries for some bad models.
4115
+ if (magnitude > 100) {
4116
+ radius += 100;
4117
+ }
4118
+ }
4119
+ kill();
4120
+ res(radius);
4121
+ }).catch(function (e) {
4122
+ console.error(e);
4123
+ res(null);
4124
+ });
4125
+ params.viewer.scene.primitives.add(modelPrim_1);
4126
+ return [3 /*break*/, 3];
4127
+ case 2:
4128
+ e_6 = _a.sent();
4129
+ console.error(e_6);
4078
4130
  res(null);
4079
- return;
4080
- }
4081
- var radius = loaded.boundingSphere.radius;
4082
- var centerOffset = loaded.boundingSphere.center;
4083
- if (centerOffset) {
4084
- // Add the center offset to the radius because I am not good at math.
4085
- var magnitude = Cartesian3.magnitude(centerOffset);
4086
- radius += magnitude;
4087
- // Extra padding if the model is super not centered.
4088
- // I saw some strange boundaries for some bad models.
4089
- if (magnitude > 100) {
4090
- radius += 100;
4091
- }
4092
- }
4093
- kill();
4094
- res(radius);
4095
- }).catch(function (e) {
4096
- console.error(e);
4097
- res(null);
4098
- });
4099
- params.viewer.scene.primitives.add(modelPrim_1);
4100
- }
4101
- catch (e) {
4102
- console.error(e);
4103
- res(null);
4104
- }
4105
- });
4131
+ return [3 /*break*/, 3];
4132
+ case 3: return [2 /*return*/];
4133
+ }
4134
+ });
4135
+ }); });
4106
4136
  _fileRadiusCache.Set(fileRadiusKey, heightProm);
4107
4137
  }
4108
4138
  heightProm.then(function (radius) {
@@ -5644,13 +5674,12 @@ function select(viewer, visual, color, reqRender) {
5644
5674
  for (var i = 0; i < entities.length; i++) {
5645
5675
  _loop_1(i);
5646
5676
  }
5647
- return;
5648
- }
5649
- if (!isAlive$1(viewer, visual)) {
5650
- return;
5651
5677
  }
5652
5678
  if (visual instanceof Primitive) ;
5653
5679
  else if (visual instanceof Cesium3DTileFeature) {
5680
+ if (!isAlive$1(viewer, visual)) {
5681
+ return;
5682
+ }
5654
5683
  var orgColor = visual[ORG_COLOR_KEY];
5655
5684
  if (orgColor == null) {
5656
5685
  orgColor = visual.color;
@@ -5706,13 +5735,12 @@ function deselect(viewer, visual, reqRender) {
5706
5735
  for (var i = 0; i < entities.length; i++) {
5707
5736
  _loop_2(i);
5708
5737
  }
5709
- return;
5710
- }
5711
- if (!isAlive$1(viewer, visual)) {
5712
- return;
5713
5738
  }
5714
5739
  if (visual instanceof Primitive) ;
5715
5740
  else if (visual instanceof Cesium3DTileFeature) {
5741
+ if (!isAlive$1(viewer, visual)) {
5742
+ return;
5743
+ }
5716
5744
  var orgColor = visual[ORG_COLOR_KEY];
5717
5745
  if (orgColor != null) {
5718
5746
  visual.color = orgColor;
@@ -5805,11 +5833,12 @@ var VisualsRegister;
5805
5833
  this.cameraCullerDispose = null;
5806
5834
  };
5807
5835
  Register.prototype.ForceUpdate = function (params) {
5836
+ var _a;
5808
5837
  var entityIds = params.entityIds;
5809
5838
  for (var i = 0; i < entityIds.length; i++) {
5810
5839
  var entityId = entityIds[i];
5811
5840
  updateEntity(this.viewer, entityId, this);
5812
- this.OnUpdate.Trigger({
5841
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({
5813
5842
  type: EVisualUpdateType.Update,
5814
5843
  entityId: entityId
5815
5844
  });
@@ -8669,6 +8698,28 @@ function createTileset(url, props) {
8669
8698
  }
8670
8699
  var TilesetRenderEngine;
8671
8700
  (function (TilesetRenderEngine) {
8701
+ /**
8702
+ * Returns when a tileset is ready to be used.
8703
+ * This should be waited for after adding at tileset to the scene and BEFORE any settings are applied to it.
8704
+ * @param cTileset
8705
+ * @returns
8706
+ */
8707
+ function OnTilesetReady(cTileset) {
8708
+ return __awaiter(this, void 0, void 0, function () {
8709
+ return __generator(this, function (_a) {
8710
+ switch (_a.label) {
8711
+ case 0:
8712
+ if (!cTileset["readyPromise"]) return [3 /*break*/, 2];
8713
+ return [4 /*yield*/, cTileset["readyPromise"]];
8714
+ case 1:
8715
+ _a.sent();
8716
+ _a.label = 2;
8717
+ case 2: return [2 /*return*/];
8718
+ }
8719
+ });
8720
+ });
8721
+ }
8722
+ TilesetRenderEngine.OnTilesetReady = OnTilesetReady;
8672
8723
  function ApplyPosition(params) {
8673
8724
  var _a;
8674
8725
  var cTileset = params.cTileset;
@@ -8840,7 +8891,7 @@ var TilesetRenderEngine;
8840
8891
  case 2:
8841
8892
  cTileset_1 = _a.sent();
8842
8893
  params.viewer.scene.primitives.add(cTileset_1);
8843
- cTileset_1.readyPromise.then(function () {
8894
+ OnTilesetReady(cTileset_1).then(function () {
8844
8895
  var _a, _b, _c, _d;
8845
8896
  try {
8846
8897
  if (!isAlive$2(params.viewer, cTileset_1)) {
@@ -8890,7 +8941,7 @@ var TilesetRenderEngine;
8890
8941
  case 6:
8891
8942
  cTileset_2 = _a.sent();
8892
8943
  params.viewer.scene.primitives.add(cTileset_2);
8893
- cTileset_2.readyPromise.then(function () {
8944
+ OnTilesetReady(cTileset_2).then(function () {
8894
8945
  var _a;
8895
8946
  try {
8896
8947
  if (!isAlive$2(params.viewer, cTileset_2)) {
@@ -8971,7 +9022,7 @@ var TilesetRenderEngine;
8971
9022
  case 4:
8972
9023
  cTileset = _a.sent();
8973
9024
  viewer.scene.primitives.add(cTileset);
8974
- cTileset.readyPromise.then(function () {
9025
+ OnTilesetReady(cTileset).then(function () {
8975
9026
  var _a;
8976
9027
  try {
8977
9028
  if (!isAlive$2(viewer, cTileset)) {
@@ -9460,7 +9511,9 @@ var TilesetRenderEngine;
9460
9511
  var minMemory = 80;
9461
9512
  var totalPerTileset = Math.max(this.watched.length ? maxMemory / this.watched.length : maxMemory, minMemory);
9462
9513
  this.watched.forEach(function (x) {
9463
- x.maximumMemoryUsage = totalPerTileset;
9514
+ // Newer Cesium killed this property.
9515
+ // TODO: Check if it's needed then.
9516
+ x["maximumMemoryUsage"] = totalPerTileset;
9464
9517
  });
9465
9518
  };
9466
9519
  MemoryWatcher.prototype.destroy = function () {
@@ -9608,7 +9661,7 @@ var TilesetCadRenderManager;
9608
9661
  return [2 /*return*/];
9609
9662
  }
9610
9663
  this.viewer.scene.requestRender();
9611
- cTileset.readyPromise.then(function () {
9664
+ TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
9612
9665
  try {
9613
9666
  if (_this.disposed || cTileset.isDestroyed()) {
9614
9667
  return;
@@ -10514,6 +10567,7 @@ var TilesetOsmRenderManager;
10514
10567
  if (this.disposed) {
10515
10568
  return;
10516
10569
  }
10570
+ this.disposed = true;
10517
10571
  clearInterval(this.queueCheckInterval);
10518
10572
  if (this.cTileset) {
10519
10573
  var viewer = this.viewer;
@@ -10522,6 +10576,9 @@ var TilesetOsmRenderManager;
10522
10576
  this.viewer.scene.primitives.remove(this.cTileset);
10523
10577
  this.viewer.scene.requestRender();
10524
10578
  }
10579
+ else if (this.cTileset && !this.cTileset.isDestroyed()) {
10580
+ this.cTileset.destroy();
10581
+ }
10525
10582
  this.cTileset = null;
10526
10583
  }
10527
10584
  this.visualsManager.RemoveRegos({
@@ -10535,33 +10592,69 @@ var TilesetOsmRenderManager;
10535
10592
  var menuItem = this.item;
10536
10593
  this.sourceId = (_a = menuItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.SourceId;
10537
10594
  this.entityTypeId = (_b = menuItem.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
10538
- this.cTileset = createOsmBuildings();
10539
- this.cTileset.show = true;
10540
- this.viewer.scene.requestRender();
10541
- if (this.sourceId) {
10542
- if (menuItem.ghostLoading == true) {
10543
- this.cTileset.style = new Cesium3DTileStyle({
10544
- color: "rgba(255, 255, 250, 0.98)"
10545
- });
10546
- }
10547
- this.viewer.scene.primitives.add(this.cTileset);
10548
- this.cTileset.tileLoad.addEventListener(function (tile) {
10549
- try {
10550
- _this.mapCTile(tile);
10551
- }
10552
- catch (e) {
10553
- console.error(e);
10595
+ (function () { return __awaiter(_this, void 0, void 0, function () {
10596
+ var CESIUM, cTileset;
10597
+ var _this = this;
10598
+ return __generator(this, function (_a) {
10599
+ switch (_a.label) {
10600
+ case 0:
10601
+ CESIUM = Cesium;
10602
+ if (!CESIUM["createOsmBuildingsAsync"]) return [3 /*break*/, 2];
10603
+ return [4 /*yield*/, CESIUM.createOsmBuildingsAsync({})];
10604
+ case 1:
10605
+ cTileset = _a.sent();
10606
+ return [3 /*break*/, 3];
10607
+ case 2:
10608
+ if (CESIUM["createOsmBuildings"]) {
10609
+ cTileset = CESIUM.createOsmBuildings();
10610
+ }
10611
+ else {
10612
+ console.warn("'tileset-osm-render-manager.ts' could not locate a create function for OSM buildings.");
10613
+ return [2 /*return*/];
10614
+ }
10615
+ _a.label = 3;
10616
+ case 3:
10617
+ if (this.disposed) {
10618
+ if (this.cTileset && !this.cTileset.isDestroyed()) {
10619
+ this.cTileset.destroy();
10620
+ this.cTileset = null;
10621
+ }
10622
+ return [2 /*return*/];
10623
+ }
10624
+ this.cTileset = cTileset;
10625
+ if (this.sourceId) {
10626
+ if (menuItem.ghostLoading == true) {
10627
+ this.cTileset.style = new Cesium3DTileStyle({
10628
+ color: "rgba(255, 255, 250, 0.98)"
10629
+ });
10630
+ }
10631
+ this.viewer.scene.primitives.add(this.cTileset);
10632
+ this.cTileset.tileLoad.addEventListener(function (tile) {
10633
+ if (_this.disposed) {
10634
+ return;
10635
+ }
10636
+ try {
10637
+ _this.mapCTile(tile);
10638
+ }
10639
+ catch (e) {
10640
+ console.error(e);
10641
+ }
10642
+ });
10643
+ this.queueCheckInterval = setInterval(function () {
10644
+ if (_this.featureQueue.length > 0) {
10645
+ _this.processQueue();
10646
+ }
10647
+ }, 5000);
10648
+ }
10649
+ else {
10650
+ this.viewer.scene.primitives.add(this.cTileset);
10651
+ }
10652
+ this.cTileset.show = true;
10653
+ this.viewer.scene.requestRender();
10654
+ return [2 /*return*/];
10554
10655
  }
10555
10656
  });
10556
- this.queueCheckInterval = setInterval(function () {
10557
- if (_this.featureQueue.length > 0) {
10558
- _this.processQueue();
10559
- }
10560
- }, 5000);
10561
- }
10562
- else {
10563
- this.viewer.scene.primitives.add(this.cTileset);
10564
- }
10657
+ }); })();
10565
10658
  };
10566
10659
  Manager.prototype.mapCTile = function (tile) {
10567
10660
  return __awaiter(this, void 0, void 0, function () {
@@ -10899,7 +10992,7 @@ var TilesetEntitiesRenderManager;
10899
10992
  return [2 /*return*/];
10900
10993
  }
10901
10994
  this.viewer.scene.requestRender();
10902
- cTileset.readyPromise.then(function () {
10995
+ TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
10903
10996
  try {
10904
10997
  if (_this.disposed || _this.viewer.isDestroyed()) {
10905
10998
  return;
@@ -10924,7 +11017,7 @@ var TilesetEntitiesRenderManager;
10924
11017
  if (isNaN(attenuationMax)) {
10925
11018
  attenuationMax = 20;
10926
11019
  }
10927
- this.cTileset.readyPromise.then(function () {
11020
+ TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
10928
11021
  TilesetRenderEngine.ApplySettings({
10929
11022
  cTileset: _this.cTileset,
10930
11023
  settings: {
@@ -11107,7 +11200,7 @@ var TilesetPointcloudRenderManager;
11107
11200
  return [2 /*return*/];
11108
11201
  }
11109
11202
  this.viewer.scene.requestRender();
11110
- cTileset.readyPromise.then(function () {
11203
+ TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
11111
11204
  try {
11112
11205
  if (_this.disposed || _this.viewer.isDestroyed()) {
11113
11206
  return;
@@ -11486,7 +11579,7 @@ var TilesetArbRenderManager;
11486
11579
  return [2 /*return*/];
11487
11580
  }
11488
11581
  this.viewer.scene.requestRender();
11489
- this.cTileset.readyPromise.then(function () {
11582
+ TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
11490
11583
  try {
11491
11584
  if (_this.item.ApplyStyles ||
11492
11585
  _this.item.Type == MenuItem.EType.IonTileset) {
@@ -11500,18 +11593,18 @@ var TilesetArbRenderManager;
11500
11593
  console.error(e);
11501
11594
  }
11502
11595
  });
11503
- this.cTileset.tileLoad.addEventListener(function (tile) {
11504
- try {
11505
- _this.mapCTile(tile);
11506
- }
11507
- catch (e) {
11508
- console.error(e);
11509
- }
11510
- });
11511
11596
  return [2 /*return*/];
11512
11597
  }
11513
11598
  });
11514
11599
  }); })();
11600
+ this.cTileset.tileLoad.addEventListener(function (tile) {
11601
+ try {
11602
+ _this.mapCTile(tile);
11603
+ }
11604
+ catch (e) {
11605
+ console.error(e);
11606
+ }
11607
+ });
11515
11608
  };
11516
11609
  Manager.prototype.onCTilesetLoad = function () {
11517
11610
  if (this.item.FlyTo) {
@@ -12091,6 +12184,7 @@ var TilesetGooglePhotosRenderManager;
12091
12184
  if (this.disposed) {
12092
12185
  return;
12093
12186
  }
12187
+ this.disposed = true;
12094
12188
  this.doDispose();
12095
12189
  };
12096
12190
  Manager.prototype.doDispose = function () {
@@ -13159,6 +13253,8 @@ var WidgetBranding = /** @class */ (function (_super) {
13159
13253
  this._terrainListenRemoval();
13160
13254
  this._terrainListenRemoval = null;
13161
13255
  }
13256
+ clearTimeout(this.checkTimeout);
13257
+ this.checkTimeout = null;
13162
13258
  _super.prototype.Dispose.call(this);
13163
13259
  };
13164
13260
  WidgetBranding.prototype._generateStyles = function () {
@@ -13205,12 +13301,16 @@ var WidgetBranding = /** @class */ (function (_super) {
13205
13301
  return [2 /*return*/, false];
13206
13302
  }
13207
13303
  provider = viewer.scene.terrainProvider;
13208
- return [4 /*yield*/, provider.readyPromise];
13209
- case 1:
13210
- _c.sent();
13211
- if (provider != viewer.scene.terrainProvider) {
13304
+ // Newer Cesium versions have a ready property
13305
+ if (provider["ready"] == false) {
13212
13306
  return [2 /*return*/];
13213
13307
  }
13308
+ if (!provider["readyPromise"]) return [3 /*break*/, 2];
13309
+ return [4 /*yield*/, provider["readyPromise"]];
13310
+ case 1:
13311
+ _c.sent();
13312
+ _c.label = 2;
13313
+ case 2:
13214
13314
  credits = provider === null || provider === void 0 ? void 0 : provider._tileCredits;
13215
13315
  return [2 /*return*/, credits && credits.length > 0 && credits[0]._html && ((_b = credits[0]._html) === null || _b === void 0 ? void 0 : _b.includes("ion-credit.png"))];
13216
13316
  }
@@ -13218,21 +13318,23 @@ var WidgetBranding = /** @class */ (function (_super) {
13218
13318
  });
13219
13319
  };
13220
13320
  WidgetBranding.prototype._updateIon = function () {
13321
+ var _a, _b;
13221
13322
  return __awaiter(this, void 0, void 0, function () {
13222
- var shouldShow, e_1;
13223
- return __generator(this, function (_a) {
13224
- switch (_a.label) {
13323
+ var shouldShow, e_1, provider;
13324
+ var _this = this;
13325
+ return __generator(this, function (_c) {
13326
+ switch (_c.label) {
13225
13327
  case 0:
13226
13328
  if (this.updatingIon) {
13227
13329
  return [2 /*return*/];
13228
13330
  }
13229
13331
  this.updatingIon = true;
13230
- _a.label = 1;
13332
+ _c.label = 1;
13231
13333
  case 1:
13232
- _a.trys.push([1, 3, , 4]);
13334
+ _c.trys.push([1, 3, , 4]);
13233
13335
  return [4 /*yield*/, this._shouldShowIonLogo()];
13234
13336
  case 2:
13235
- shouldShow = _a.sent();
13337
+ shouldShow = _c.sent();
13236
13338
  if (shouldShow && !this.ion.parentElement) {
13237
13339
  this._element.insertBefore(this.ion, this._element.firstChild);
13238
13340
  }
@@ -13241,11 +13343,22 @@ var WidgetBranding = /** @class */ (function (_super) {
13241
13343
  }
13242
13344
  return [3 /*break*/, 4];
13243
13345
  case 3:
13244
- e_1 = _a.sent();
13346
+ e_1 = _c.sent();
13245
13347
  console.error(e_1);
13246
13348
  return [3 /*break*/, 4];
13247
13349
  case 4:
13248
13350
  this.updatingIon = false;
13351
+ provider = !((_a = this._viewer) === null || _a === void 0 ? void 0 : _a.scene) || ((_b = this._viewer) === null || _b === void 0 ? void 0 : _b.isDestroyed()) ? null : this._viewer.scene.terrainProvider;
13352
+ if (provider) {
13353
+ // Newer Cesium versions have a ready property
13354
+ // If it's not ready, we'll re-check in a moment.
13355
+ if (provider["ready"] == false) {
13356
+ clearTimeout(this.checkTimeout);
13357
+ this.checkTimeout = setTimeout(function () {
13358
+ _this._updateIon();
13359
+ }, 1000);
13360
+ }
13361
+ }
13249
13362
  return [2 /*return*/];
13250
13363
  }
13251
13364
  });
@@ -15908,7 +16021,7 @@ var WidgetEmbeddedInfoView = /** @class */ (function (_super) {
15908
16021
  }
15909
16022
  this._lastSelectedId = firstId;
15910
16023
  try {
15911
- url = "http://localhost:3000/embed";
16024
+ url = "https://embed.nextspace-dev.net/embed";
15912
16025
  urlParams = new URLSearchParams();
15913
16026
  urlParams.append("id", "info-view");
15914
16027
  urlParams.append("entityId", firstId);
@@ -16708,7 +16821,7 @@ function renderDefaultTerrTile(id) {
16708
16821
  case ProjectViewTile.EDefaultTerrain.FlatTerrain: return [3 /*break*/, 5];
16709
16822
  case ProjectViewTile.EDefaultTerrain.LINZ: return [3 /*break*/, 6];
16710
16823
  }
16711
- return [3 /*break*/, 7];
16824
+ return [3 /*break*/, 10];
16712
16825
  case 1:
16713
16826
  if (!CESIUM.createWorldTerrainAsync) return [3 /*break*/, 3];
16714
16827
  return [4 /*yield*/, CESIUM.createWorldTerrainAsync({
@@ -16719,24 +16832,37 @@ function renderDefaultTerrTile(id) {
16719
16832
  provider = _b.sent();
16720
16833
  return [3 /*break*/, 4];
16721
16834
  case 3:
16722
- provider = createWorldTerrain({
16723
- requestVertexNormals: true,
16724
- requestWaterMask: false
16725
- });
16835
+ if (CESIUM.createWorldTerrain) {
16836
+ provider = CESIUM.createWorldTerrain({
16837
+ requestVertexNormals: true,
16838
+ requestWaterMask: false
16839
+ });
16840
+ }
16726
16841
  _b.label = 4;
16727
- case 4: return [3 /*break*/, 7];
16842
+ case 4: return [3 /*break*/, 10];
16728
16843
  case 5:
16729
16844
  provider = new EllipsoidTerrainProvider();
16730
- return [3 /*break*/, 7];
16845
+ return [3 /*break*/, 10];
16731
16846
  case 6:
16732
- provider = new CesiumTerrainProvider({
16847
+ if (!CESIUM.CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 8];
16848
+ return [4 /*yield*/, CESIUM.CesiumTerrainProvider.fromUrl("https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem", {
16849
+ requestVertexNormals: true,
16850
+ requestWaterMask: false,
16851
+ requestMetadata: false
16852
+ })];
16853
+ case 7:
16854
+ provider = _b.sent();
16855
+ return [3 /*break*/, 9];
16856
+ case 8:
16857
+ provider = new CESIUM.CesiumTerrainProvider({
16733
16858
  url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
16734
16859
  requestVertexNormals: true,
16735
16860
  requestWaterMask: false,
16736
16861
  requestMetadata: false
16737
16862
  });
16738
- return [3 /*break*/, 7];
16739
- case 7: return [2 /*return*/, provider];
16863
+ _b.label = 9;
16864
+ case 9: return [3 /*break*/, 10];
16865
+ case 10: return [2 /*return*/, provider];
16740
16866
  }
16741
16867
  });
16742
16868
  });
@@ -16858,132 +16984,202 @@ function findKey(apiGetter, keyId, defaultKey) {
16858
16984
  */
16859
16985
  function renderDefaultMapTile(apiGetter, id) {
16860
16986
  return __awaiter(this, void 0, void 0, function () {
16861
- var provider, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
16862
- var _p, _q, _r, _s, _t, _u;
16863
- return __generator(this, function (_v) {
16864
- switch (_v.label) {
16987
+ var CESIUM, provider, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
16988
+ var _y, _z, _0, _1, _2, _3, _4, _5, _6;
16989
+ return __generator(this, function (_7) {
16990
+ switch (_7.label) {
16865
16991
  case 0:
16992
+ CESIUM = Cesium;
16866
16993
  _a = id;
16867
16994
  switch (_a) {
16868
16995
  case ProjectViewTile.EDefaultImagery.BingMapsAerial: return [3 /*break*/, 1];
16869
- case ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels: return [3 /*break*/, 3];
16870
- case ProjectViewTile.EDefaultImagery.BingMapsRoads: return [3 /*break*/, 5];
16871
- case ProjectViewTile.EDefaultImagery.MapboxSatellite: return [3 /*break*/, 7];
16872
- case ProjectViewTile.EDefaultImagery.MapBoxStreets: return [3 /*break*/, 9];
16873
- case ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic: return [3 /*break*/, 11];
16874
- case ProjectViewTile.EDefaultImagery.EsriWorldImagery: return [3 /*break*/, 13];
16875
- case ProjectViewTile.EDefaultImagery.EsriWorldStreetMap: return [3 /*break*/, 14];
16876
- case ProjectViewTile.EDefaultImagery.EsriNationalGeographic: return [3 /*break*/, 15];
16877
- case ProjectViewTile.EDefaultImagery.OpenStreetMap: return [3 /*break*/, 16];
16878
- case ProjectViewTile.EDefaultImagery.LINZ: return [3 /*break*/, 17];
16879
- case ProjectViewTile.EDefaultImagery.StamenWaterColor: return [3 /*break*/, 18];
16880
- case ProjectViewTile.EDefaultImagery.StamenToner: return [3 /*break*/, 19];
16881
- case ProjectViewTile.EDefaultImagery.Grid: return [3 /*break*/, 20];
16996
+ case ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels: return [3 /*break*/, 7];
16997
+ case ProjectViewTile.EDefaultImagery.BingMapsRoads: return [3 /*break*/, 13];
16998
+ case ProjectViewTile.EDefaultImagery.MapboxSatellite: return [3 /*break*/, 19];
16999
+ case ProjectViewTile.EDefaultImagery.MapBoxStreets: return [3 /*break*/, 21];
17000
+ case ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic: return [3 /*break*/, 23];
17001
+ case ProjectViewTile.EDefaultImagery.EsriWorldImagery: return [3 /*break*/, 25];
17002
+ case ProjectViewTile.EDefaultImagery.EsriWorldStreetMap: return [3 /*break*/, 29];
17003
+ case ProjectViewTile.EDefaultImagery.EsriNationalGeographic: return [3 /*break*/, 33];
17004
+ case ProjectViewTile.EDefaultImagery.OpenStreetMap: return [3 /*break*/, 37];
17005
+ case ProjectViewTile.EDefaultImagery.LINZ: return [3 /*break*/, 38];
17006
+ case ProjectViewTile.EDefaultImagery.StamenWaterColor: return [3 /*break*/, 39];
17007
+ case ProjectViewTile.EDefaultImagery.StamenToner: return [3 /*break*/, 40];
17008
+ case ProjectViewTile.EDefaultImagery.Grid: return [3 /*break*/, 41];
16882
17009
  }
16883
- return [3 /*break*/, 21];
17010
+ return [3 /*break*/, 42];
16884
17011
  case 1:
16885
- _c = (_b = BingMapsImageryProvider).bind;
16886
- _p = {
16887
- url: "https://dev.virtualearth.net",
17012
+ if (!BingMapsImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 4];
17013
+ _c = (_b = CESIUM.BingMapsImageryProvider).fromUrl;
17014
+ _d = ["https://dev.virtualearth.net"];
17015
+ _y = {
16888
17016
  mapStyle: BingMapsStyle.AERIAL
16889
17017
  };
16890
17018
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
16891
- case 2:
16892
- provider = new (_c.apply(_b, [void 0, (_p.key = _v.sent(),
16893
- _p)]))();
16894
- return [3 /*break*/, 21];
17019
+ case 2: return [4 /*yield*/, _c.apply(_b, _d.concat([(_y.key = _7.sent(),
17020
+ _y)]))];
16895
17021
  case 3:
16896
- _e = (_d = BingMapsImageryProvider).bind;
16897
- _q = {
17022
+ provider = _7.sent();
17023
+ return [3 /*break*/, 6];
17024
+ case 4:
17025
+ _f = (_e = CESIUM.BingMapsImageryProvider).bind;
17026
+ _z = {
16898
17027
  url: "https://dev.virtualearth.net",
16899
- mapStyle: BingMapsStyle.AERIAL_WITH_LABELS
17028
+ mapStyle: BingMapsStyle.AERIAL
16900
17029
  };
16901
17030
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
16902
- case 4:
16903
- provider = new (_e.apply(_d, [void 0, (_q.key = _v.sent(),
16904
- _q)]))();
16905
- return [3 /*break*/, 21];
16906
17031
  case 5:
16907
- _g = (_f = BingMapsImageryProvider).bind;
16908
- _r = {
17032
+ provider = new (_f.apply(_e, [void 0, (_z.key = _7.sent(),
17033
+ _z)]))();
17034
+ _7.label = 6;
17035
+ case 6: return [3 /*break*/, 42];
17036
+ case 7:
17037
+ if (!BingMapsImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 10];
17038
+ _h = (_g = CESIUM.BingMapsImageryProvider).fromUrl;
17039
+ _j = ["https://dev.virtualearth.net"];
17040
+ _0 = {
17041
+ mapStyle: BingMapsStyle.AERIAL_WITH_LABELS
17042
+ };
17043
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
17044
+ case 8: return [4 /*yield*/, _h.apply(_g, _j.concat([(_0.key = _7.sent(),
17045
+ _0)]))];
17046
+ case 9:
17047
+ provider = _7.sent();
17048
+ return [3 /*break*/, 12];
17049
+ case 10:
17050
+ _l = (_k = CESIUM.BingMapsImageryProvider).bind;
17051
+ _1 = {
17052
+ url: "https://dev.virtualearth.net",
17053
+ mapStyle: BingMapsStyle.AERIAL_WITH_LABELS
17054
+ };
17055
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
17056
+ case 11:
17057
+ provider = new (_l.apply(_k, [void 0, (_1.key = _7.sent(),
17058
+ _1)]))();
17059
+ _7.label = 12;
17060
+ case 12: return [3 /*break*/, 42];
17061
+ case 13:
17062
+ if (!BingMapsImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 16];
17063
+ _o = (_m = CESIUM.BingMapsImageryProvider).fromUrl;
17064
+ _p = ["https://dev.virtualearth.net"];
17065
+ _2 = {
17066
+ mapStyle: BingMapsStyle.ROAD_ON_DEMAND
17067
+ };
17068
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
17069
+ case 14: return [4 /*yield*/, _o.apply(_m, _p.concat([(_2.key = _7.sent(),
17070
+ _2)]))];
17071
+ case 15:
17072
+ provider = _7.sent();
17073
+ return [3 /*break*/, 18];
17074
+ case 16:
17075
+ _r = (_q = CESIUM.BingMapsImageryProvider).bind;
17076
+ _3 = {
16909
17077
  url: "https://dev.virtualearth.net",
16910
17078
  mapStyle: BingMapsStyle.ROAD_ON_DEMAND
16911
17079
  };
16912
17080
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
16913
- case 6:
16914
- provider = new (_g.apply(_f, [void 0, (_r.key = _v.sent(),
16915
- _r)]))();
16916
- return [3 /*break*/, 21];
16917
- case 7:
16918
- _j = (_h = MapboxImageryProvider).bind;
16919
- _s = {
17081
+ case 17:
17082
+ provider = new (_r.apply(_q, [void 0, (_3.key = _7.sent(),
17083
+ _3)]))();
17084
+ _7.label = 18;
17085
+ case 18: return [3 /*break*/, 42];
17086
+ case 19:
17087
+ _t = (_s = MapboxImageryProvider).bind;
17088
+ _4 = {
16920
17089
  mapId: "mapbox.satellite"
16921
17090
  };
16922
17091
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, DEFAULT_MAPBOX_KEY)];
16923
- case 8:
16924
- provider = new (_j.apply(_h, [void 0, (_s.accessToken = _v.sent(),
16925
- _s)]))();
16926
- return [3 /*break*/, 21];
16927
- case 9:
16928
- _l = (_k = MapboxStyleImageryProvider).bind;
16929
- _t = {
17092
+ case 20:
17093
+ provider = new (_t.apply(_s, [void 0, (_4.accessToken = _7.sent(),
17094
+ _4)]))();
17095
+ return [3 /*break*/, 42];
17096
+ case 21:
17097
+ _v = (_u = MapboxStyleImageryProvider).bind;
17098
+ _5 = {
16930
17099
  styleId: "satellite-streets-v11"
16931
17100
  };
16932
17101
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, DEFAULT_MAPBOX_KEY)];
16933
- case 10:
16934
- provider = new (_l.apply(_k, [void 0, (_t.accessToken = _v.sent(),
16935
- _t)]))();
16936
- return [3 /*break*/, 21];
16937
- case 11:
16938
- _o = (_m = MapboxStyleImageryProvider).bind;
16939
- _u = {
17102
+ case 22:
17103
+ provider = new (_v.apply(_u, [void 0, (_5.accessToken = _7.sent(),
17104
+ _5)]))();
17105
+ return [3 /*break*/, 42];
17106
+ case 23:
17107
+ _x = (_w = MapboxStyleImageryProvider).bind;
17108
+ _6 = {
16940
17109
  styleId: "streets-v11"
16941
17110
  };
16942
17111
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, DEFAULT_MAPBOX_KEY)];
16943
- case 12:
16944
- provider = new (_o.apply(_m, [void 0, (_u.accessToken = _v.sent(),
16945
- _u)]))();
16946
- return [3 /*break*/, 21];
16947
- case 13:
16948
- provider = new ArcGisMapServerImageryProvider({
17112
+ case 24:
17113
+ provider = new (_x.apply(_w, [void 0, (_6.accessToken = _7.sent(),
17114
+ _6)]))();
17115
+ return [3 /*break*/, 42];
17116
+ case 25:
17117
+ if (!ArcGisMapServerImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 27];
17118
+ return [4 /*yield*/, CESIUM.ArcGisMapServerImageryProvider.fromUrl("https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer", {
17119
+ enablePickFeatures: false
17120
+ })];
17121
+ case 26:
17122
+ provider = _7.sent();
17123
+ return [3 /*break*/, 28];
17124
+ case 27:
17125
+ provider = new CESIUM.ArcGisMapServerImageryProvider({
16949
17126
  url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
16950
17127
  enablePickFeatures: false
16951
17128
  });
16952
- return [3 /*break*/, 21];
16953
- case 14:
16954
- provider = new ArcGisMapServerImageryProvider({
17129
+ _7.label = 28;
17130
+ case 28: return [3 /*break*/, 42];
17131
+ case 29:
17132
+ if (!ArcGisMapServerImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 31];
17133
+ return [4 /*yield*/, CESIUM.ArcGisMapServerImageryProvider.fromUrl("https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer", {
17134
+ enablePickFeatures: false
17135
+ })];
17136
+ case 30:
17137
+ provider = _7.sent();
17138
+ return [3 /*break*/, 32];
17139
+ case 31:
17140
+ provider = new CESIUM.ArcGisMapServerImageryProvider({
16955
17141
  url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
16956
17142
  enablePickFeatures: false
16957
17143
  });
16958
- return [3 /*break*/, 21];
16959
- case 15:
16960
- provider = new ArcGisMapServerImageryProvider({
17144
+ _7.label = 32;
17145
+ case 32: return [3 /*break*/, 42];
17146
+ case 33:
17147
+ if (!CESIUM.ArcGisMapServerImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 35];
17148
+ return [4 /*yield*/, CESIUM.ArcGisMapServerImageryProvider.fromUrl("https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/", {
17149
+ enablePickFeatures: false
17150
+ })];
17151
+ case 34:
17152
+ provider = _7.sent();
17153
+ return [3 /*break*/, 36];
17154
+ case 35:
17155
+ provider = new CESIUM.ArcGisMapServerImageryProvider({
16961
17156
  url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
16962
17157
  enablePickFeatures: false
16963
17158
  });
16964
- return [3 /*break*/, 21];
16965
- case 16:
17159
+ _7.label = 36;
17160
+ case 36: return [3 /*break*/, 42];
17161
+ case 37:
16966
17162
  provider = new OpenStreetMapImageryProvider({
16967
17163
  url: "https://a.tile.openstreetmap.org/"
16968
17164
  });
16969
- return [3 /*break*/, 21];
16970
- case 17:
17165
+ return [3 /*break*/, 42];
17166
+ case 38:
16971
17167
  provider = new OpenStreetMapImageryProvider({
16972
17168
  url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-img",
16973
17169
  fileExtension: "jpg"
16974
17170
  });
16975
- return [3 /*break*/, 21];
16976
- case 18:
17171
+ return [3 /*break*/, 42];
17172
+ case 39:
16977
17173
  provider = new OpenStreetMapImageryProvider({
16978
17174
  url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
16979
17175
  });
16980
- return [3 /*break*/, 21];
16981
- case 19:
17176
+ return [3 /*break*/, 42];
17177
+ case 40:
16982
17178
  provider = new OpenStreetMapImageryProvider({
16983
17179
  url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
16984
17180
  });
16985
- return [3 /*break*/, 21];
16986
- case 20:
17181
+ return [3 /*break*/, 42];
17182
+ case 41:
16987
17183
  provider = new GridImageryProvider({
16988
17184
  tilingScheme: new GeographicTilingScheme(),
16989
17185
  cells: 0,
@@ -16995,8 +17191,8 @@ function renderDefaultMapTile(apiGetter, id) {
16995
17191
  tileHeight: 256,
16996
17192
  canvasSize: 256
16997
17193
  });
16998
- return [3 /*break*/, 21];
16999
- case 21: return [2 /*return*/, provider];
17194
+ return [3 /*break*/, 42];
17195
+ case 42: return [2 /*return*/, provider];
17000
17196
  }
17001
17197
  });
17002
17198
  });
@@ -17093,19 +17289,20 @@ var TileRenderEngine;
17093
17289
  (function (LegacyNavigator) {
17094
17290
  function Render(params) {
17095
17291
  return __awaiter(this, void 0, void 0, function () {
17096
- var enabled, tile, bId, layer, defaultId, provider, provider, min, max, _a, mapboxKey, _b;
17292
+ var CESIUM, enabled, tile, bId, layer, defaultId, provider, provider, min, max, _a, mapboxKey, _b;
17097
17293
  return __generator(this, function (_c) {
17098
17294
  switch (_c.label) {
17099
17295
  case 0:
17100
17296
  if (!params.apiGetter) {
17101
17297
  params.apiGetter = ENVIRONMENT.Api().GetBruceGetter();
17102
17298
  }
17299
+ CESIUM = Cesium;
17103
17300
  enabled = gatherEnabledImageries(params.viewer);
17104
17301
  tile = params.data;
17105
17302
  bId = createLegacyImageryId(tile);
17106
17303
  layer = enabled.find(function (x) { return x._bId == bId; });
17107
17304
  if (!layer) return [3 /*break*/, 1];
17108
- return [3 /*break*/, 13];
17305
+ return [3 /*break*/, 16];
17109
17306
  case 1:
17110
17307
  if (!isLegacyImageryDefault(tile.Name)) return [3 /*break*/, 3];
17111
17308
  defaultId = legacyMapIdToDefaultId(tile.Name);
@@ -17115,9 +17312,9 @@ var TileRenderEngine;
17115
17312
  if (provider) {
17116
17313
  layer = createImageryLayer(provider);
17117
17314
  }
17118
- return [3 /*break*/, 13];
17315
+ return [3 /*break*/, 16];
17119
17316
  case 3:
17120
- if (!tile.SourceUrl) return [3 /*break*/, 13];
17317
+ if (!tile.SourceUrl) return [3 /*break*/, 16];
17121
17318
  provider = null;
17122
17319
  min = tile.Minimum;
17123
17320
  max = tile.Maximum;
@@ -17132,17 +17329,17 @@ var TileRenderEngine;
17132
17329
  case "BruceImagery": return [3 /*break*/, 4];
17133
17330
  case "ArcGisImagery": return [3 /*break*/, 5];
17134
17331
  case "TileMapImagery": return [3 /*break*/, 6];
17135
- case "OpenStreetMapImagery": return [3 /*break*/, 7];
17136
- case "MapBoxImagery": return [3 /*break*/, 8];
17332
+ case "OpenStreetMapImagery": return [3 /*break*/, 10];
17333
+ case "MapBoxImagery": return [3 /*break*/, 11];
17137
17334
  }
17138
- return [3 /*break*/, 12];
17335
+ return [3 /*break*/, 15];
17139
17336
  case 4:
17140
17337
  provider = new UrlTemplateImageryProvider({
17141
17338
  url: tile.SourceUrl,
17142
17339
  tileHeight: 256,
17143
17340
  tileWidth: 256
17144
17341
  });
17145
- return [3 /*break*/, 12];
17342
+ return [3 /*break*/, 15];
17146
17343
  case 5:
17147
17344
  provider = new OpenStreetMapImageryProvider({
17148
17345
  url: tile.SourceUrl,
@@ -17150,32 +17347,43 @@ var TileRenderEngine;
17150
17347
  minimumLevel: min,
17151
17348
  maximumLevel: max
17152
17349
  });
17153
- return [3 /*break*/, 12];
17350
+ return [3 /*break*/, 15];
17154
17351
  case 6:
17155
- provider = new TileMapServiceImageryProvider({
17352
+ if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 8];
17353
+ return [4 /*yield*/, CESIUM.TileMapServiceImageryProvider.fromUrl(tile.SourceUrl, {
17354
+ minimumLevel: min,
17355
+ maximumLevel: max,
17356
+ fileExtension: prepareFileExt(tile.FileExtension)
17357
+ })];
17358
+ case 7:
17359
+ provider = _c.sent();
17360
+ return [3 /*break*/, 9];
17361
+ case 8:
17362
+ provider = new CESIUM.TileMapServiceImageryProvider({
17156
17363
  url: tile.SourceUrl,
17157
17364
  fileExtension: prepareFileExt(tile.FileExtension),
17158
17365
  minimumLevel: min,
17159
17366
  maximumLevel: max
17160
17367
  });
17161
- return [3 /*break*/, 12];
17162
- case 7:
17368
+ _c.label = 9;
17369
+ case 9: return [3 /*break*/, 15];
17370
+ case 10:
17163
17371
  provider = new OpenStreetMapImageryProvider({
17164
17372
  url: tile.SourceUrl,
17165
17373
  fileExtension: prepareFileExt(tile.FileExtension),
17166
17374
  minimumLevel: min,
17167
17375
  maximumLevel: max
17168
17376
  });
17169
- return [3 /*break*/, 12];
17170
- case 8:
17171
- if (!tile.ProgramKey) return [3 /*break*/, 9];
17377
+ return [3 /*break*/, 15];
17378
+ case 11:
17379
+ if (!tile.ProgramKey) return [3 /*break*/, 12];
17172
17380
  _b = tile.ProgramKey;
17173
- return [3 /*break*/, 11];
17174
- case 9: return [4 /*yield*/, findKey(params.apiGetter, ProgramKey.EProgramId.Mapbox, null)];
17175
- case 10:
17381
+ return [3 /*break*/, 14];
17382
+ case 12: return [4 /*yield*/, findKey(params.apiGetter, ProgramKey.EProgramId.Mapbox, null)];
17383
+ case 13:
17176
17384
  _b = _c.sent();
17177
- _c.label = 11;
17178
- case 11:
17385
+ _c.label = 14;
17386
+ case 14:
17179
17387
  mapboxKey = _b;
17180
17388
  provider = new UrlTemplateImageryProvider({
17181
17389
  url: "https://api.mapbox.com/styles/v1/"
@@ -17183,13 +17391,13 @@ var TileRenderEngine;
17183
17391
  "/tiles/256/{z}/{x}/{y}?access_token="
17184
17392
  + mapboxKey
17185
17393
  });
17186
- return [3 /*break*/, 12];
17187
- case 12:
17394
+ return [3 /*break*/, 15];
17395
+ case 15:
17188
17396
  if (provider) {
17189
17397
  layer = createImageryLayer(provider);
17190
17398
  }
17191
- _c.label = 13;
17192
- case 13:
17399
+ _c.label = 16;
17400
+ case 16:
17193
17401
  if (layer) {
17194
17402
  layer._bId = bId;
17195
17403
  layer._bName = tile.Name;
@@ -17356,7 +17564,7 @@ var TileRenderEngine;
17356
17564
  (function (Navigator) {
17357
17565
  function GetOrCreateLayer(params) {
17358
17566
  return __awaiter(this, void 0, void 0, function () {
17359
- var viewer, apiGetter, meta, enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, boundaries, settings, minLat, maxLat, minLon, maxLon, minLevel, maxLevel, hasLevels, settings_1, _a, cesiumIonKey, _b, mapboxKey, _c, layer;
17567
+ var viewer, apiGetter, meta, CESIUM, enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, boundaries, settings, minLat, maxLat, minLon, maxLon, minLevel, maxLevel, hasLevels, url, settings_1, _a, cesiumIonKey, _b, mapboxKey, _c, layer;
17360
17568
  return __generator(this, function (_d) {
17361
17569
  switch (_d.label) {
17362
17570
  case 0:
@@ -17364,6 +17572,7 @@ var TileRenderEngine;
17364
17572
  if (!apiGetter) {
17365
17573
  apiGetter = ENVIRONMENT.Api().GetBruceGetter();
17366
17574
  }
17575
+ CESIUM = Cesium;
17367
17576
  enabled = gatherEnabledImageries(viewer);
17368
17577
  for (i = 0; i < enabled.length; i++) {
17369
17578
  layer = enabled[i];
@@ -17378,7 +17587,7 @@ var TileRenderEngine;
17378
17587
  return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
17379
17588
  case 1:
17380
17589
  provider = _d.sent();
17381
- return [3 /*break*/, 19];
17590
+ return [3 /*break*/, 28];
17382
17591
  case 2:
17383
17592
  api = apiGetter.getApi(meta.accountId);
17384
17593
  // Ensure regional url is loaded.
@@ -17408,8 +17617,27 @@ var TileRenderEngine;
17408
17617
  minLevel = settings === null || settings === void 0 ? void 0 : settings.levelMin;
17409
17618
  maxLevel = settings === null || settings === void 0 ? void 0 : settings.levelMax;
17410
17619
  hasLevels = !isNaN(minLevel) && !isNaN(maxLevel);
17411
- if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 5];
17412
- provider = new TileMapServiceImageryProvider({
17620
+ if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 8];
17621
+ if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 6];
17622
+ url = Tileset.GetPublicFileUrl({
17623
+ api: api,
17624
+ tilesetId: meta.tilesetId,
17625
+ file: "",
17626
+ viaCdn: true,
17627
+ viaCdnCacheToken: tileset.generateVersion
17628
+ });
17629
+ return [4 /*yield*/, CESIUM.TileMapServiceImageryProvider.fromUrl(url, {
17630
+ fileExtension: "png",
17631
+ // Tested to not cause increased lag.
17632
+ rectangle: boundaries,
17633
+ maximumLevel: hasLevels ? maxLevel : undefined,
17634
+ minimumLevel: hasLevels ? minLevel : undefined,
17635
+ })];
17636
+ case 5:
17637
+ provider = _d.sent();
17638
+ return [3 /*break*/, 7];
17639
+ case 6:
17640
+ provider = new CESIUM.TileMapServiceImageryProvider({
17413
17641
  url: Tileset.GetPublicFileUrl({
17414
17642
  api: api,
17415
17643
  tilesetId: meta.tilesetId,
@@ -17423,43 +17651,53 @@ var TileRenderEngine;
17423
17651
  maximumLevel: hasLevels ? maxLevel : undefined,
17424
17652
  minimumLevel: hasLevels ? minLevel : undefined,
17425
17653
  });
17426
- return [3 /*break*/, 19];
17427
- case 5:
17428
- if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 18];
17654
+ _d.label = 7;
17655
+ case 7: return [3 /*break*/, 28];
17656
+ case 8:
17657
+ if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 27];
17429
17658
  settings_1 = tileset.settings;
17430
17659
  _a = settings_1.mapType;
17431
17660
  switch (_a) {
17432
- case Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 6];
17433
- case Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 10];
17434
- case Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 14];
17435
- case Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 15];
17436
- case Tileset.Settings.EExternalMapType.CustomTemplate: return [3 /*break*/, 16];
17661
+ case Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 9];
17662
+ case Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 16];
17663
+ case Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 20];
17664
+ case Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 21];
17665
+ case Tileset.Settings.EExternalMapType.CustomTemplate: return [3 /*break*/, 25];
17437
17666
  }
17438
- return [3 /*break*/, 17];
17439
- case 6:
17440
- if (!settings_1.key) return [3 /*break*/, 7];
17667
+ return [3 /*break*/, 26];
17668
+ case 9:
17669
+ if (!settings_1.key) return [3 /*break*/, 10];
17441
17670
  _b = settings_1.key;
17442
- return [3 /*break*/, 9];
17443
- case 7: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.CesiumIon, null)];
17444
- case 8:
17671
+ return [3 /*break*/, 12];
17672
+ case 10: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.CesiumIon, null)];
17673
+ case 11:
17445
17674
  _b = _d.sent();
17446
- _d.label = 9;
17447
- case 9:
17675
+ _d.label = 12;
17676
+ case 12:
17448
17677
  cesiumIonKey = _b;
17449
- provider = new IonImageryProvider({
17678
+ if (!IonImageryProvider.hasOwnProperty("fromAssetId")) return [3 /*break*/, 14];
17679
+ return [4 /*yield*/, CESIUM.IonImageryProvider.fromAssetId(Number(settings_1.externalId), {
17680
+ accessToken: cesiumIonKey
17681
+ })];
17682
+ case 13:
17683
+ provider = _d.sent();
17684
+ return [3 /*break*/, 15];
17685
+ case 14:
17686
+ provider = new CESIUM.IonImageryProvider({
17450
17687
  assetId: Number(settings_1.externalId),
17451
17688
  accessToken: cesiumIonKey
17452
17689
  });
17453
- return [3 /*break*/, 17];
17454
- case 10:
17455
- if (!settings_1.key) return [3 /*break*/, 11];
17690
+ _d.label = 15;
17691
+ case 15: return [3 /*break*/, 26];
17692
+ case 16:
17693
+ if (!settings_1.key) return [3 /*break*/, 17];
17456
17694
  _c = settings_1.key;
17457
- return [3 /*break*/, 13];
17458
- case 11: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
17459
- case 12:
17695
+ return [3 /*break*/, 19];
17696
+ case 17: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
17697
+ case 18:
17460
17698
  _c = _d.sent();
17461
- _d.label = 13;
17462
- case 13:
17699
+ _d.label = 19;
17700
+ case 19:
17463
17701
  mapboxKey = _c;
17464
17702
  provider = new UrlTemplateImageryProvider({
17465
17703
  url: "https://api.mapbox.com/styles/v1/"
@@ -17467,8 +17705,8 @@ var TileRenderEngine;
17467
17705
  "/tiles/256/{z}/{x}/{y}?access_token="
17468
17706
  + mapboxKey
17469
17707
  });
17470
- return [3 /*break*/, 17];
17471
- case 14:
17708
+ return [3 /*break*/, 26];
17709
+ case 20:
17472
17710
  provider = new OpenStreetMapImageryProvider({
17473
17711
  url: settings_1.url,
17474
17712
  fileExtension: prepareFileExt(settings_1.fileExtension),
@@ -17477,9 +17715,21 @@ var TileRenderEngine;
17477
17715
  // maximumLevel: hasLevels ? maxLevel : undefined,
17478
17716
  // minimumLevel: hasLevels ? minLevel : undefined,
17479
17717
  });
17480
- return [3 /*break*/, 17];
17481
- case 15:
17482
- provider = new TileMapServiceImageryProvider({
17718
+ return [3 /*break*/, 26];
17719
+ case 21:
17720
+ if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 23];
17721
+ return [4 /*yield*/, CESIUM.TileMapServiceImageryProvider.fromUrl(settings_1.url, {
17722
+ fileExtension: prepareFileExt(settings_1.fileExtension),
17723
+ // Unused until tested properly. In the past these settings caused large lag.
17724
+ // rectangle: boundaries,
17725
+ // maximumLevel: hasLevels ? maxLevel : undefined,
17726
+ // minimumLevel: hasLevels ? minLevel : undefined,
17727
+ })];
17728
+ case 22:
17729
+ provider = _d.sent();
17730
+ return [3 /*break*/, 24];
17731
+ case 23:
17732
+ provider = new CESIUM.TileMapServiceImageryProvider({
17483
17733
  url: settings_1.url,
17484
17734
  fileExtension: prepareFileExt(settings_1.fileExtension),
17485
17735
  // Unused until tested properly. In the past these settings caused large lag.
@@ -17487,14 +17737,15 @@ var TileRenderEngine;
17487
17737
  // maximumLevel: hasLevels ? maxLevel : undefined,
17488
17738
  // minimumLevel: hasLevels ? minLevel : undefined,
17489
17739
  });
17490
- return [3 /*break*/, 17];
17491
- case 16:
17740
+ _d.label = 24;
17741
+ case 24: return [3 /*break*/, 26];
17742
+ case 25:
17492
17743
  provider = new UrlTemplateImageryProvider({
17493
17744
  url: settings_1.url
17494
17745
  });
17495
- return [3 /*break*/, 17];
17496
- case 17: return [3 /*break*/, 19];
17497
- case 18:
17746
+ return [3 /*break*/, 26];
17747
+ case 26: return [3 /*break*/, 28];
17748
+ case 27:
17498
17749
  if (tileset.type === Tileset.EType.EntitiesMap) {
17499
17750
  provider = new UrlTemplateImageryProvider({
17500
17751
  url: Tileset.GetPublicFileUrl({
@@ -17512,8 +17763,8 @@ var TileRenderEngine;
17512
17763
  // maximumLevel: hasLevels ? maxLevel : undefined,
17513
17764
  });
17514
17765
  }
17515
- _d.label = 19;
17516
- case 19:
17766
+ _d.label = 28;
17767
+ case 28:
17517
17768
  if (provider) {
17518
17769
  layer = viewer.imageryLayers.addImageryProvider(provider);
17519
17770
  layer._bMeta = meta;
@@ -17634,7 +17885,7 @@ var TileRenderEngine;
17634
17885
  function Render(params) {
17635
17886
  var _a;
17636
17887
  return __awaiter(this, void 0, void 0, function () {
17637
- var bId, curProvider, provider, id;
17888
+ var bId, curProvider, CESIUM, provider, id;
17638
17889
  return __generator(this, function (_b) {
17639
17890
  switch (_b.label) {
17640
17891
  case 0:
@@ -17643,23 +17894,32 @@ var TileRenderEngine;
17643
17894
  if (curProvider._bId && curProvider._bId === bId) {
17644
17895
  return [2 /*return*/];
17645
17896
  }
17897
+ CESIUM = Cesium;
17646
17898
  provider = null;
17647
17899
  if (!isLegacyTerrainDefault(params.data.Name)) return [3 /*break*/, 2];
17648
17900
  id = legacyTerrIdToDefaultId(params.data.Name);
17649
17901
  return [4 /*yield*/, renderDefaultTerrTile(id)];
17650
17902
  case 1:
17651
17903
  provider = (_b.sent());
17652
- return [3 /*break*/, 3];
17904
+ return [3 /*break*/, 5];
17653
17905
  case 2:
17654
- if (params.data.SourceUrl) {
17655
- provider = new CesiumTerrainProvider({
17656
- url: params.data.SourceUrl,
17906
+ if (!params.data.SourceUrl) return [3 /*break*/, 5];
17907
+ if (!CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 4];
17908
+ return [4 /*yield*/, CESIUM.CesiumTerrainProvider.fromUrl(params.data.SourceUrl, {
17657
17909
  requestWaterMask: params.data.RequestWaterMask,
17658
17910
  requestVertexNormals: true
17659
- });
17660
- }
17661
- _b.label = 3;
17911
+ })];
17662
17912
  case 3:
17913
+ provider = (_b.sent());
17914
+ return [3 /*break*/, 5];
17915
+ case 4:
17916
+ provider = new CESIUM.CesiumTerrainProvider({
17917
+ url: params.data.SourceUrl,
17918
+ requestWaterMask: params.data.RequestWaterMask,
17919
+ requestVertexNormals: true
17920
+ });
17921
+ _b.label = 5;
17922
+ case 5:
17663
17923
  if (provider) {
17664
17924
  provider._bId = bId;
17665
17925
  provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
@@ -17760,7 +18020,7 @@ var TileRenderEngine;
17760
18020
  function Render(params) {
17761
18021
  var _a;
17762
18022
  return __awaiter(this, void 0, void 0, function () {
17763
- var iteration, enabledMeta, provider_1, leave, defaultTerr, provider, api, tileset, url, vertexes, settings;
18023
+ var iteration, CESIUM, enabledMeta, provider_1, leave, defaultTerr, provider, api, tileset, url, vertexes, settings;
17764
18024
  return __generator(this, function (_b) {
17765
18025
  switch (_b.label) {
17766
18026
  case 0:
@@ -17768,6 +18028,7 @@ var TileRenderEngine;
17768
18028
  params.apiGetter = ENVIRONMENT.Api().GetBruceGetter();
17769
18029
  }
17770
18030
  iteration = newIteration(params.viewer, "terrain");
18031
+ CESIUM = Cesium;
17771
18032
  enabledMeta = (_a = params.viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a._bMeta;
17772
18033
  if ((enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.tilesetId) === params.tile.tilesetId &&
17773
18034
  (enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.accountId) === params.tile.accountId) {
@@ -17797,7 +18058,7 @@ var TileRenderEngine;
17797
18058
  return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
17798
18059
  case 1:
17799
18060
  provider = (_b.sent());
17800
- return [3 /*break*/, 5];
18061
+ return [3 /*break*/, 7];
17801
18062
  case 2:
17802
18063
  api = params.apiGetter.getApi(params.tile.accountId);
17803
18064
  // Ensure regional url is loaded.
@@ -17840,14 +18101,21 @@ var TileRenderEngine;
17840
18101
  else {
17841
18102
  console.error("Invalid tileset type.", tileset);
17842
18103
  }
17843
- if (url) {
17844
- provider = new CesiumTerrainProvider({
17845
- url: url,
18104
+ if (!url) return [3 /*break*/, 7];
18105
+ if (!CESIUM.CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 6];
18106
+ return [4 /*yield*/, CESIUM.CesiumTerrainProvider.fromUrl(url, {
17846
18107
  requestVertexNormals: vertexes
17847
- });
17848
- }
17849
- _b.label = 5;
18108
+ })];
17850
18109
  case 5:
18110
+ provider = (_b.sent());
18111
+ return [3 /*break*/, 7];
18112
+ case 6:
18113
+ provider = new CESIUM.CesiumTerrainProvider({
18114
+ url: url,
18115
+ requestVertexNormals: vertexes
18116
+ });
18117
+ _b.label = 7;
18118
+ case 7:
17851
18119
  if (provider) {
17852
18120
  provider._bMeta = {
17853
18121
  accountId: params.tile.accountId,
@@ -18949,7 +19217,7 @@ var CesiumViewMonitor;
18949
19217
  CesiumViewMonitor$$1.Monitor = Monitor;
18950
19218
  })(CesiumViewMonitor || (CesiumViewMonitor = {}));
18951
19219
 
18952
- var VERSION$1 = "3.1.8";
19220
+ var VERSION$1 = "3.2.0";
18953
19221
 
18954
19222
  export { VERSION$1 as VERSION, CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, MenuItemCreator, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, TilesetArbRenderManager, TilesetEntitiesRenderManager, TilesetOsmRenderManager, TilesetPointcloudRenderManager, TilesetGooglePhotosRenderManager, DataSourceStaticKmlManager, RelationsRenderManager, SharedGetters, CesiumParabola, EntityLabel, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, Draw3dPolygon, Draw3dPolyline };
18955
19223
  //# sourceMappingURL=bruce-cesium.es5.js.map