bruce-cesium 3.7.5 → 3.7.7

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, ProjectViewTile, DelayQueue, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, Api, EntityRelationType, ENVIRONMENT, EntityCoords, EntitySource, MenuItem, EntityRelation, ProgramKey, AbstractApi, ProjectViewBookmark, EntityAttachment, EntityAttachmentType, EntityAttribute, ProjectView, ProjectViewLegacyTile, Camera } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, JulianDate, DistanceDisplayCondition, NearFarScalar, Model, Entity, HorizontalOrigin, VerticalOrigin, ConstantProperty, ConstantPositionProperty, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, ColorMaterialProperty, HeadingPitchRoll, Transforms, ColorBlendMode, SceneMode, Primitive, Cesium3DTileFeature, GeoJsonDataSource, Cesium3DTileColorBlendMode, HeadingPitchRange, Ion, Cesium3DTileStyle, KmlDataSource, SceneTransforms, OrthographicFrustum, EasingFunction, Cesium3DTileset, Matrix4, Matrix3, IonResource, EllipsoidTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, CesiumInspector, defined, ClockRange, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, BoundingSphere, GeometryInstance, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, ScreenSpaceEventHandler, ScreenSpaceEventType, CzmlDataSource, Quaternion, Intersect } from 'cesium';
3
+ import { Cartographic, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, JulianDate, DistanceDisplayCondition, NearFarScalar, Model, Entity, HorizontalOrigin, VerticalOrigin, ConstantProperty, ConstantPositionProperty, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, ColorMaterialProperty, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, SceneMode, GeoJsonDataSource, Cesium3DTileColorBlendMode, HeadingPitchRange, Ion, Cesium3DTileStyle, KmlDataSource, SceneTransforms, OrthographicFrustum, EasingFunction, EllipsoidTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, Cesium3DTileset, Matrix4, Matrix3, IonResource, CesiumInspector, defined, ClockRange, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, BoundingSphere, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, CzmlDataSource, Quaternion, Intersect } from 'cesium';
4
4
 
5
5
  /*! *****************************************************************************
6
6
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1280,12 +1280,11 @@ function calculateCurColor(viewer, graphic) {
1280
1280
  /**
1281
1281
  * Stores a copy of the color against a key within the graphic.
1282
1282
  * This lets us refer to it later if we need to change to it.
1283
- * @param viewer
1284
1283
  * @param key
1285
1284
  * @param color
1286
1285
  * @param graphic
1287
1286
  */
1288
- function storeColor(viewer, key, color, graphic) {
1287
+ function storeColor(key, color, graphic) {
1289
1288
  graphic[getStoreKey(key)] = (color === null || color === void 0 ? void 0 : color.clone) ? color.clone() : color;
1290
1289
  }
1291
1290
  /**
@@ -1305,7 +1304,7 @@ function getColor$1(viewer, key, graphic) {
1305
1304
  // We'll only store the default color.
1306
1305
  // Rest can be retrieved every time to get the latest setting value.
1307
1306
  if (color) {
1308
- storeColor(viewer, key, color, graphic);
1307
+ storeColor(key, color, graphic);
1309
1308
  }
1310
1309
  }
1311
1310
  else if (key == "select") {
@@ -1557,36 +1556,36 @@ var CesiumEntityStyler;
1557
1556
  }
1558
1557
  if (part instanceof Cesium3DTileFeature) {
1559
1558
  var opacity = getAppliedOpacity(part);
1560
- storeColor(viewer, "default", calculateCurColor(viewer, part), part);
1559
+ storeColor("default", calculateCurColor(viewer, part), part);
1561
1560
  refreshColor(viewer, part, opacity);
1562
1561
  }
1563
1562
  else if (part instanceof Entity) {
1564
1563
  if (part.billboard) {
1565
- storeColor(viewer, "default", calculateCurColor(viewer, part.billboard), part.billboard);
1564
+ storeColor("default", calculateCurColor(viewer, part.billboard), part.billboard);
1566
1565
  refreshColor(viewer, part.billboard, getAppliedOpacity(part.billboard));
1567
1566
  }
1568
1567
  if (part.model) {
1569
- storeColor(viewer, "default", calculateCurColor(viewer, part.model), part.model);
1568
+ storeColor("default", calculateCurColor(viewer, part.model), part.model);
1570
1569
  refreshColor(viewer, part.model, getAppliedOpacity(part.model));
1571
1570
  }
1572
1571
  if (part.polyline) {
1573
- storeColor(viewer, "default", calculateCurColor(viewer, part.polyline), part.polyline);
1572
+ storeColor("default", calculateCurColor(viewer, part.polyline), part.polyline);
1574
1573
  refreshColor(viewer, part.polyline, getAppliedOpacity(part.polyline));
1575
1574
  }
1576
1575
  if (part.polygon) {
1577
- storeColor(viewer, "default", calculateCurColor(viewer, part.polygon), part.polygon);
1576
+ storeColor("default", calculateCurColor(viewer, part.polygon), part.polygon);
1578
1577
  refreshColor(viewer, part.polygon, getAppliedOpacity(part.polygon));
1579
1578
  }
1580
1579
  if (part.corridor) {
1581
- storeColor(viewer, "default", calculateCurColor(viewer, part.corridor), part.corridor);
1580
+ storeColor("default", calculateCurColor(viewer, part.corridor), part.corridor);
1582
1581
  refreshColor(viewer, part.corridor, getAppliedOpacity(part.corridor));
1583
1582
  }
1584
1583
  if (part.point) {
1585
- storeColor(viewer, "default", calculateCurColor(viewer, part.point), part.point);
1584
+ storeColor("default", calculateCurColor(viewer, part.point), part.point);
1586
1585
  refreshColor(viewer, part.point, getAppliedOpacity(part.point));
1587
1586
  }
1588
1587
  if (part.ellipse) {
1589
- storeColor(viewer, "default", calculateCurColor(viewer, part.ellipse), part.ellipse);
1588
+ storeColor("default", calculateCurColor(viewer, part.ellipse), part.ellipse);
1590
1589
  refreshColor(viewer, part.ellipse, getAppliedOpacity(part.ellipse));
1591
1590
  }
1592
1591
  }
@@ -1621,36 +1620,36 @@ var CesiumEntityStyler;
1621
1620
  }
1622
1621
  if (part instanceof Cesium3DTileFeature) {
1623
1622
  var opacity = getAppliedOpacity(part);
1624
- storeColor(viewer, "default", params.color, part);
1623
+ storeColor("default", params.color, part);
1625
1624
  refreshColor(viewer, part, opacity);
1626
1625
  }
1627
1626
  else if (part instanceof Entity) {
1628
1627
  if (part.billboard) {
1629
- storeColor(viewer, "default", params.color, part.billboard);
1628
+ storeColor("default", params.color, part.billboard);
1630
1629
  refreshColor(viewer, part.billboard, getAppliedOpacity(part.billboard));
1631
1630
  }
1632
1631
  if (part.model) {
1633
- storeColor(viewer, "default", params.color, part.model);
1632
+ storeColor("default", params.color, part.model);
1634
1633
  refreshColor(viewer, part.model, getAppliedOpacity(part.model));
1635
1634
  }
1636
1635
  if (part.polyline) {
1637
- storeColor(viewer, "default", params.color, part.polyline);
1636
+ storeColor("default", params.color, part.polyline);
1638
1637
  refreshColor(viewer, part.polyline, getAppliedOpacity(part.polyline));
1639
1638
  }
1640
1639
  if (part.polygon) {
1641
- storeColor(viewer, "default", params.color, part.polygon);
1640
+ storeColor("default", params.color, part.polygon);
1642
1641
  refreshColor(viewer, part.polygon, getAppliedOpacity(part.polygon));
1643
1642
  }
1644
1643
  if (part.corridor) {
1645
- storeColor(viewer, "default", params.color, part.corridor);
1644
+ storeColor("default", params.color, part.corridor);
1646
1645
  refreshColor(viewer, part.corridor, getAppliedOpacity(part.corridor));
1647
1646
  }
1648
1647
  if (part.point) {
1649
- storeColor(viewer, "default", params.color, part.point);
1648
+ storeColor("default", params.color, part.point);
1650
1649
  refreshColor(viewer, part.point, getAppliedOpacity(part.point));
1651
1650
  }
1652
1651
  if (part.ellipse) {
1653
- storeColor(viewer, "default", params.color, part.ellipse);
1652
+ storeColor("default", params.color, part.ellipse);
1654
1653
  refreshColor(viewer, part.ellipse, getAppliedOpacity(part.ellipse));
1655
1654
  }
1656
1655
  }
@@ -4809,7 +4808,7 @@ var EntityRenderEngine;
4809
4808
  function Render(params) {
4810
4809
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
4811
4810
  return __awaiter(this, void 0, void 0, function () {
4812
- var groupRenderParams, i, entity, geometry, cEntities, models, multiGeometry, polygons, polylines, points, i, entity, id, zoomItem, displayType, existingRego, newRenderId, oldRenderId, mParams, mEntities, i, entity, id, cEntity, _loop_1, i, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
4811
+ var groupRenderParams, i, entity, geometry, updated, cEntities, models, multiGeometry, polygons, polylines, points, i, entity, id, zoomItem, displayType, existingRego, newRenderId, oldRenderId, mParams, mEntities, i, entity, id, cEntity, _loop_1, i, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
4813
4812
  return __generator(this, function (_m) {
4814
4813
  switch (_m.label) {
4815
4814
  case 0:
@@ -4829,7 +4828,8 @@ var EntityRenderEngine;
4829
4828
  entity.geometry = __assign(__assign(__assign({}, entity.geometry), geometry.MultiGeometry[0]), { MultiGeometry: [] });
4830
4829
  }
4831
4830
  }
4832
- cEntities = {};
4831
+ updated = new Map();
4832
+ cEntities = new Map();
4833
4833
  models = [];
4834
4834
  multiGeometry = [];
4835
4835
  polygons = [];
@@ -4865,18 +4865,19 @@ var EntityRenderEngine;
4865
4865
  // If historic metadata is different then it's also stale.
4866
4866
  ((existingRego === null || existingRego === void 0 ? void 0 : existingRego.historicDateTime) == ((_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d.historicDateTime))) {
4867
4867
  // No sorting category needed. Already rendered the way we want.
4868
- cEntities[id] = existingRego.visual;
4868
+ cEntities.set(id, existingRego.visual);
4869
4869
  }
4870
4870
  else {
4871
4871
  // Add so we can re-use the graphic and update it.
4872
4872
  if (existingRego && newRenderId == oldRenderId) {
4873
- cEntities[id] = existingRego.visual;
4873
+ cEntities.set(id, existingRego.visual);
4874
4874
  // Flag as no longer stale as we're unlikely to recreate the rego if we're reusing the graphic.
4875
4875
  existingRego.stale = false;
4876
4876
  // Update metadata for the same reason.
4877
4877
  existingRego.historicDateTime = (_e = entity.Bruce) === null || _e === void 0 ? void 0 : _e.historicDateTime;
4878
4878
  existingRego.historicAttrKey = (_f = entity.Bruce) === null || _f === void 0 ? void 0 : _f.historicAttrKey;
4879
4879
  existingRego.entityTypeId = entity.Bruce["EntityType.ID"];
4880
+ updated.set(id, true);
4880
4881
  }
4881
4882
  if (displayType == ZoomControl.EDisplayType.Model3D) {
4882
4883
  models.push(entity);
@@ -4904,9 +4905,9 @@ var EntityRenderEngine;
4904
4905
  for (i = 0; i < mParams.entities.length; i++) {
4905
4906
  entity = mParams.entities[i];
4906
4907
  id = entity.Bruce.ID;
4907
- cEntity = mEntities[id];
4908
+ cEntity = mEntities.get(id);
4908
4909
  if (cEntity) {
4909
- cEntities[id] = cEntity;
4910
+ cEntities.set(id, cEntity);
4910
4911
  }
4911
4912
  else {
4912
4913
  multiGeometry.push(entity);
@@ -4935,26 +4936,26 @@ var EntityRenderEngine;
4935
4936
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
4936
4937
  case 1:
4937
4938
  cPoly = _o.sent();
4938
- Object.keys(cPoly).forEach(function (key) {
4939
- if (cPoly[key]) {
4939
+ Array.from(cPoly.keys()).forEach(function (key) {
4940
+ if (cPoly.get(key)) {
4940
4941
  pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
4941
4942
  }
4942
4943
  });
4943
- rendered = Object.values(cPoly);
4944
+ rendered = Array.from(cPoly.values());
4944
4945
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
4945
4946
  case 2:
4946
4947
  cLines = _o.sent();
4947
- Object.keys(cLines).forEach(function (key) {
4948
- if (cLines[key]) {
4948
+ Array.from(cLines.keys()).forEach(function (key) {
4949
+ if (cLines.get(key)) {
4949
4950
  pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
4950
4951
  }
4951
4952
  });
4952
- rendered = rendered.concat(Object.values(cLines));
4953
+ rendered = rendered.concat(Array.from(cLines.values()));
4953
4954
  if (!!rendered.length) return [3 /*break*/, 4];
4954
4955
  return [4 /*yield*/, Point.RenderGroup(pParams)];
4955
4956
  case 3:
4956
4957
  cPoints = _o.sent();
4957
- rendered = rendered.concat(Object.values(cPoints));
4958
+ rendered = rendered.concat(Array.from(cPoints.values()));
4958
4959
  _o.label = 4;
4959
4960
  case 4:
4960
4961
  rendered = rendered.filter(function (x) { return x != null; });
@@ -4965,7 +4966,7 @@ var EntityRenderEngine;
4965
4966
  rootEntity_1._siblingGraphics = [];
4966
4967
  rootEntity_1._renderGroup = getRenderGroupId(zoomItem, (_l = params.viewer) === null || _l === void 0 ? void 0 : _l.terrainProvider);
4967
4968
  rootEntity_1._siblingGraphics = rootEntity_1._siblingGraphics.concat(rendered);
4968
- cEntities[entity.Bruce.ID] = rootEntity_1;
4969
+ cEntities.set(entity.Bruce.ID, rootEntity_1);
4969
4970
  firstEntity = rendered[0];
4970
4971
  if (firstEntity) {
4971
4972
  rootEntity_1.position = getValue$1(params.viewer, firstEntity.position);
@@ -5000,9 +5001,9 @@ var EntityRenderEngine;
5000
5001
  pEntities = _m.sent();
5001
5002
  for (i = 0; i < pParams.entities.length; i++) {
5002
5003
  entity = pParams.entities[i];
5003
- cEntity = pEntities[entity.Bruce.ID];
5004
+ cEntity = pEntities.get(entity.Bruce.ID);
5004
5005
  if (cEntity) {
5005
- cEntities[entity.Bruce.ID] = cEntity;
5006
+ cEntities.set(entity.Bruce.ID, cEntity);
5006
5007
  }
5007
5008
  else {
5008
5009
  polylines.push(entity);
@@ -5017,9 +5018,9 @@ var EntityRenderEngine;
5017
5018
  pEntities = _m.sent();
5018
5019
  for (i = 0; i < pParams.entities.length; i++) {
5019
5020
  entity = pParams.entities[i];
5020
- cEntity = pEntities[entity.Bruce.ID];
5021
+ cEntity = pEntities.get(entity.Bruce.ID);
5021
5022
  if (cEntity) {
5022
- cEntities[entity.Bruce.ID] = cEntity;
5023
+ cEntities.set(entity.Bruce.ID, cEntity);
5023
5024
  }
5024
5025
  else {
5025
5026
  points.push(entity);
@@ -5034,13 +5035,16 @@ var EntityRenderEngine;
5034
5035
  pEntities = _m.sent();
5035
5036
  for (i = 0; i < pParams.entities.length; i++) {
5036
5037
  entity = pParams.entities[i];
5037
- cEntity = pEntities[entity.Bruce.ID];
5038
+ cEntity = pEntities.get(entity.Bruce.ID);
5038
5039
  if (cEntity) {
5039
- cEntities[entity.Bruce.ID] = cEntity;
5040
+ cEntities.set(entity.Bruce.ID, cEntity);
5040
5041
  }
5041
5042
  }
5042
5043
  _m.label = 12;
5043
- case 12: return [2 /*return*/, cEntities];
5044
+ case 12: return [2 /*return*/, {
5045
+ entities: cEntities,
5046
+ updated: updated
5047
+ }];
5044
5048
  }
5045
5049
  });
5046
5050
  });
@@ -5239,7 +5243,7 @@ var EntityRenderEngine;
5239
5243
  }));
5240
5244
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
5241
5245
  CesiumEntityStyler.SetDefaultColor({
5242
- color: cColor_1,
5246
+ color: cColor_1 ? cColor_1 : new Color(),
5243
5247
  entity: cEntity,
5244
5248
  viewer: params.viewer,
5245
5249
  override: true,
@@ -5462,7 +5466,7 @@ var EntityRenderEngine;
5462
5466
  switch (_f.label) {
5463
5467
  case 0:
5464
5468
  api = params.apiGetter.getApi();
5465
- cEntities = {};
5469
+ cEntities = new Map();
5466
5470
  i = 0;
5467
5471
  _f.label = 1;
5468
5472
  case 1:
@@ -5500,7 +5504,7 @@ var EntityRenderEngine;
5500
5504
  apiGetter: params.apiGetter,
5501
5505
  maxDistance: zoomItem.MaxZoom,
5502
5506
  minDistance: zoomItem.MinZoom,
5503
- rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c[entity.Bruce.ID]
5507
+ rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID)
5504
5508
  })];
5505
5509
  case 7:
5506
5510
  cEntity = _f.sent();
@@ -5512,7 +5516,7 @@ var EntityRenderEngine;
5512
5516
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
5513
5517
  _f.label = 9;
5514
5518
  case 9:
5515
- cEntities[entity.Bruce.ID] = cEntity;
5519
+ cEntities.set(entity.Bruce.ID, cEntity);
5516
5520
  _f.label = 10;
5517
5521
  case 10:
5518
5522
  i++;
@@ -5699,7 +5703,7 @@ var EntityRenderEngine;
5699
5703
  switch (_f.label) {
5700
5704
  case 0:
5701
5705
  api = params.apiGetter.getApi();
5702
- cEntities = {};
5706
+ cEntities = new Map();
5703
5707
  i = 0;
5704
5708
  _f.label = 1;
5705
5709
  case 1:
@@ -5735,7 +5739,7 @@ var EntityRenderEngine;
5735
5739
  viewer: params.viewer,
5736
5740
  maxDistance: zoomItem.MaxZoom,
5737
5741
  minDistance: zoomItem.MinZoom,
5738
- rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c[entity.Bruce.ID]
5742
+ rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID)
5739
5743
  });
5740
5744
  if (!cEntity) return [3 /*break*/, 8];
5741
5745
  return [4 /*yield*/, getName(api, entity)];
@@ -5743,7 +5747,7 @@ var EntityRenderEngine;
5743
5747
  name_3 = _f.sent();
5744
5748
  cEntity.name = name_3;
5745
5749
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
5746
- cEntities[entity.Bruce.ID] = cEntity;
5750
+ cEntities.set(entity.Bruce.ID, cEntity);
5747
5751
  _f.label = 8;
5748
5752
  case 8:
5749
5753
  i++;
@@ -6023,7 +6027,7 @@ var EntityRenderEngine;
6023
6027
  switch (_f.label) {
6024
6028
  case 0:
6025
6029
  api = params.apiGetter.getApi();
6026
- cEntities = {};
6030
+ cEntities = new Map();
6027
6031
  i = 0;
6028
6032
  _f.label = 1;
6029
6033
  case 1:
@@ -6059,7 +6063,7 @@ var EntityRenderEngine;
6059
6063
  viewer: params.viewer,
6060
6064
  maxDistance: zoomItem.MaxZoom,
6061
6065
  minDistance: zoomItem.MinZoom,
6062
- rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c[entity.Bruce.ID]
6066
+ rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID)
6063
6067
  });
6064
6068
  if (!cEntity) return [3 /*break*/, 8];
6065
6069
  return [4 /*yield*/, getName(api, entity)];
@@ -6067,7 +6071,7 @@ var EntityRenderEngine;
6067
6071
  name_4 = _f.sent();
6068
6072
  cEntity.name = name_4;
6069
6073
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
6070
- cEntities[entity.Bruce.ID] = cEntity;
6074
+ cEntities.set(entity.Bruce.ID, cEntity);
6071
6075
  _f.label = 8;
6072
6076
  case 8:
6073
6077
  i++;
@@ -6169,6 +6173,11 @@ var EntityRenderEngine;
6169
6173
  position: pos,
6170
6174
  show: true
6171
6175
  });
6176
+ CesiumEntityStyler.BakeDefaultColor({
6177
+ entity: cEntity,
6178
+ viewer: params.viewer,
6179
+ override: true
6180
+ });
6172
6181
  }
6173
6182
  else {
6174
6183
  // Gather entity in case previous version had sibling graphics we no longer need.
@@ -6217,7 +6226,7 @@ var EntityRenderEngine;
6217
6226
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
6218
6227
  // cEntity.model.color = new Cesium.CallbackProperty(() => color, true);
6219
6228
  CesiumEntityStyler.SetDefaultColor({
6220
- color: color,
6229
+ color: color ? color : new Color(),
6221
6230
  entity: cEntity,
6222
6231
  viewer: params.viewer,
6223
6232
  override: true,
@@ -6329,7 +6338,7 @@ var EntityRenderEngine;
6329
6338
  return [4 /*yield*/, api.Loading];
6330
6339
  case 1:
6331
6340
  _h.sent();
6332
- cEntities = {};
6341
+ cEntities = new Map();
6333
6342
  reqBody = {
6334
6343
  "strict": false,
6335
6344
  "externalSources": false,
@@ -6425,7 +6434,7 @@ var EntityRenderEngine;
6425
6434
  }
6426
6435
  mStyle = (_d = style === null || style === void 0 ? void 0 : style.modelStyle) !== null && _d !== void 0 ? _d : {};
6427
6436
  cEntity = Render({
6428
- rendered: (_e = params.rendered) === null || _e === void 0 ? void 0 : _e[entity.Bruce.ID],
6437
+ rendered: (_e = params.rendered) === null || _e === void 0 ? void 0 : _e.get(entity.Bruce.ID),
6429
6438
  entity: entity,
6430
6439
  style: mStyle,
6431
6440
  tags: tags,
@@ -6445,7 +6454,7 @@ var EntityRenderEngine;
6445
6454
  name_5 = _k.sent();
6446
6455
  cEntity.name = name_5;
6447
6456
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_f = params.viewer) === null || _f === void 0 ? void 0 : _f.terrainProvider);
6448
- cEntities[entity.Bruce.ID] = cEntity;
6457
+ cEntities.set(entity.Bruce.ID, cEntity);
6449
6458
  _k.label = 7;
6450
6459
  case 7: return [2 /*return*/];
6451
6460
  }
@@ -10325,10 +10334,10 @@ var EntitiesRenderManager;
10325
10334
  * @returns
10326
10335
  */
10327
10336
  Manager.prototype.renderAsIndividuals = function (entities, force) {
10328
- var _a, _b, _c, _d, _e, _f, _g;
10337
+ var _a, _b, _c, _d, _e, _f;
10329
10338
  if (force === void 0) { force = false; }
10330
10339
  return __awaiter(this, void 0, void 0, function () {
10331
- var toRemove, i, entity, cEntities, i, entity, id, cEntity, visual, wasClustered, tagIds, rego;
10340
+ var toRemove, i, entity, _g, updated, cEntities, i, entity, id, cEntity, rego, visual, wasClustered, tagIds, rego_1;
10332
10341
  return __generator(this, function (_h) {
10333
10342
  switch (_h.label) {
10334
10343
  case 0:
@@ -10355,7 +10364,7 @@ var EntitiesRenderManager;
10355
10364
  force: force
10356
10365
  })];
10357
10366
  case 1:
10358
- cEntities = _h.sent();
10367
+ _g = _h.sent(), updated = _g.updated, cEntities = _g.entities;
10359
10368
  if (this.disposed) {
10360
10369
  this.doDispose();
10361
10370
  return [2 /*return*/];
@@ -10363,17 +10372,18 @@ var EntitiesRenderManager;
10363
10372
  for (i = 0; i < entities.length; i++) {
10364
10373
  entity = entities[i];
10365
10374
  id = entity.Bruce.ID;
10366
- cEntity = cEntities[id];
10375
+ cEntity = cEntities.get(id);
10367
10376
  this.renderedEntities[id] = !!cEntity;
10368
10377
  if (cEntity) {
10369
- visual = (_c = this.visualsManager.GetRego({
10378
+ rego = this.visualsManager.GetRego({
10370
10379
  entityId: id,
10371
10380
  menuItemId: this.item.id
10372
- })) === null || _c === void 0 ? void 0 : _c.visual;
10381
+ });
10382
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
10373
10383
  if (!visual || visual != cEntity) {
10374
10384
  wasClustered = this.clustering ? this.clustering.AddEntity(id, cEntity, false) : false;
10375
- tagIds = (_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d["Layer.ID"];
10376
- rego = {
10385
+ tagIds = (_c = entity.Bruce) === null || _c === void 0 ? void 0 : _c["Layer.ID"];
10386
+ rego_1 = {
10377
10387
  entityId: id,
10378
10388
  menuItemId: this.item.id,
10379
10389
  visual: cEntity,
@@ -10384,14 +10394,22 @@ var EntitiesRenderManager;
10384
10394
  overrideShow: wasClustered ? false : null,
10385
10395
  name: cEntity.name,
10386
10396
  cdn: this.item.cdnEnabled,
10387
- historicDateTime: (_e = entity.Bruce) === null || _e === void 0 ? void 0 : _e.historicDateTime,
10388
- historicAttrKey: (_f = entity.Bruce) === null || _f === void 0 ? void 0 : _f.historicAttrKey
10397
+ historicDateTime: (_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d.historicDateTime,
10398
+ historicAttrKey: (_e = entity.Bruce) === null || _e === void 0 ? void 0 : _e.historicAttrKey
10389
10399
  };
10390
10400
  this.visualsManager.AddRego({
10391
- rego: rego,
10401
+ rego: rego_1,
10392
10402
  requestRender: false
10393
10403
  });
10394
10404
  }
10405
+ else if (updated.get(id)) {
10406
+ // We manually trigger an update event since the graphic was updated but not recreated.
10407
+ this.visualsManager.OnUpdate.Trigger({
10408
+ type: VisualsRegister.EVisualUpdateType.Update,
10409
+ entityId: id,
10410
+ rego: rego
10411
+ });
10412
+ }
10395
10413
  }
10396
10414
  else {
10397
10415
  this.visualsManager.RemoveRegos({
@@ -10399,7 +10417,7 @@ var EntitiesRenderManager;
10399
10417
  menuItemId: this.item.id,
10400
10418
  requestRender: false
10401
10419
  });
10402
- (_g = this.clustering) === null || _g === void 0 ? void 0 : _g.RemoveEntity(id, false);
10420
+ (_f = this.clustering) === null || _f === void 0 ? void 0 : _f.RemoveEntity(id, false);
10403
10421
  }
10404
10422
  }
10405
10423
  this.viewer.scene.requestRender();
@@ -11158,10 +11176,9 @@ var EntitiesLoadedRenderManager;
11158
11176
  * @returns
11159
11177
  */
11160
11178
  Manager.prototype.renderAsIndividuals = function (entities, force) {
11161
- var _a;
11162
11179
  if (force === void 0) { force = false; }
11163
11180
  return __awaiter(this, void 0, void 0, function () {
11164
- var cEntities, isEntityInItem, i, entity, id, cEntity, visual;
11181
+ var _a, updated, cEntities, isEntityInItem, i, entity, id, cEntity, rego, visual;
11165
11182
  var _this = this;
11166
11183
  return __generator(this, function (_b) {
11167
11184
  switch (_b.label) {
@@ -11175,7 +11192,7 @@ var EntitiesLoadedRenderManager;
11175
11192
  force: force
11176
11193
  })];
11177
11194
  case 1:
11178
- cEntities = _b.sent();
11195
+ _a = _b.sent(), updated = _a.updated, cEntities = _a.entities;
11179
11196
  if (this.disposed) {
11180
11197
  this.visualsManager.RemoveRegos({
11181
11198
  menuItemId: this.item.id
@@ -11189,13 +11206,14 @@ var EntitiesLoadedRenderManager;
11189
11206
  for (i = 0; i < entities.length; i++) {
11190
11207
  entity = entities[i];
11191
11208
  id = entity.Bruce.ID;
11192
- cEntity = cEntities[id];
11209
+ cEntity = cEntities.get(id);
11193
11210
  this.renderedEntities[id] = !!cEntity;
11194
11211
  if (cEntity && isEntityInItem(id)) {
11195
- visual = (_a = this.visualsManager.GetRego({
11212
+ rego = this.visualsManager.GetRego({
11196
11213
  entityId: id,
11197
11214
  menuItemId: this.item.id
11198
- })) === null || _a === void 0 ? void 0 : _a.visual;
11215
+ });
11216
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
11199
11217
  if (!visual || visual != cEntity) {
11200
11218
  this.visualsManager.AddRego({
11201
11219
  rego: {
@@ -11210,6 +11228,14 @@ var EntitiesLoadedRenderManager;
11210
11228
  requestRender: false
11211
11229
  });
11212
11230
  }
11231
+ else if (updated.get(id)) {
11232
+ // We manually trigger an update event since the graphic was updated but not recreated.
11233
+ this.visualsManager.OnUpdate.Trigger({
11234
+ type: VisualsRegister.EVisualUpdateType.Update,
11235
+ entityId: id,
11236
+ rego: rego
11237
+ });
11238
+ }
11213
11239
  }
11214
11240
  else {
11215
11241
  this.visualsManager.RemoveRegos({
@@ -11767,10 +11793,10 @@ var EntitiesIdsRenderManager;
11767
11793
  * @returns
11768
11794
  */
11769
11795
  Manager.prototype.renderAsIndividuals = function (entities, force) {
11770
- var _a, _b;
11796
+ var _a;
11771
11797
  if (force === void 0) { force = false; }
11772
11798
  return __awaiter(this, void 0, void 0, function () {
11773
- var cEntities, i, entity, id, cEntity, visual, clustered;
11799
+ var _b, updated, cEntities, i, entity, id, cEntity, rego, visual, clustered;
11774
11800
  return __generator(this, function (_c) {
11775
11801
  switch (_c.label) {
11776
11802
  case 0: return [4 /*yield*/, EntityRenderEngine.Render({
@@ -11783,17 +11809,18 @@ var EntitiesIdsRenderManager;
11783
11809
  force: force
11784
11810
  })];
11785
11811
  case 1:
11786
- cEntities = _c.sent();
11812
+ _b = _c.sent(), updated = _b.updated, cEntities = _b.entities;
11787
11813
  for (i = 0; i < entities.length; i++) {
11788
11814
  entity = entities[i];
11789
11815
  id = entity.Bruce.ID;
11790
- cEntity = cEntities[id];
11816
+ cEntity = cEntities.get(id);
11791
11817
  this.renderedEntities[id] = !!cEntity;
11792
11818
  if (cEntity) {
11793
- visual = (_a = this.visualsManager.GetRego({
11819
+ rego = this.visualsManager.GetRego({
11794
11820
  entityId: id,
11795
11821
  menuItemId: this.item.id
11796
- })) === null || _a === void 0 ? void 0 : _a.visual;
11822
+ });
11823
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
11797
11824
  if (!visual || visual != cEntity) {
11798
11825
  clustered = this.clustering ? this.clustering.AddEntity(id, cEntity, false) : false;
11799
11826
  this.visualsManager.AddRego({
@@ -11810,6 +11837,14 @@ var EntitiesIdsRenderManager;
11810
11837
  requestRender: false
11811
11838
  });
11812
11839
  }
11840
+ else if (updated.get(id)) {
11841
+ // We manually trigger an update event since the graphic was updated but not recreated.
11842
+ this.visualsManager.OnUpdate.Trigger({
11843
+ type: VisualsRegister.EVisualUpdateType.Update,
11844
+ entityId: id,
11845
+ rego: rego
11846
+ });
11847
+ }
11813
11848
  }
11814
11849
  else {
11815
11850
  this.visualsManager.RemoveRegos({
@@ -11817,7 +11852,7 @@ var EntitiesIdsRenderManager;
11817
11852
  menuItemId: this.item.id,
11818
11853
  requestRender: false
11819
11854
  });
11820
- (_b = this.clustering) === null || _b === void 0 ? void 0 : _b.RemoveEntity(id, false);
11855
+ (_a = this.clustering) === null || _a === void 0 ? void 0 : _a.RemoveEntity(id, false);
11821
11856
  }
11822
11857
  }
11823
11858
  this.viewer.scene.requestRender();
@@ -11973,10 +12008,9 @@ var EntityRenderManager;
11973
12008
  }
11974
12009
  };
11975
12010
  Manager.prototype.renderEntity = function (entity, force) {
11976
- var _a;
11977
12011
  if (force === void 0) { force = false; }
11978
12012
  return __awaiter(this, void 0, void 0, function () {
11979
- var id, cEntities, cEntity, visual, e_2;
12013
+ var id, _a, updated, cEntities, cEntity, rego, visual, e_2;
11980
12014
  return __generator(this, function (_b) {
11981
12015
  switch (_b.label) {
11982
12016
  case 0:
@@ -11995,13 +12029,14 @@ var EntityRenderManager;
11995
12029
  force: force
11996
12030
  })];
11997
12031
  case 1:
11998
- cEntities = _b.sent();
11999
- cEntity = cEntities[id];
12032
+ _a = _b.sent(), updated = _a.updated, cEntities = _a.entities;
12033
+ cEntity = cEntities.get(id);
12000
12034
  if (cEntity) {
12001
- visual = (_a = this.visualsManager.GetRego({
12035
+ rego = this.visualsManager.GetRego({
12002
12036
  entityId: id,
12003
12037
  menuItemId: this.item.id
12004
- })) === null || _a === void 0 ? void 0 : _a.visual;
12038
+ });
12039
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
12005
12040
  if (!visual || visual != cEntity) {
12006
12041
  this.visualsManager.AddRego({
12007
12042
  rego: {
@@ -12016,6 +12051,14 @@ var EntityRenderManager;
12016
12051
  requestRender: false
12017
12052
  });
12018
12053
  }
12054
+ else if (updated.get(id)) {
12055
+ // We manually trigger an update event since the graphic was updated but not recreated.
12056
+ this.visualsManager.OnUpdate.Trigger({
12057
+ type: VisualsRegister.EVisualUpdateType.Update,
12058
+ entityId: id,
12059
+ rego: rego
12060
+ });
12061
+ }
12019
12062
  }
12020
12063
  else {
12021
12064
  this.visualsManager.RemoveRegos({
@@ -13734,20 +13777,35 @@ var EntityFilterGetter;
13734
13777
  };
13735
13778
  };
13736
13779
  Getter.prototype.updateHistoricDateTime = function () {
13737
- var newDateTime = JulianDate.toDate(this.viewer.clock.currentTime);
13738
- // Has previous value. Let's compare.
13739
- if (this.historicAttrDateTime) {
13740
- var oldDateTime = new Date(this.historicAttrDateTime);
13741
- // Change must be at least 0.1 seconds.
13742
- // TODO: This is just a random value I picked. We may need to make a setting or refine this.
13743
- if (Math.abs(newDateTime.getTime() - oldDateTime.getTime()) < 100) {
13744
- return;
13780
+ if (!this.historicAttrKey) {
13781
+ this.historicAttrDateTime = null;
13782
+ this.historicAttrDateTimeMin = null;
13783
+ this.historicAttrDateTimeMax = null;
13784
+ return;
13785
+ }
13786
+ var isChanged = function (before, after) {
13787
+ if (before && !after) {
13788
+ return true;
13789
+ }
13790
+ if (!before && after) {
13791
+ return true;
13745
13792
  }
13793
+ // Change must be at least 0.1 seconds.
13794
+ return Math.abs(before.getTime() - after.getTime()) > 100;
13795
+ };
13796
+ var oldDateTime = this.historicAttrDateTime ? new Date(this.historicAttrDateTime) : null;
13797
+ var newDateTime = JulianDate.toDate(this.viewer.clock.currentTime);
13798
+ var oldDateMin = this.historicAttrDateTimeMin ? new Date(this.historicAttrDateTimeMin) : null;
13799
+ var newDateMin = this.viewer.clock.startTime ? JulianDate.toDate(this.viewer.clock.startTime) : null;
13800
+ var oldDateMax = this.historicAttrDateTimeMax ? new Date(this.historicAttrDateTimeMax) : null;
13801
+ var newDateMax = this.viewer.clock.stopTime ? JulianDate.toDate(this.viewer.clock.stopTime) : null;
13802
+ if (isChanged(oldDateTime, newDateTime) ||
13803
+ isChanged(oldDateMin, newDateMin) ||
13804
+ isChanged(oldDateMax, newDateMax)) {
13805
+ this.historicAttrDateTime = newDateTime.toISOString();
13806
+ this.historicAttrDateTimeMin = newDateMin === null || newDateMin === void 0 ? void 0 : newDateMin.toISOString();
13807
+ this.historicAttrDateTimeMax = newDateMax === null || newDateMax === void 0 ? void 0 : newDateMax.toISOString();
13746
13808
  }
13747
- this.historicAttrDateTime = newDateTime.toISOString();
13748
- // Set min/max to be the value increased/decreased by 1 minute.
13749
- this.historicAttrDateTimeMin = new Date(newDateTime.getTime() - 60000).toISOString();
13750
- this.historicAttrDateTimeMax = new Date(newDateTime.getTime() + 60000).toISOString();
13751
13809
  };
13752
13810
  Getter.prototype.viewerDateTimeDispose = function () {
13753
13811
  var _a;
@@ -13912,6 +13970,7 @@ var EntityFilterGetter;
13912
13970
  return [4 /*yield*/, Entity$1.GetList({
13913
13971
  api: this.api,
13914
13972
  historicKey: this.historicAttrKey,
13973
+ historicPoint: this.historicAttrDateTime,
13915
13974
  historicFrom: this.historicAttrKey ? this.historicAttrDateTimeMin : null,
13916
13975
  historicTo: this.historicAttrKey ? this.historicAttrDateTimeMax : null,
13917
13976
  filter: {
@@ -23437,7 +23496,7 @@ var ViewRenderEngine;
23437
23496
  ViewRenderEngine.Render = Render;
23438
23497
  })(ViewRenderEngine || (ViewRenderEngine = {}));
23439
23498
 
23440
- var VERSION = "3.7.5";
23499
+ var VERSION = "3.7.7";
23441
23500
 
23442
23501
  export { 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, CESIUM_TIMELINE_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, CesiumEntityStyler, Draw3dPolygon, Draw3dPolyline };
23443
23502
  //# sourceMappingURL=bruce-cesium.es5.js.map