bruce-cesium 3.7.6 → 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, 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, 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.
@@ -4808,7 +4808,7 @@ var EntityRenderEngine;
4808
4808
  function Render(params) {
4809
4809
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
4810
4810
  return __awaiter(this, void 0, void 0, function () {
4811
- 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;
4812
4812
  return __generator(this, function (_m) {
4813
4813
  switch (_m.label) {
4814
4814
  case 0:
@@ -4828,7 +4828,8 @@ var EntityRenderEngine;
4828
4828
  entity.geometry = __assign(__assign(__assign({}, entity.geometry), geometry.MultiGeometry[0]), { MultiGeometry: [] });
4829
4829
  }
4830
4830
  }
4831
- cEntities = {};
4831
+ updated = new Map();
4832
+ cEntities = new Map();
4832
4833
  models = [];
4833
4834
  multiGeometry = [];
4834
4835
  polygons = [];
@@ -4864,18 +4865,19 @@ var EntityRenderEngine;
4864
4865
  // If historic metadata is different then it's also stale.
4865
4866
  ((existingRego === null || existingRego === void 0 ? void 0 : existingRego.historicDateTime) == ((_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d.historicDateTime))) {
4866
4867
  // No sorting category needed. Already rendered the way we want.
4867
- cEntities[id] = existingRego.visual;
4868
+ cEntities.set(id, existingRego.visual);
4868
4869
  }
4869
4870
  else {
4870
4871
  // Add so we can re-use the graphic and update it.
4871
4872
  if (existingRego && newRenderId == oldRenderId) {
4872
- cEntities[id] = existingRego.visual;
4873
+ cEntities.set(id, existingRego.visual);
4873
4874
  // Flag as no longer stale as we're unlikely to recreate the rego if we're reusing the graphic.
4874
4875
  existingRego.stale = false;
4875
4876
  // Update metadata for the same reason.
4876
4877
  existingRego.historicDateTime = (_e = entity.Bruce) === null || _e === void 0 ? void 0 : _e.historicDateTime;
4877
4878
  existingRego.historicAttrKey = (_f = entity.Bruce) === null || _f === void 0 ? void 0 : _f.historicAttrKey;
4878
4879
  existingRego.entityTypeId = entity.Bruce["EntityType.ID"];
4880
+ updated.set(id, true);
4879
4881
  }
4880
4882
  if (displayType == ZoomControl.EDisplayType.Model3D) {
4881
4883
  models.push(entity);
@@ -4903,9 +4905,9 @@ var EntityRenderEngine;
4903
4905
  for (i = 0; i < mParams.entities.length; i++) {
4904
4906
  entity = mParams.entities[i];
4905
4907
  id = entity.Bruce.ID;
4906
- cEntity = mEntities[id];
4908
+ cEntity = mEntities.get(id);
4907
4909
  if (cEntity) {
4908
- cEntities[id] = cEntity;
4910
+ cEntities.set(id, cEntity);
4909
4911
  }
4910
4912
  else {
4911
4913
  multiGeometry.push(entity);
@@ -4934,26 +4936,26 @@ var EntityRenderEngine;
4934
4936
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
4935
4937
  case 1:
4936
4938
  cPoly = _o.sent();
4937
- Object.keys(cPoly).forEach(function (key) {
4938
- if (cPoly[key]) {
4939
+ Array.from(cPoly.keys()).forEach(function (key) {
4940
+ if (cPoly.get(key)) {
4939
4941
  pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
4940
4942
  }
4941
4943
  });
4942
- rendered = Object.values(cPoly);
4944
+ rendered = Array.from(cPoly.values());
4943
4945
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
4944
4946
  case 2:
4945
4947
  cLines = _o.sent();
4946
- Object.keys(cLines).forEach(function (key) {
4947
- if (cLines[key]) {
4948
+ Array.from(cLines.keys()).forEach(function (key) {
4949
+ if (cLines.get(key)) {
4948
4950
  pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
4949
4951
  }
4950
4952
  });
4951
- rendered = rendered.concat(Object.values(cLines));
4953
+ rendered = rendered.concat(Array.from(cLines.values()));
4952
4954
  if (!!rendered.length) return [3 /*break*/, 4];
4953
4955
  return [4 /*yield*/, Point.RenderGroup(pParams)];
4954
4956
  case 3:
4955
4957
  cPoints = _o.sent();
4956
- rendered = rendered.concat(Object.values(cPoints));
4958
+ rendered = rendered.concat(Array.from(cPoints.values()));
4957
4959
  _o.label = 4;
4958
4960
  case 4:
4959
4961
  rendered = rendered.filter(function (x) { return x != null; });
@@ -4964,7 +4966,7 @@ var EntityRenderEngine;
4964
4966
  rootEntity_1._siblingGraphics = [];
4965
4967
  rootEntity_1._renderGroup = getRenderGroupId(zoomItem, (_l = params.viewer) === null || _l === void 0 ? void 0 : _l.terrainProvider);
4966
4968
  rootEntity_1._siblingGraphics = rootEntity_1._siblingGraphics.concat(rendered);
4967
- cEntities[entity.Bruce.ID] = rootEntity_1;
4969
+ cEntities.set(entity.Bruce.ID, rootEntity_1);
4968
4970
  firstEntity = rendered[0];
4969
4971
  if (firstEntity) {
4970
4972
  rootEntity_1.position = getValue$1(params.viewer, firstEntity.position);
@@ -4999,9 +5001,9 @@ var EntityRenderEngine;
4999
5001
  pEntities = _m.sent();
5000
5002
  for (i = 0; i < pParams.entities.length; i++) {
5001
5003
  entity = pParams.entities[i];
5002
- cEntity = pEntities[entity.Bruce.ID];
5004
+ cEntity = pEntities.get(entity.Bruce.ID);
5003
5005
  if (cEntity) {
5004
- cEntities[entity.Bruce.ID] = cEntity;
5006
+ cEntities.set(entity.Bruce.ID, cEntity);
5005
5007
  }
5006
5008
  else {
5007
5009
  polylines.push(entity);
@@ -5016,9 +5018,9 @@ var EntityRenderEngine;
5016
5018
  pEntities = _m.sent();
5017
5019
  for (i = 0; i < pParams.entities.length; i++) {
5018
5020
  entity = pParams.entities[i];
5019
- cEntity = pEntities[entity.Bruce.ID];
5021
+ cEntity = pEntities.get(entity.Bruce.ID);
5020
5022
  if (cEntity) {
5021
- cEntities[entity.Bruce.ID] = cEntity;
5023
+ cEntities.set(entity.Bruce.ID, cEntity);
5022
5024
  }
5023
5025
  else {
5024
5026
  points.push(entity);
@@ -5033,13 +5035,16 @@ var EntityRenderEngine;
5033
5035
  pEntities = _m.sent();
5034
5036
  for (i = 0; i < pParams.entities.length; i++) {
5035
5037
  entity = pParams.entities[i];
5036
- cEntity = pEntities[entity.Bruce.ID];
5038
+ cEntity = pEntities.get(entity.Bruce.ID);
5037
5039
  if (cEntity) {
5038
- cEntities[entity.Bruce.ID] = cEntity;
5040
+ cEntities.set(entity.Bruce.ID, cEntity);
5039
5041
  }
5040
5042
  }
5041
5043
  _m.label = 12;
5042
- case 12: return [2 /*return*/, cEntities];
5044
+ case 12: return [2 /*return*/, {
5045
+ entities: cEntities,
5046
+ updated: updated
5047
+ }];
5043
5048
  }
5044
5049
  });
5045
5050
  });
@@ -5461,7 +5466,7 @@ var EntityRenderEngine;
5461
5466
  switch (_f.label) {
5462
5467
  case 0:
5463
5468
  api = params.apiGetter.getApi();
5464
- cEntities = {};
5469
+ cEntities = new Map();
5465
5470
  i = 0;
5466
5471
  _f.label = 1;
5467
5472
  case 1:
@@ -5499,7 +5504,7 @@ var EntityRenderEngine;
5499
5504
  apiGetter: params.apiGetter,
5500
5505
  maxDistance: zoomItem.MaxZoom,
5501
5506
  minDistance: zoomItem.MinZoom,
5502
- 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)
5503
5508
  })];
5504
5509
  case 7:
5505
5510
  cEntity = _f.sent();
@@ -5511,7 +5516,7 @@ var EntityRenderEngine;
5511
5516
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
5512
5517
  _f.label = 9;
5513
5518
  case 9:
5514
- cEntities[entity.Bruce.ID] = cEntity;
5519
+ cEntities.set(entity.Bruce.ID, cEntity);
5515
5520
  _f.label = 10;
5516
5521
  case 10:
5517
5522
  i++;
@@ -5698,7 +5703,7 @@ var EntityRenderEngine;
5698
5703
  switch (_f.label) {
5699
5704
  case 0:
5700
5705
  api = params.apiGetter.getApi();
5701
- cEntities = {};
5706
+ cEntities = new Map();
5702
5707
  i = 0;
5703
5708
  _f.label = 1;
5704
5709
  case 1:
@@ -5734,7 +5739,7 @@ var EntityRenderEngine;
5734
5739
  viewer: params.viewer,
5735
5740
  maxDistance: zoomItem.MaxZoom,
5736
5741
  minDistance: zoomItem.MinZoom,
5737
- 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)
5738
5743
  });
5739
5744
  if (!cEntity) return [3 /*break*/, 8];
5740
5745
  return [4 /*yield*/, getName(api, entity)];
@@ -5742,7 +5747,7 @@ var EntityRenderEngine;
5742
5747
  name_3 = _f.sent();
5743
5748
  cEntity.name = name_3;
5744
5749
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
5745
- cEntities[entity.Bruce.ID] = cEntity;
5750
+ cEntities.set(entity.Bruce.ID, cEntity);
5746
5751
  _f.label = 8;
5747
5752
  case 8:
5748
5753
  i++;
@@ -6022,7 +6027,7 @@ var EntityRenderEngine;
6022
6027
  switch (_f.label) {
6023
6028
  case 0:
6024
6029
  api = params.apiGetter.getApi();
6025
- cEntities = {};
6030
+ cEntities = new Map();
6026
6031
  i = 0;
6027
6032
  _f.label = 1;
6028
6033
  case 1:
@@ -6058,7 +6063,7 @@ var EntityRenderEngine;
6058
6063
  viewer: params.viewer,
6059
6064
  maxDistance: zoomItem.MaxZoom,
6060
6065
  minDistance: zoomItem.MinZoom,
6061
- 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)
6062
6067
  });
6063
6068
  if (!cEntity) return [3 /*break*/, 8];
6064
6069
  return [4 /*yield*/, getName(api, entity)];
@@ -6066,7 +6071,7 @@ var EntityRenderEngine;
6066
6071
  name_4 = _f.sent();
6067
6072
  cEntity.name = name_4;
6068
6073
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
6069
- cEntities[entity.Bruce.ID] = cEntity;
6074
+ cEntities.set(entity.Bruce.ID, cEntity);
6070
6075
  _f.label = 8;
6071
6076
  case 8:
6072
6077
  i++;
@@ -6333,7 +6338,7 @@ var EntityRenderEngine;
6333
6338
  return [4 /*yield*/, api.Loading];
6334
6339
  case 1:
6335
6340
  _h.sent();
6336
- cEntities = {};
6341
+ cEntities = new Map();
6337
6342
  reqBody = {
6338
6343
  "strict": false,
6339
6344
  "externalSources": false,
@@ -6429,7 +6434,7 @@ var EntityRenderEngine;
6429
6434
  }
6430
6435
  mStyle = (_d = style === null || style === void 0 ? void 0 : style.modelStyle) !== null && _d !== void 0 ? _d : {};
6431
6436
  cEntity = Render({
6432
- 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),
6433
6438
  entity: entity,
6434
6439
  style: mStyle,
6435
6440
  tags: tags,
@@ -6449,7 +6454,7 @@ var EntityRenderEngine;
6449
6454
  name_5 = _k.sent();
6450
6455
  cEntity.name = name_5;
6451
6456
  cEntity._renderGroup = getRenderGroupId(zoomItem, (_f = params.viewer) === null || _f === void 0 ? void 0 : _f.terrainProvider);
6452
- cEntities[entity.Bruce.ID] = cEntity;
6457
+ cEntities.set(entity.Bruce.ID, cEntity);
6453
6458
  _k.label = 7;
6454
6459
  case 7: return [2 /*return*/];
6455
6460
  }
@@ -10329,10 +10334,10 @@ var EntitiesRenderManager;
10329
10334
  * @returns
10330
10335
  */
10331
10336
  Manager.prototype.renderAsIndividuals = function (entities, force) {
10332
- var _a, _b, _c, _d, _e, _f, _g;
10337
+ var _a, _b, _c, _d, _e, _f;
10333
10338
  if (force === void 0) { force = false; }
10334
10339
  return __awaiter(this, void 0, void 0, function () {
10335
- 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;
10336
10341
  return __generator(this, function (_h) {
10337
10342
  switch (_h.label) {
10338
10343
  case 0:
@@ -10359,7 +10364,7 @@ var EntitiesRenderManager;
10359
10364
  force: force
10360
10365
  })];
10361
10366
  case 1:
10362
- cEntities = _h.sent();
10367
+ _g = _h.sent(), updated = _g.updated, cEntities = _g.entities;
10363
10368
  if (this.disposed) {
10364
10369
  this.doDispose();
10365
10370
  return [2 /*return*/];
@@ -10367,17 +10372,18 @@ var EntitiesRenderManager;
10367
10372
  for (i = 0; i < entities.length; i++) {
10368
10373
  entity = entities[i];
10369
10374
  id = entity.Bruce.ID;
10370
- cEntity = cEntities[id];
10375
+ cEntity = cEntities.get(id);
10371
10376
  this.renderedEntities[id] = !!cEntity;
10372
10377
  if (cEntity) {
10373
- visual = (_c = this.visualsManager.GetRego({
10378
+ rego = this.visualsManager.GetRego({
10374
10379
  entityId: id,
10375
10380
  menuItemId: this.item.id
10376
- })) === null || _c === void 0 ? void 0 : _c.visual;
10381
+ });
10382
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
10377
10383
  if (!visual || visual != cEntity) {
10378
10384
  wasClustered = this.clustering ? this.clustering.AddEntity(id, cEntity, false) : false;
10379
- tagIds = (_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d["Layer.ID"];
10380
- rego = {
10385
+ tagIds = (_c = entity.Bruce) === null || _c === void 0 ? void 0 : _c["Layer.ID"];
10386
+ rego_1 = {
10381
10387
  entityId: id,
10382
10388
  menuItemId: this.item.id,
10383
10389
  visual: cEntity,
@@ -10388,14 +10394,22 @@ var EntitiesRenderManager;
10388
10394
  overrideShow: wasClustered ? false : null,
10389
10395
  name: cEntity.name,
10390
10396
  cdn: this.item.cdnEnabled,
10391
- historicDateTime: (_e = entity.Bruce) === null || _e === void 0 ? void 0 : _e.historicDateTime,
10392
- 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
10393
10399
  };
10394
10400
  this.visualsManager.AddRego({
10395
- rego: rego,
10401
+ rego: rego_1,
10396
10402
  requestRender: false
10397
10403
  });
10398
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
+ }
10399
10413
  }
10400
10414
  else {
10401
10415
  this.visualsManager.RemoveRegos({
@@ -10403,7 +10417,7 @@ var EntitiesRenderManager;
10403
10417
  menuItemId: this.item.id,
10404
10418
  requestRender: false
10405
10419
  });
10406
- (_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);
10407
10421
  }
10408
10422
  }
10409
10423
  this.viewer.scene.requestRender();
@@ -11162,10 +11176,9 @@ var EntitiesLoadedRenderManager;
11162
11176
  * @returns
11163
11177
  */
11164
11178
  Manager.prototype.renderAsIndividuals = function (entities, force) {
11165
- var _a;
11166
11179
  if (force === void 0) { force = false; }
11167
11180
  return __awaiter(this, void 0, void 0, function () {
11168
- var cEntities, isEntityInItem, i, entity, id, cEntity, visual;
11181
+ var _a, updated, cEntities, isEntityInItem, i, entity, id, cEntity, rego, visual;
11169
11182
  var _this = this;
11170
11183
  return __generator(this, function (_b) {
11171
11184
  switch (_b.label) {
@@ -11179,7 +11192,7 @@ var EntitiesLoadedRenderManager;
11179
11192
  force: force
11180
11193
  })];
11181
11194
  case 1:
11182
- cEntities = _b.sent();
11195
+ _a = _b.sent(), updated = _a.updated, cEntities = _a.entities;
11183
11196
  if (this.disposed) {
11184
11197
  this.visualsManager.RemoveRegos({
11185
11198
  menuItemId: this.item.id
@@ -11193,13 +11206,14 @@ var EntitiesLoadedRenderManager;
11193
11206
  for (i = 0; i < entities.length; i++) {
11194
11207
  entity = entities[i];
11195
11208
  id = entity.Bruce.ID;
11196
- cEntity = cEntities[id];
11209
+ cEntity = cEntities.get(id);
11197
11210
  this.renderedEntities[id] = !!cEntity;
11198
11211
  if (cEntity && isEntityInItem(id)) {
11199
- visual = (_a = this.visualsManager.GetRego({
11212
+ rego = this.visualsManager.GetRego({
11200
11213
  entityId: id,
11201
11214
  menuItemId: this.item.id
11202
- })) === null || _a === void 0 ? void 0 : _a.visual;
11215
+ });
11216
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
11203
11217
  if (!visual || visual != cEntity) {
11204
11218
  this.visualsManager.AddRego({
11205
11219
  rego: {
@@ -11214,6 +11228,14 @@ var EntitiesLoadedRenderManager;
11214
11228
  requestRender: false
11215
11229
  });
11216
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
+ }
11217
11239
  }
11218
11240
  else {
11219
11241
  this.visualsManager.RemoveRegos({
@@ -11771,10 +11793,10 @@ var EntitiesIdsRenderManager;
11771
11793
  * @returns
11772
11794
  */
11773
11795
  Manager.prototype.renderAsIndividuals = function (entities, force) {
11774
- var _a, _b;
11796
+ var _a;
11775
11797
  if (force === void 0) { force = false; }
11776
11798
  return __awaiter(this, void 0, void 0, function () {
11777
- var cEntities, i, entity, id, cEntity, visual, clustered;
11799
+ var _b, updated, cEntities, i, entity, id, cEntity, rego, visual, clustered;
11778
11800
  return __generator(this, function (_c) {
11779
11801
  switch (_c.label) {
11780
11802
  case 0: return [4 /*yield*/, EntityRenderEngine.Render({
@@ -11787,17 +11809,18 @@ var EntitiesIdsRenderManager;
11787
11809
  force: force
11788
11810
  })];
11789
11811
  case 1:
11790
- cEntities = _c.sent();
11812
+ _b = _c.sent(), updated = _b.updated, cEntities = _b.entities;
11791
11813
  for (i = 0; i < entities.length; i++) {
11792
11814
  entity = entities[i];
11793
11815
  id = entity.Bruce.ID;
11794
- cEntity = cEntities[id];
11816
+ cEntity = cEntities.get(id);
11795
11817
  this.renderedEntities[id] = !!cEntity;
11796
11818
  if (cEntity) {
11797
- visual = (_a = this.visualsManager.GetRego({
11819
+ rego = this.visualsManager.GetRego({
11798
11820
  entityId: id,
11799
11821
  menuItemId: this.item.id
11800
- })) === null || _a === void 0 ? void 0 : _a.visual;
11822
+ });
11823
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
11801
11824
  if (!visual || visual != cEntity) {
11802
11825
  clustered = this.clustering ? this.clustering.AddEntity(id, cEntity, false) : false;
11803
11826
  this.visualsManager.AddRego({
@@ -11814,6 +11837,14 @@ var EntitiesIdsRenderManager;
11814
11837
  requestRender: false
11815
11838
  });
11816
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
+ }
11817
11848
  }
11818
11849
  else {
11819
11850
  this.visualsManager.RemoveRegos({
@@ -11821,7 +11852,7 @@ var EntitiesIdsRenderManager;
11821
11852
  menuItemId: this.item.id,
11822
11853
  requestRender: false
11823
11854
  });
11824
- (_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);
11825
11856
  }
11826
11857
  }
11827
11858
  this.viewer.scene.requestRender();
@@ -11977,10 +12008,9 @@ var EntityRenderManager;
11977
12008
  }
11978
12009
  };
11979
12010
  Manager.prototype.renderEntity = function (entity, force) {
11980
- var _a;
11981
12011
  if (force === void 0) { force = false; }
11982
12012
  return __awaiter(this, void 0, void 0, function () {
11983
- var id, cEntities, cEntity, visual, e_2;
12013
+ var id, _a, updated, cEntities, cEntity, rego, visual, e_2;
11984
12014
  return __generator(this, function (_b) {
11985
12015
  switch (_b.label) {
11986
12016
  case 0:
@@ -11999,13 +12029,14 @@ var EntityRenderManager;
11999
12029
  force: force
12000
12030
  })];
12001
12031
  case 1:
12002
- cEntities = _b.sent();
12003
- cEntity = cEntities[id];
12032
+ _a = _b.sent(), updated = _a.updated, cEntities = _a.entities;
12033
+ cEntity = cEntities.get(id);
12004
12034
  if (cEntity) {
12005
- visual = (_a = this.visualsManager.GetRego({
12035
+ rego = this.visualsManager.GetRego({
12006
12036
  entityId: id,
12007
12037
  menuItemId: this.item.id
12008
- })) === null || _a === void 0 ? void 0 : _a.visual;
12038
+ });
12039
+ visual = rego === null || rego === void 0 ? void 0 : rego.visual;
12009
12040
  if (!visual || visual != cEntity) {
12010
12041
  this.visualsManager.AddRego({
12011
12042
  rego: {
@@ -12020,6 +12051,14 @@ var EntityRenderManager;
12020
12051
  requestRender: false
12021
12052
  });
12022
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
+ }
12023
12062
  }
12024
12063
  else {
12025
12064
  this.visualsManager.RemoveRegos({
@@ -13738,20 +13777,35 @@ var EntityFilterGetter;
13738
13777
  };
13739
13778
  };
13740
13779
  Getter.prototype.updateHistoricDateTime = function () {
13741
- var newDateTime = JulianDate.toDate(this.viewer.clock.currentTime);
13742
- // Has previous value. Let's compare.
13743
- if (this.historicAttrDateTime) {
13744
- var oldDateTime = new Date(this.historicAttrDateTime);
13745
- // Change must be at least 0.1 seconds.
13746
- // TODO: This is just a random value I picked. We may need to make a setting or refine this.
13747
- if (Math.abs(newDateTime.getTime() - oldDateTime.getTime()) < 100) {
13748
- 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;
13749
13789
  }
13790
+ if (!before && after) {
13791
+ return true;
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();
13750
13808
  }
13751
- this.historicAttrDateTime = newDateTime.toISOString();
13752
- // Set min/max to be the value increased/decreased by 1 minute.
13753
- this.historicAttrDateTimeMin = new Date(newDateTime.getTime() - 60000).toISOString();
13754
- this.historicAttrDateTimeMax = new Date(newDateTime.getTime() + 60000).toISOString();
13755
13809
  };
13756
13810
  Getter.prototype.viewerDateTimeDispose = function () {
13757
13811
  var _a;
@@ -13916,6 +13970,7 @@ var EntityFilterGetter;
13916
13970
  return [4 /*yield*/, Entity$1.GetList({
13917
13971
  api: this.api,
13918
13972
  historicKey: this.historicAttrKey,
13973
+ historicPoint: this.historicAttrDateTime,
13919
13974
  historicFrom: this.historicAttrKey ? this.historicAttrDateTimeMin : null,
13920
13975
  historicTo: this.historicAttrKey ? this.historicAttrDateTimeMax : null,
13921
13976
  filter: {
@@ -23441,7 +23496,7 @@ var ViewRenderEngine;
23441
23496
  ViewRenderEngine.Render = Render;
23442
23497
  })(ViewRenderEngine || (ViewRenderEngine = {}));
23443
23498
 
23444
- var VERSION = "3.7.6";
23499
+ var VERSION = "3.7.7";
23445
23500
 
23446
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 };
23447
23502
  //# sourceMappingURL=bruce-cesium.es5.js.map