bruce-cesium 2.7.3 → 2.7.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.
@@ -1,6 +1,6 @@
1
1
  import { BruceEvent, Cartes, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, DelayQueue, BatchedDataGetter, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera, AbstractApi, EntityAttachment, EntityAttachmentType, EntityAttribute } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, Color, HeightReference, Cartesian3, DistanceDisplayCondition, NearFarScalar, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, HeadingPitchRoll, Math as Math$1, Transforms, ColorBlendMode, JulianDate, Cartesian2, CallbackProperty, Rectangle, SceneMode, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, Cesium3DTileset, Matrix4, Matrix3, IonResource, EllipsoidGeodesic, EllipsoidTerrainProvider, sampleTerrainMostDetailed, defined, Model, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, OrthographicFrustum, EasingFunction, PolygonPipeline, CesiumInspector, ColorMaterialProperty, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, Ion, BoundingSphere } from 'cesium';
3
+ import { Cartographic, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, JulianDate, SceneMode, Entity, Primitive, Cesium3DTileFeature, HeightReference, DistanceDisplayCondition, NearFarScalar, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, HeadingPitchRoll, Transforms, ColorBlendMode, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, OrthographicFrustum, EasingFunction, EllipsoidTerrainProvider, CesiumInspector, defined, Cesium3DTileset, Matrix4, Matrix3, IonResource, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, Model, PolygonPipeline, ColorMaterialProperty, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, Ion, BoundingSphere } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -1766,7 +1766,7 @@ function getName(api, entity) {
1766
1766
  }
1767
1767
  function getStyle(api, entity, styleId) {
1768
1768
  return __awaiter(this, void 0, void 0, function () {
1769
- var style, e_2, typeId, type, e_3;
1769
+ var style, e_2, typeId, type, e_3, hideError, error, code;
1770
1770
  return __generator(this, function (_a) {
1771
1771
  switch (_a.label) {
1772
1772
  case 0:
@@ -1809,7 +1809,18 @@ function getStyle(api, entity, styleId) {
1809
1809
  return [3 /*break*/, 9];
1810
1810
  case 8:
1811
1811
  e_3 = _a.sent();
1812
- console.error(e_3);
1812
+ hideError = false;
1813
+ // TODO: we need a util for extracting code + message rather than writing all this every time.
1814
+ if (e_3 && typeof e_3 == "object" && e_3.ERROR) {
1815
+ error = e_3.ERROR;
1816
+ code = error && typeof error == "object" ? error.Code : "";
1817
+ // Avoiding logging a common error.
1818
+ // This happens when rendering entities that don't have records.
1819
+ hideError = String(code).toLowerCase() == "notfound";
1820
+ }
1821
+ if (!hideError) {
1822
+ console.error(e_3);
1823
+ }
1813
1824
  return [3 /*break*/, 9];
1814
1825
  case 9: return [2 /*return*/, style];
1815
1826
  }
@@ -3066,6 +3077,7 @@ var EntityRenderEngine;
3066
3077
  */
3067
3078
  var CesiumParabola = /** @class */ (function () {
3068
3079
  function CesiumParabola(params) {
3080
+ this.disposed = false;
3069
3081
  this.color = "white";
3070
3082
  this.width = 2;
3071
3083
  this.duration = 10;
@@ -3147,6 +3159,9 @@ var CesiumParabola = /** @class */ (function () {
3147
3159
  };
3148
3160
  CesiumParabola.prototype.Animate = function () {
3149
3161
  var _this = this;
3162
+ if (this.disposed) {
3163
+ return null;
3164
+ }
3150
3165
  if (this.parabola && !this.viewer.entities.contains(this.parabola)) {
3151
3166
  this.viewer.entities.add(this.parabola);
3152
3167
  }
@@ -3178,9 +3193,34 @@ var CesiumParabola = /** @class */ (function () {
3178
3193
  var RATE_PER_SECOND = 1000 / 40;
3179
3194
  var SEC_DURATION = this.duration;
3180
3195
  var HEIGHT_DISTANCE_RATIO = this.heightDistanceRatio;
3181
- var TOTAL_POINTS = Math.max(50, Math.min(1000, TOTAL_LENGTH * 0.1));
3182
- var POINT_LENGTH = TOTAL_LENGTH / TOTAL_POINTS;
3183
- var TICK_LENGTH_INC = SEC_DURATION == 0 ? TOTAL_LENGTH : TOTAL_POINTS / (RATE_PER_SECOND * SEC_DURATION);
3196
+ var TOTAL_POINTS = null;
3197
+ var POINT_LENGTH = null;
3198
+ var TICK_LENGTH_INC = null;
3199
+ // Updates TOTAL_POINTS, POINT_LENGTH, and TICK_LENGTH_INC based on current TOTAL_LENGTH and camera position.
3200
+ // We want less points the further away the camera is.
3201
+ var updateParams = function () {
3202
+ var _a, _b;
3203
+ // TODO: Do distance to parabola line instead.
3204
+ var MIN_POINTS = 30;
3205
+ var totalPoints = 80;
3206
+ var cameraHeight = (_b = (_a = _this.viewer.camera) === null || _a === void 0 ? void 0 : _a.positionCartographic) === null || _b === void 0 ? void 0 : _b.height;
3207
+ if (isNaN(cameraHeight) || cameraHeight >= 100000) {
3208
+ totalPoints = MIN_POINTS;
3209
+ }
3210
+ else if (cameraHeight >= 10000) {
3211
+ totalPoints = 50;
3212
+ }
3213
+ else if (cameraHeight >= 1000) {
3214
+ totalPoints = 80;
3215
+ }
3216
+ else if (cameraHeight >= 100) {
3217
+ totalPoints = 100;
3218
+ }
3219
+ TOTAL_POINTS = Math.max(MIN_POINTS, Math.min(totalPoints, TOTAL_LENGTH * 0.1));
3220
+ POINT_LENGTH = TOTAL_LENGTH / TOTAL_POINTS;
3221
+ TICK_LENGTH_INC = SEC_DURATION == 0 ? TOTAL_LENGTH : TOTAL_POINTS / (RATE_PER_SECOND * SEC_DURATION);
3222
+ };
3223
+ updateParams();
3184
3224
  var curPoint = 0;
3185
3225
  var quadraticKey = null;
3186
3226
  var quadratic = null;
@@ -3336,30 +3376,45 @@ var CesiumParabola = /** @class */ (function () {
3336
3376
  for (var i = 0; i < totalCycles; i++) {
3337
3377
  posses.push(getPosition(i));
3338
3378
  }
3339
- posses.push(getPosition(increment + chips));
3379
+ if (chips) {
3380
+ posses.push(getPosition(increment + chips));
3381
+ }
3340
3382
  if (posses.find(function (x) { return !x || !Cartes.ValidateCartes3(x); })) {
3341
3383
  return;
3342
3384
  }
3343
3385
  _this.curPoints = posses;
3344
3386
  };
3387
+ var lastTickDate = new Date();
3388
+ var finished = false;
3345
3389
  var doTick = function () {
3346
- var p1 = _this.curPos1;
3347
- var p2 = _this.curPos2;
3348
- var newLength = p1 && p2 ? Cartesian3.distance(p1, p2) : -1;
3349
- if (newLength > 0 && newLength != TOTAL_LENGTH) {
3350
- TOTAL_LENGTH = newLength;
3351
- TOTAL_POINTS = Math.max(50, Math.min(1000, TOTAL_LENGTH * 0.1));
3352
- POINT_LENGTH = TOTAL_LENGTH / TOTAL_POINTS;
3353
- TICK_LENGTH_INC = SEC_DURATION == 0 ? TOTAL_LENGTH : TOTAL_POINTS / (RATE_PER_SECOND * SEC_DURATION);
3354
- }
3355
- prepareQuadratic();
3356
- if (quadratic) {
3357
- if (curPoint < TOTAL_POINTS) {
3358
- curPoint += TICK_LENGTH_INC;
3390
+ var curDate = new Date();
3391
+ var seconds = (curDate.getTime() - lastTickDate.getTime()) / 1000;
3392
+ var ticks = seconds * RATE_PER_SECOND;
3393
+ if (!isNaN(ticks) && ticks >= 1) {
3394
+ lastTickDate = curDate;
3395
+ var p1 = _this.curPos1;
3396
+ var p2 = _this.curPos2;
3397
+ var newLength = p1 && p2 ? Cartesian3.distance(p1, p2) : -1;
3398
+ if (newLength > 0 && newLength != TOTAL_LENGTH) {
3399
+ TOTAL_LENGTH = newLength;
3400
+ updateParams();
3401
+ }
3402
+ prepareQuadratic();
3403
+ if (quadratic) {
3404
+ if (curPoint < TOTAL_POINTS) {
3405
+ curPoint += (TICK_LENGTH_INC * ticks);
3406
+ }
3407
+ updatePoints();
3408
+ }
3409
+ _this.viewer.scene.requestRender();
3410
+ if (curPoint >= TOTAL_POINTS && !finished) {
3411
+ finished = true;
3412
+ // We can make the interval update super slow now.
3413
+ // We keep it updating in case the positions move.
3414
+ clearInterval(_this.animateInterval);
3415
+ _this.animateInterval = setInterval(doTick, 3000);
3359
3416
  }
3360
- updatePoints();
3361
3417
  }
3362
- _this.viewer.scene.requestRender();
3363
3418
  };
3364
3419
  this.animateInterval = setInterval(doTick, RATE_PER_SECOND);
3365
3420
  return {
@@ -3369,6 +3424,7 @@ var CesiumParabola = /** @class */ (function () {
3369
3424
  };
3370
3425
  CesiumParabola.prototype.Dispose = function () {
3371
3426
  var _this = this;
3427
+ this.disposed = true;
3372
3428
  clearTimeout(this.retryTimeout);
3373
3429
  clearInterval(this.animateInterval);
3374
3430
  var cEntities = [
@@ -5474,16 +5530,14 @@ var EntitiesRenderManager;
5474
5530
  viewer: this.viewer,
5475
5531
  // Unfortunately this searches as an "AND" rather than "OR" which does not meet our needs here.
5476
5532
  // So for multiple tags we'll manually sort on UI end...
5477
- tagIds: tagsToRender.length == 1 ? tagsToRender : [],
5533
+ tagIds: (tagsToRender === null || tagsToRender === void 0 ? void 0 : tagsToRender.length) ? tagsToRender : [],
5478
5534
  debugShowBounds: Boolean(window === null || window === void 0 ? void 0 : window.ENTITIES_RENDER_MANAGER_SHOW_BOUNDS),
5479
5535
  cdn: this.item.cdnEnabled
5480
5536
  });
5481
5537
  var minMax = RenderManager.GetZoomMinMax({
5482
5538
  zoomControl: this.item.CameraZoomSettings
5483
5539
  });
5484
- // Unfortunately this searches as an "AND" rather than "OR" which does not meet our needs here.
5485
- // So for multiple tags we'll manually sort on UI end...
5486
- this.getter.IncludeMenuItem(this.item.id, tagsToRender.length == 1 ? tagsToRender : [], minMax[0], minMax[1]);
5540
+ this.getter.IncludeMenuItem(this.item.id, (tagsToRender === null || tagsToRender === void 0 ? void 0 : tagsToRender.length) ? tagsToRender : [], minMax[0], minMax[1]);
5487
5541
  this.getterSub = this.getter.OnUpdate.Subscribe(function (entities) {
5488
5542
  if (isTagItem) {
5489
5543
  _this.distributeForRender(entities.filter(function (entity) {
@@ -9115,6 +9169,12 @@ var RelationsRenderManager;
9115
9169
  })];
9116
9170
  case 1:
9117
9171
  cEntities = _c.sent();
9172
+ if (this.disposed) {
9173
+ this.register.RemoveRegos({
9174
+ menuItemId: this.item.id
9175
+ });
9176
+ return [2 /*return*/];
9177
+ }
9118
9178
  for (i = 0; i < relations.length; i++) {
9119
9179
  relation = relations[i];
9120
9180
  key = RelationRenderEngine.GetRenderGroupId(relation);
@@ -12385,71 +12445,43 @@ var ViewRenderEngine;
12385
12445
  })(ViewRenderEngine || (ViewRenderEngine = {}));
12386
12446
 
12387
12447
  var DEFAULT_SMOOTH_MULTIPLIER = 0;
12388
- function avgDistanceFromPointPair(refPoint, pos1, pos2) {
12389
- var carto1 = Cartographic.fromCartesian(refPoint);
12390
- var carto2 = Cartographic.fromCartesian(pos1);
12391
- var carto3 = Cartographic.fromCartesian(pos2);
12392
- var x1 = carto1.longitude;
12393
- var y1 = carto1.latitude;
12394
- var x2 = carto2.longitude;
12395
- var y2 = carto2.latitude;
12396
- var x3 = carto3.longitude;
12397
- var y3 = carto3.latitude;
12398
- var A = x1 - x2;
12399
- var B = y1 - y2;
12400
- var C = x3 - x2;
12401
- var D = y3 - y2;
12402
- var dot = A * C + B * D;
12403
- var lenSq = C * C + D * D;
12404
- var param = dot / lenSq;
12405
- var xx;
12406
- var yy;
12407
- if (param < 0 || x2 == x3 && y2 == y3) {
12408
- xx = x2;
12409
- yy = y2;
12410
- }
12411
- else if (param > 1) {
12412
- xx = x3;
12413
- yy = y3;
12448
+ function distanceToSegment$1(p, v, w) {
12449
+ var l2 = Cartesian3.distanceSquared(v, w);
12450
+ if (l2 === 0) {
12451
+ return Cartesian3.distance(p, v);
12414
12452
  }
12415
- else {
12416
- xx = x2 + param * C;
12417
- yy = y2 + param * D;
12453
+ var t = Cartesian3.dot(Cartesian3.subtract(p, v, new Cartesian3()), Cartesian3.subtract(w, v, new Cartesian3())) / l2;
12454
+ if (t < 0) {
12455
+ return Cartesian3.distance(p, v);
12456
+ }
12457
+ if (t > 1) {
12458
+ return Cartesian3.distance(p, w);
12418
12459
  }
12419
- var dx = x1 - xx;
12420
- var dy = y1 - yy;
12421
- return Math.sqrt(dx * dx + dy * dy);
12460
+ var projection = Cartesian3.add(v, Cartesian3.multiplyByScalar(Cartesian3.subtract(w, v, new Cartesian3()), t, new Cartesian3()), new Cartesian3());
12461
+ return Cartesian3.distance(p, projection);
12422
12462
  }
12463
+ /**
12464
+ * Returns splice index into a list of positions to insert a new position.
12465
+ * @param positions List of positions to insert into.
12466
+ * @param pos3d New position to insert.
12467
+ * @returns Index to insert at.
12468
+ */
12423
12469
  function getInsertIndex(positions, pos3d) {
12424
12470
  if (positions.length < 2) {
12425
12471
  return 0;
12426
12472
  }
12473
+ var minDistance = Infinity;
12427
12474
  var index = -1;
12428
- if (positions) {
12429
- var distance = void 0;
12430
- for (var j = 0; j < positions.length; j++) {
12431
- var pos1 = positions[j];
12432
- var pos2 = void 0;
12433
- var pos2Index = -1;
12434
- if (j >= positions.length - 1) {
12435
- pos2 = positions[0];
12436
- pos2Index = 0;
12437
- }
12438
- else {
12439
- pos2 = positions[j + 1];
12440
- pos2Index = j + 1;
12441
- }
12442
- if (Cartes.ValidateCartes3(pos1), Cartes.ValidateCartes3(pos2)) {
12443
- var length_1 = avgDistanceFromPointPair(pos3d, pos1, pos2);
12444
- if (index == -1 || length_1 < distance) {
12445
- var insertIndex = pos2Index == 0 ? 0 : j > pos2Index ? j : pos2Index;
12446
- index = insertIndex;
12447
- distance = length_1;
12448
- }
12449
- }
12475
+ for (var i = 0; i < positions.length; i++) {
12476
+ var pos1 = positions[i];
12477
+ var pos2 = i < positions.length - 1 ? positions[i + 1] : positions[0];
12478
+ var dist = distanceToSegment$1(pos3d, pos1, pos2);
12479
+ if (dist < minDistance) {
12480
+ minDistance = dist;
12481
+ index = i + 1;
12450
12482
  }
12451
12483
  }
12452
- return index == -1 ? 0 : index;
12484
+ return index;
12453
12485
  }
12454
12486
  var OUTLINE_COLOR = "rgba(51, 177, 255, 0.2)";
12455
12487
  var FILL_COLOR = "#33B1FF";
@@ -12852,71 +12884,61 @@ var Draw3dPolygon = /** @class */ (function () {
12852
12884
  }());
12853
12885
 
12854
12886
  var DEFAULT_SMOOTH_MULTIPLIER$1 = 0;
12855
- function avgDistanceFromPointPair$1(refPoint, pos1, pos2) {
12856
- var carto1 = Cartographic.fromCartesian(refPoint);
12857
- var carto2 = Cartographic.fromCartesian(pos1);
12858
- var carto3 = Cartographic.fromCartesian(pos2);
12859
- var x1 = carto1.longitude;
12860
- var y1 = carto1.latitude;
12861
- var x2 = carto2.longitude;
12862
- var y2 = carto2.latitude;
12863
- var x3 = carto3.longitude;
12864
- var y3 = carto3.latitude;
12865
- var A = x1 - x2;
12866
- var B = y1 - y2;
12867
- var C = x3 - x2;
12868
- var D = y3 - y2;
12869
- var dot = A * C + B * D;
12870
- var lenSq = C * C + D * D;
12871
- var param = dot / lenSq;
12872
- var xx;
12873
- var yy;
12874
- if (param < 0 || x2 == x3 && y2 == y3) {
12875
- xx = x2;
12876
- yy = y2;
12877
- }
12878
- else if (param > 1) {
12879
- xx = x3;
12880
- yy = y3;
12887
+ function distanceToSegment$2(p, v, w) {
12888
+ var l2 = Cartesian3.distanceSquared(v, w);
12889
+ if (l2 === 0) {
12890
+ return Cartesian3.distance(p, v);
12881
12891
  }
12882
- else {
12883
- xx = x2 + param * C;
12884
- yy = y2 + param * D;
12892
+ var t = Cartesian3.dot(Cartesian3.subtract(p, v, new Cartesian3()), Cartesian3.subtract(w, v, new Cartesian3())) / l2;
12893
+ if (t < 0) {
12894
+ return Cartesian3.distance(p, v);
12895
+ }
12896
+ if (t > 1) {
12897
+ return Cartesian3.distance(p, w);
12885
12898
  }
12886
- var dx = x1 - xx;
12887
- var dy = y1 - yy;
12888
- return Math.sqrt(dx * dx + dy * dy);
12899
+ var projection = Cartesian3.add(v, Cartesian3.multiplyByScalar(Cartesian3.subtract(w, v, new Cartesian3()), t, new Cartesian3()), new Cartesian3());
12900
+ return Cartesian3.distance(p, projection);
12889
12901
  }
12902
+ /**
12903
+ * Returns splice index into a list of positions to insert a new position.
12904
+ * @param positions List of positions to insert into.
12905
+ * @param pos3d New position to insert.
12906
+ * @returns Index to insert at.
12907
+ */
12890
12908
  function getInsertIndex$1(positions, pos3d) {
12891
12909
  if (positions.length < 2) {
12892
12910
  return 0;
12893
12911
  }
12894
- var index = 0;
12895
- if (positions) {
12896
- var marginalShift = function (pos) {
12897
- var SHIFT = 0.001;
12898
- pos = pos.clone();
12899
- return new Cartesian3(pos.x + SHIFT, pos.y + SHIFT, pos.z + SHIFT);
12900
- };
12901
- var distance = avgDistanceFromPointPair$1(pos3d, positions[0], marginalShift(positions[0]));
12902
- var endDistance = avgDistanceFromPointPair$1(pos3d, positions[positions.length - 1], marginalShift(positions[positions.length - 1]));
12903
- if (endDistance < distance) {
12904
- index = positions.length;
12905
- distance = endDistance;
12906
- }
12907
- for (var j = 0; j < positions.length; j++) {
12908
- var pos1 = positions[j];
12909
- var pos2 = positions[j + 1];
12910
- var pos2Index = j + 1;
12911
- if (Cartes.ValidateCartes3(pos1), Cartes.ValidateCartes3(pos2)) {
12912
- var length_1 = avgDistanceFromPointPair$1(pos3d, pos1, pos2);
12913
- if (length_1 < distance) {
12914
- var insertIndex = pos2Index == 0 ? 0 : j > pos2Index ? j : pos2Index;
12915
- index = insertIndex;
12916
- distance = length_1;
12917
- }
12918
- }
12919
- }
12912
+ var minDistance = Infinity;
12913
+ var index = -1;
12914
+ // Check against segments
12915
+ for (var i = 0; i < positions.length - 1; i++) {
12916
+ var pos1 = positions[i];
12917
+ var pos2 = positions[i + 1];
12918
+ var dist = distanceToSegment$2(pos3d, pos1, pos2);
12919
+ if (dist < minDistance) {
12920
+ minDistance = dist;
12921
+ index = i + 1;
12922
+ }
12923
+ }
12924
+ // Check against start point
12925
+ var startDist = Cartesian3.distance(pos3d, positions[0]);
12926
+ if (startDist <= minDistance) {
12927
+ index = 0;
12928
+ minDistance = startDist;
12929
+ console.log("Insert at start");
12930
+ }
12931
+ else {
12932
+ console.log("Start distance was longer than cur distance. ".concat(startDist, " > ").concat(minDistance));
12933
+ }
12934
+ // Check against end point
12935
+ var endDist = Cartesian3.distance(pos3d, positions[positions.length - 1]);
12936
+ if (endDist <= minDistance) {
12937
+ index = positions.length;
12938
+ console.log("Insert at end");
12939
+ }
12940
+ else {
12941
+ console.log("End distance was longer than cur distance. ".concat(endDist, " > ").concat(minDistance));
12920
12942
  }
12921
12943
  return index;
12922
12944
  }
@@ -15221,7 +15243,7 @@ var ViewerUtils;
15221
15243
  ViewerUtils.CreateWidgets = CreateWidgets;
15222
15244
  })(ViewerUtils || (ViewerUtils = {}));
15223
15245
 
15224
- var VERSION$1 = "2.7.3";
15246
+ var VERSION$1 = "2.7.5";
15225
15247
 
15226
15248
  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, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, Draw3dPolygon, Draw3dPolyline };
15227
15249
  //# sourceMappingURL=bruce-cesium.es5.js.map