bruce-cesium 3.8.2 → 3.8.3

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.
@@ -1010,6 +1010,11 @@
1010
1010
  }
1011
1011
  this.startTime = new Date();
1012
1012
  }
1013
+ AnimateColor.prototype.IsDone = function () {
1014
+ var now = new Date();
1015
+ var elapsedMs = now.getTime() - this.startTime.getTime();
1016
+ return elapsedMs >= this.durationMs;
1017
+ };
1013
1018
  /**
1014
1019
  * Returns the calculated color at the provided time.
1015
1020
  * @returns
@@ -1106,7 +1111,7 @@
1106
1111
  * @returns
1107
1112
  */
1108
1113
  function AnimateTFeatureColor(params) {
1109
- var viewer = params.viewer, feature = params.feature, color = params.targetColor, startColor = params.startColor, durationMs = params.durationMs;
1114
+ var viewer = params.viewer, feature = params.feature, color = params.targetColor, startColor = params.startColor, durationMs = params.durationMs, onDone = params.onDone;
1110
1115
  ClearTFeatureColorAnimation(feature);
1111
1116
  if (!startColor) {
1112
1117
  if (feature.color) {
@@ -1147,6 +1152,7 @@
1147
1152
  if (!assertColorMark(mark, feature.color)) {
1148
1153
  removal === null || removal === void 0 ? void 0 : removal();
1149
1154
  removal = null;
1155
+ onDone === null || onDone === void 0 ? void 0 : onDone();
1150
1156
  return;
1151
1157
  }
1152
1158
  var now = new Date();
@@ -1156,6 +1162,7 @@
1156
1162
  feature.color = color;
1157
1163
  removal === null || removal === void 0 ? void 0 : removal();
1158
1164
  removal = null;
1165
+ onDone === null || onDone === void 0 ? void 0 : onDone();
1159
1166
  return;
1160
1167
  }
1161
1168
  try {
@@ -1256,6 +1263,58 @@
1256
1263
  return AnimateHeading;
1257
1264
  }());
1258
1265
  CesiumAnimatedProperty.AnimateHeading = AnimateHeading;
1266
+ /**
1267
+ * Animates a position from a set of provided positions in time.
1268
+ * This will return a position across the provided positions based on the current time.
1269
+ * If the time exceeds the duration, the last position will be returned.
1270
+ * If the time proceeds the first position, the first position will be returned.
1271
+ */
1272
+ var AnimatePositionSeries = /** @class */ (function () {
1273
+ function AnimatePositionSeries(params) {
1274
+ this.viewer = params.viewer;
1275
+ this.positions = params.posses;
1276
+ // Order positions by date.
1277
+ this.positions.sort(function (a, b) {
1278
+ return a.dateTime.getTime() - b.dateTime.getTime();
1279
+ });
1280
+ }
1281
+ AnimatePositionSeries.prototype.GetValue = function () {
1282
+ var now = this.viewer.scene.lastRenderTime;
1283
+ if (!now) {
1284
+ now = this.viewer.clock.currentTime;
1285
+ }
1286
+ var nowTime = Cesium.JulianDate.toDate(now);
1287
+ // See if we're before the first position.
1288
+ if (nowTime.getTime() <= this.positions[0].dateTime.getTime()) {
1289
+ return this.positions[0].pos3d;
1290
+ }
1291
+ // See if we're after the last position.
1292
+ if (nowTime.getTime() >= this.positions[this.positions.length - 1].dateTime.getTime()) {
1293
+ return this.positions[this.positions.length - 1].pos3d;
1294
+ }
1295
+ // Find the current position.
1296
+ var lastIndex = 0;
1297
+ for (var i = 1; i < this.positions.length; i++) {
1298
+ var pos = this.positions[i];
1299
+ if (nowTime.getTime() >= pos.dateTime.getTime()) {
1300
+ lastIndex = i;
1301
+ }
1302
+ else {
1303
+ break;
1304
+ }
1305
+ }
1306
+ var last = this.positions[lastIndex];
1307
+ // Interpolate the position.
1308
+ var next = this.positions[lastIndex + 1];
1309
+ if (!next) {
1310
+ return last.pos3d;
1311
+ }
1312
+ var progress = (nowTime.getTime() - last.dateTime.getTime()) / (next.dateTime.getTime() - last.dateTime.getTime());
1313
+ return Cesium.Cartesian3.lerp(last.pos3d, next.pos3d, progress, new Cesium.Cartesian3());
1314
+ };
1315
+ return AnimatePositionSeries;
1316
+ }());
1317
+ CesiumAnimatedProperty.AnimatePositionSeries = AnimatePositionSeries;
1259
1318
  })(CesiumAnimatedProperty || (CesiumAnimatedProperty = {}));
1260
1319
 
1261
1320
  /**
@@ -1612,10 +1671,32 @@
1612
1671
  }
1613
1672
  CesiumEntityStyler.Refresh = Refresh;
1614
1673
  function BakeDefaultColor(params) {
1615
- var viewer = params.viewer, entity = params.entity, override = params.override;
1674
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1675
+ var viewer = params.viewer, entity = params.entity, override = params.override, colors = params.colors, refresh = params.refresh;
1616
1676
  if (!entity) {
1617
1677
  return;
1618
1678
  }
1679
+ if (refresh == null) {
1680
+ refresh = true;
1681
+ }
1682
+ var colorMap;
1683
+ if (colors) {
1684
+ if (!(colors instanceof Map)) {
1685
+ var keys = Object.keys(colors);
1686
+ var map = new Map();
1687
+ for (var i = 0; i < keys.length; i++) {
1688
+ var key = keys[i];
1689
+ map.set(key, colors[key]);
1690
+ }
1691
+ colorMap = map;
1692
+ }
1693
+ else {
1694
+ colorMap = colors;
1695
+ }
1696
+ }
1697
+ else {
1698
+ colorMap = new Map();
1699
+ }
1619
1700
  var parts = exports.EntityUtils.GatherEntity({
1620
1701
  entity: entity
1621
1702
  });
@@ -1633,37 +1714,61 @@
1633
1714
  }
1634
1715
  if (part instanceof Cesium.Cesium3DTileFeature) {
1635
1716
  var opacity = getAppliedOpacity(part);
1636
- storeColor("default", calculateCurColor(viewer, part), part);
1637
- refreshColor(viewer, part, opacity);
1717
+ var color = (_a = colorMap.get("feature")) !== null && _a !== void 0 ? _a : calculateCurColor(viewer, part);
1718
+ storeColor("default", color, part);
1719
+ if (refresh) {
1720
+ refreshColor(viewer, part, opacity);
1721
+ }
1638
1722
  }
1639
1723
  else if (part instanceof Cesium.Entity) {
1640
1724
  if (part.billboard) {
1641
- storeColor("default", calculateCurColor(viewer, part.billboard), part.billboard);
1642
- refreshColor(viewer, part.billboard, getAppliedOpacity(part.billboard));
1725
+ var color = (_b = colorMap.get("billboard")) !== null && _b !== void 0 ? _b : calculateCurColor(viewer, part.billboard);
1726
+ storeColor("default", color, part.billboard);
1727
+ if (refresh) {
1728
+ refreshColor(viewer, part.billboard, getAppliedOpacity(part.billboard));
1729
+ }
1643
1730
  }
1644
1731
  if (part.model) {
1645
- storeColor("default", calculateCurColor(viewer, part.model), part.model);
1646
- refreshColor(viewer, part.model, getAppliedOpacity(part.model));
1732
+ var color = (_c = colorMap.get("model")) !== null && _c !== void 0 ? _c : calculateCurColor(viewer, part.model);
1733
+ storeColor("default", color, part.model);
1734
+ if (refresh) {
1735
+ refreshColor(viewer, part.model, getAppliedOpacity(part.model));
1736
+ }
1647
1737
  }
1648
1738
  if (part.polyline) {
1649
- storeColor("default", calculateCurColor(viewer, part.polyline), part.polyline);
1650
- refreshColor(viewer, part.polyline, getAppliedOpacity(part.polyline));
1739
+ var color = (_d = colorMap.get("polyline")) !== null && _d !== void 0 ? _d : calculateCurColor(viewer, part.polyline);
1740
+ storeColor("default", color, part.polyline);
1741
+ if (refresh) {
1742
+ refreshColor(viewer, part.polyline, getAppliedOpacity(part.polyline));
1743
+ }
1651
1744
  }
1652
1745
  if (part.polygon) {
1653
- storeColor("default", calculateCurColor(viewer, part.polygon), part.polygon);
1654
- refreshColor(viewer, part.polygon, getAppliedOpacity(part.polygon));
1746
+ var color = (_e = colorMap.get("polygon")) !== null && _e !== void 0 ? _e : calculateCurColor(viewer, part.polygon);
1747
+ storeColor("default", color, part.polygon);
1748
+ if (refresh) {
1749
+ refreshColor(viewer, part.polygon, getAppliedOpacity(part.polygon));
1750
+ }
1655
1751
  }
1656
1752
  if (part.corridor) {
1657
- storeColor("default", calculateCurColor(viewer, part.corridor), part.corridor);
1658
- refreshColor(viewer, part.corridor, getAppliedOpacity(part.corridor));
1753
+ var color = (_f = colorMap.get("corridor")) !== null && _f !== void 0 ? _f : calculateCurColor(viewer, part.corridor);
1754
+ storeColor("default", color, part.corridor);
1755
+ if (refresh) {
1756
+ refreshColor(viewer, part.corridor, getAppliedOpacity(part.corridor));
1757
+ }
1659
1758
  }
1660
1759
  if (part.point) {
1661
- storeColor("default", calculateCurColor(viewer, part.point), part.point);
1662
- refreshColor(viewer, part.point, getAppliedOpacity(part.point));
1760
+ var color = (_g = colorMap.get("point")) !== null && _g !== void 0 ? _g : calculateCurColor(viewer, part.point);
1761
+ storeColor("default", color, part.point);
1762
+ if (refresh) {
1763
+ refreshColor(viewer, part.point, getAppliedOpacity(part.point));
1764
+ }
1663
1765
  }
1664
1766
  if (part.ellipse) {
1665
- storeColor("default", calculateCurColor(viewer, part.ellipse), part.ellipse);
1666
- refreshColor(viewer, part.ellipse, getAppliedOpacity(part.ellipse));
1767
+ var color = (_h = colorMap.get("ellipse")) !== null && _h !== void 0 ? _h : calculateCurColor(viewer, part.ellipse);
1768
+ storeColor("default", color, part.ellipse);
1769
+ if (refresh) {
1770
+ refreshColor(viewer, part.ellipse, getAppliedOpacity(part.ellipse));
1771
+ }
1667
1772
  }
1668
1773
  }
1669
1774
  }
@@ -4880,6 +4985,27 @@
4880
4985
  envId: envId
4881
4986
  };
4882
4987
  }
4988
+ function getSeriesPossesForHistoricEntity(viewer, heightRef, historic) {
4989
+ var series = [];
4990
+ for (var i = 0; i < historic.length; i++) {
4991
+ var item = historic[i];
4992
+ var pos3d = exports.EntityUtils.GetPos({
4993
+ entity: item.data,
4994
+ viewer: viewer,
4995
+ recordHeightRef: heightRef,
4996
+ returnHeightRef: heightRef
4997
+ });
4998
+ var dateTime = new Date(item.dateTime);
4999
+ if (!dateTime || !pos3d || isNaN(pos3d.x) || isNaN(pos3d.y) || isNaN(pos3d.z)) {
5000
+ continue;
5001
+ }
5002
+ series.push({
5003
+ dateTime: dateTime,
5004
+ pos3d: pos3d
5005
+ });
5006
+ }
5007
+ return series;
5008
+ }
4883
5009
  (function (EntityRenderEngine) {
4884
5010
  function Render(params) {
4885
5011
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
@@ -4974,7 +5100,7 @@
4974
5100
  }
4975
5101
  }
4976
5102
  if (!(models.length > 0)) return [3 /*break*/, 2];
4977
- mParams = __assign(__assign({}, groupRenderParams), { rendered: cEntities, entities: models });
5103
+ mParams = __assign(__assign({}, groupRenderParams), { rendered: cEntities, entities: models, entitiesHistoric: params.entitiesHistoric });
4978
5104
  return [4 /*yield*/, Model3d.RenderGroup(mParams)];
4979
5105
  case 1:
4980
5106
  mEntities = _m.sent();
@@ -5003,6 +5129,7 @@
5003
5129
  return [2 /*return*/, "continue"];
5004
5130
  }
5005
5131
  pParams = __assign(__assign({}, groupRenderParams), { entities: [], rendered: cEntities });
5132
+ pParams.entitiesHistoric = params.entitiesHistoric;
5006
5133
  zoomItem = pParams.zoomItems[entity.Bruce.ID];
5007
5134
  for (j = 0; j < entity.geometry.MultiGeometry.length; j++) {
5008
5135
  subEntity = __assign(__assign({}, entity), { geometry: entity.geometry.MultiGeometry[j], Bruce: __assign(__assign({}, entity.Bruce), { ID: bruceModels.ObjectUtils.UId() }) });
@@ -5105,7 +5232,7 @@
5105
5232
  _m.label = 10;
5106
5233
  case 10:
5107
5234
  if (!(points.length > 0)) return [3 /*break*/, 12];
5108
- pParams = __assign(__assign({}, groupRenderParams), { entities: points, rendered: cEntities });
5235
+ pParams = __assign(__assign({}, groupRenderParams), { entities: points, rendered: cEntities, entitiesHistoric: params.entitiesHistoric });
5109
5236
  return [4 /*yield*/, Point.RenderGroup(pParams)];
5110
5237
  case 11:
5111
5238
  pEntities = _m.sent();
@@ -5174,11 +5301,14 @@
5174
5301
  function Render(params) {
5175
5302
  var _a, _b, _c, _d;
5176
5303
  return __awaiter(this, void 0, void 0, function () {
5177
- var entity, style, type, cEntity, siblings, prepareExistingGraphic, iconUrlRows, icon, iconUrl, metadata, api, image, e_5, iconScale, disableDepthTest, bColor, cColor_1, heightRef_1, currentImgKey, pos3d, prevPos3d, animatePosition_1, radius, bFill, cFill, outline, cOutline, outlineWidth, bOutline, heightRef, pos3d, extrusion, hasOutline, outlineExtrusion, outlineEntity, bColor, cColor, size, heightRef_2, circleBillboard, disableDepthTest, imgKey, currentImgKey, pos3d, prevPos3d, animatePosition_2;
5304
+ var entity, style, type, cEntity, siblings, prepareExistingGraphic, iconUrlRows, icon, iconUrl, metadata, api, image, e_5, iconScale, disableDepthTest, bColor, cColor, heightRef_1, animateColorIn_1, position, series, animatePosition_1, currentImgKey, series, animatePosition_2, pos3d, prevPos3d, animatePosition_3, radius, bFill, cFill, outline, cOutline, outlineWidth, bOutline, heightRef, pos3d, extrusion, hasOutline, outlineExtrusion, outlineEntity, bColor, cColor, size, heightRef_2, circleBillboard, disableDepthTest, animateColorIn_2, position, series, animatePosition_4, imgKey, currentImgKey, series, animatePosition_5, pos3d, prevPos3d, animatePosition_6;
5178
5305
  return __generator(this, function (_e) {
5179
5306
  switch (_e.label) {
5180
5307
  case 0:
5181
5308
  entity = params.entity;
5309
+ if (!params.entityHistoric) {
5310
+ params.entityHistoric = [];
5311
+ }
5182
5312
  style = params.style;
5183
5313
  type = style.Type;
5184
5314
  if (type == null) {
@@ -5274,9 +5404,32 @@
5274
5404
  disableDepthTest = Boolean(style.renderOnTop);
5275
5405
  if (iconScale > 0) {
5276
5406
  bColor = style.iconTintColor ? bruceModels.Calculator.GetColor(style.iconTintColor, entity, params.tags) : null;
5277
- cColor_1 = bColor ? colorToCColor(bColor) : undefined;
5407
+ cColor = bColor ? colorToCColor(bColor) : Cesium.Color.WHITE.clone();
5278
5408
  heightRef_1 = getHeightRef(style);
5279
5409
  if (!params.rendered || !params.rendered.billboard) {
5410
+ animateColorIn_1 = new CesiumAnimatedProperty.AnimateColor({
5411
+ durationMs: 200,
5412
+ targetColor: cColor,
5413
+ startColor: cColor.withAlpha(0),
5414
+ viewer: params.viewer
5415
+ });
5416
+ position = null;
5417
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_1, params.entityHistoric);
5418
+ if (series.length > 1) {
5419
+ animatePosition_1 = new CesiumAnimatedProperty.AnimatePositionSeries({
5420
+ posses: series,
5421
+ viewer: params.viewer
5422
+ });
5423
+ position = new Cesium.CallbackProperty(function () { return animatePosition_1.GetValue(); }, false);
5424
+ }
5425
+ else {
5426
+ position = new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
5427
+ viewer: params.viewer,
5428
+ entity: entity,
5429
+ recordHeightRef: heightRef_1,
5430
+ returnHeightRef: heightRef_1
5431
+ }); }, true);
5432
+ }
5280
5433
  cEntity = new Cesium.Entity({
5281
5434
  id: bruceModels.ObjectUtils.UId(10),
5282
5435
  billboard: {
@@ -5287,18 +5440,27 @@
5287
5440
  scale: iconScale,
5288
5441
  disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined,
5289
5442
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance),
5290
- color: new Cesium.CallbackProperty(function () { return cColor_1; }, true),
5443
+ color: new Cesium.CallbackProperty(function () {
5444
+ var color = animateColorIn_1.GetColor();
5445
+ if (animateColorIn_1.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.billboard)) {
5446
+ cEntity.billboard.color = new Cesium.CallbackProperty(function () { return color; }, true);
5447
+ }
5448
+ return color;
5449
+ }, false),
5291
5450
  // Would be great once we have a setting for this.
5292
5451
  // translucencyByDistance: getTranslucencyByDistance(params.minDistance, params.maxDistance),
5293
5452
  },
5294
- position: new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
5295
- viewer: params.viewer,
5296
- entity: entity,
5297
- recordHeightRef: heightRef_1,
5298
- returnHeightRef: heightRef_1
5299
- }); }, true),
5453
+ position: position,
5300
5454
  show: true
5301
5455
  });
5456
+ exports.CesiumEntityStyler.BakeDefaultColor({
5457
+ entity: cEntity,
5458
+ colors: {
5459
+ "billboard": cColor
5460
+ },
5461
+ viewer: params.viewer,
5462
+ refresh: false
5463
+ });
5302
5464
  }
5303
5465
  else {
5304
5466
  prepareExistingGraphic(params.rendered);
@@ -5311,25 +5473,35 @@
5311
5473
  cEntity.billboard.heightReference = new Cesium.ConstantProperty(getHeightRef(style));
5312
5474
  cEntity.billboard.disableDepthTestDistance = new Cesium.ConstantProperty(disableDepthTest ? Number.POSITIVE_INFINITY : undefined);
5313
5475
  cEntity.billboard.distanceDisplayCondition = new Cesium.ConstantProperty(getDisplayCondition(params.minDistance, params.maxDistance));
5314
- pos3d = exports.EntityUtils.GetPos({
5315
- viewer: params.viewer,
5316
- entity: entity,
5317
- recordHeightRef: heightRef_1,
5318
- returnHeightRef: heightRef_1
5319
- });
5320
- prevPos3d = getValue$1(params.viewer, cEntity.position);
5321
- if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
5322
- animatePosition_1 = new CesiumAnimatedProperty.AnimatePosition({
5323
- durationMs: 200,
5324
- targetPos3d: pos3d,
5476
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_1, params.entityHistoric);
5477
+ if (series.length > 1) {
5478
+ animatePosition_2 = new CesiumAnimatedProperty.AnimatePositionSeries({
5479
+ posses: series,
5480
+ viewer: params.viewer
5481
+ });
5482
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_2.GetValue(); }, false);
5483
+ }
5484
+ else {
5485
+ pos3d = exports.EntityUtils.GetPos({
5325
5486
  viewer: params.viewer,
5326
- startPos3d: prevPos3d
5487
+ entity: entity,
5488
+ recordHeightRef: heightRef_1,
5489
+ returnHeightRef: heightRef_1
5327
5490
  });
5328
- cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_1.GetValue(); }, false);
5491
+ prevPos3d = getValue$1(params.viewer, cEntity.position);
5492
+ if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
5493
+ animatePosition_3 = new CesiumAnimatedProperty.AnimatePosition({
5494
+ durationMs: 200,
5495
+ targetPos3d: pos3d,
5496
+ viewer: params.viewer,
5497
+ startPos3d: prevPos3d
5498
+ });
5499
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_3.GetValue(); }, false);
5500
+ }
5329
5501
  }
5330
5502
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
5331
5503
  exports.CesiumEntityStyler.SetDefaultColor({
5332
- color: cColor_1 ? cColor_1 : new Cesium.Color(),
5504
+ color: cColor ? cColor : new Cesium.Color(),
5333
5505
  entity: cEntity,
5334
5506
  viewer: params.viewer,
5335
5507
  override: true,
@@ -5474,6 +5646,29 @@
5474
5646
  circleBillboard = createCircleBillboard(size, cColor.toCssColorString());
5475
5647
  disableDepthTest = Boolean(style.renderOnTop);
5476
5648
  if (!params.rendered || !params.rendered.billboard) {
5649
+ animateColorIn_2 = new CesiumAnimatedProperty.AnimateColor({
5650
+ durationMs: 200,
5651
+ targetColor: cColor,
5652
+ startColor: cColor.withAlpha(0),
5653
+ viewer: params.viewer
5654
+ });
5655
+ position = null;
5656
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_2, params.entityHistoric);
5657
+ if (series.length > 1) {
5658
+ animatePosition_4 = new CesiumAnimatedProperty.AnimatePositionSeries({
5659
+ posses: series,
5660
+ viewer: params.viewer
5661
+ });
5662
+ position = new Cesium.CallbackProperty(function () { return animatePosition_4.GetValue(); }, false);
5663
+ }
5664
+ else {
5665
+ position = new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
5666
+ viewer: params.viewer,
5667
+ entity: entity,
5668
+ recordHeightRef: heightRef_2,
5669
+ returnHeightRef: heightRef_2
5670
+ }); }, true);
5671
+ }
5477
5672
  cEntity = new Cesium.Entity({
5478
5673
  id: bruceModels.ObjectUtils.UId(10),
5479
5674
  // point: {
@@ -5489,19 +5684,28 @@
5489
5684
  height: circleBillboard.height,
5490
5685
  width: circleBillboard.width,
5491
5686
  image: circleBillboard.canvasDataUri,
5492
- color: new Cesium.CallbackProperty(function () { return undefined; }, true),
5687
+ color: new Cesium.CallbackProperty(function () {
5688
+ var color = animateColorIn_2.GetColor();
5689
+ if (animateColorIn_2.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.billboard)) {
5690
+ cEntity.billboard.color = new Cesium.CallbackProperty(function () { return color; }, true);
5691
+ }
5692
+ return color;
5693
+ }, false),
5493
5694
  heightReference: heightRef_2,
5494
5695
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance),
5495
5696
  disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined
5496
5697
  },
5497
- position: new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
5498
- viewer: params.viewer,
5499
- entity: entity,
5500
- recordHeightRef: heightRef_2,
5501
- returnHeightRef: heightRef_2
5502
- }); }, true),
5698
+ position: position,
5503
5699
  show: true
5504
5700
  });
5701
+ exports.CesiumEntityStyler.BakeDefaultColor({
5702
+ entity: cEntity,
5703
+ viewer: params.viewer,
5704
+ colors: {
5705
+ "billboard": cColor
5706
+ },
5707
+ refresh: false
5708
+ });
5505
5709
  }
5506
5710
  else {
5507
5711
  prepareExistingGraphic(params.rendered);
@@ -5516,21 +5720,31 @@
5516
5720
  cEntity.billboard.heightReference = new Cesium.ConstantProperty(heightRef_2);
5517
5721
  cEntity.billboard.distanceDisplayCondition = new Cesium.ConstantProperty(getDisplayCondition(params.minDistance, params.maxDistance));
5518
5722
  cEntity.billboard.disableDepthTestDistance = new Cesium.ConstantProperty(disableDepthTest ? Number.POSITIVE_INFINITY : undefined);
5519
- pos3d = exports.EntityUtils.GetPos({
5520
- viewer: params.viewer,
5521
- entity: entity,
5522
- recordHeightRef: heightRef_2,
5523
- returnHeightRef: heightRef_2
5524
- });
5525
- prevPos3d = getValue$1(params.viewer, cEntity.position);
5526
- if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
5527
- animatePosition_2 = new CesiumAnimatedProperty.AnimatePosition({
5528
- durationMs: 200,
5529
- targetPos3d: pos3d,
5723
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_2, params.entityHistoric);
5724
+ if (series.length > 1) {
5725
+ animatePosition_5 = new CesiumAnimatedProperty.AnimatePositionSeries({
5726
+ posses: series,
5727
+ viewer: params.viewer
5728
+ });
5729
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_5.GetValue(); }, false);
5730
+ }
5731
+ else {
5732
+ pos3d = exports.EntityUtils.GetPos({
5530
5733
  viewer: params.viewer,
5531
- startPos3d: prevPos3d
5734
+ entity: entity,
5735
+ recordHeightRef: heightRef_2,
5736
+ returnHeightRef: heightRef_2
5532
5737
  });
5533
- cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_2.GetValue(); }, false);
5738
+ prevPos3d = getValue$1(params.viewer, cEntity.position);
5739
+ if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
5740
+ animatePosition_6 = new CesiumAnimatedProperty.AnimatePosition({
5741
+ durationMs: 200,
5742
+ targetPos3d: pos3d,
5743
+ viewer: params.viewer,
5744
+ startPos3d: prevPos3d
5745
+ });
5746
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_6.GetValue(); }, false);
5747
+ }
5534
5748
  }
5535
5749
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
5536
5750
  exports.CesiumEntityStyler.SetDefaultColor({
@@ -5555,16 +5769,16 @@
5555
5769
  }
5556
5770
  Point.Render = Render;
5557
5771
  function RenderGroup(params) {
5558
- var _a, _b, _c, _d;
5772
+ var _a, _b, _c, _d, _e;
5559
5773
  return __awaiter(this, void 0, void 0, function () {
5560
- var api, cEntities, i, entity, zoomItem, style, _e, tagIds, tags, pStyle, cEntity, name_2;
5561
- return __generator(this, function (_f) {
5562
- switch (_f.label) {
5774
+ var api, cEntities, i, entity, zoomItem, style, _f, tagIds, tags, pStyle, cEntity, name_2;
5775
+ return __generator(this, function (_g) {
5776
+ switch (_g.label) {
5563
5777
  case 0:
5564
5778
  api = params.apiGetter.getApi();
5565
5779
  cEntities = new Map();
5566
5780
  i = 0;
5567
- _f.label = 1;
5781
+ _g.label = 1;
5568
5782
  case 1:
5569
5783
  if (!(i < params.entities.length)) return [3 /*break*/, 11];
5570
5784
  entity = params.entities[i];
@@ -5572,13 +5786,13 @@
5572
5786
  if (!(zoomItem.StyleID != -1)) return [3 /*break*/, 3];
5573
5787
  return [4 /*yield*/, getStyle(api, entity, zoomItem.StyleID)];
5574
5788
  case 2:
5575
- _e = (_a = (_f.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
5789
+ _f = (_a = (_g.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
5576
5790
  return [3 /*break*/, 4];
5577
5791
  case 3:
5578
- _e = zoomItem.Style;
5579
- _f.label = 4;
5792
+ _f = zoomItem.Style;
5793
+ _g.label = 4;
5580
5794
  case 4:
5581
- style = _e;
5795
+ style = _f;
5582
5796
  tagIds = entity.Bruce["Layer.ID"];
5583
5797
  tags = [];
5584
5798
  if (!(tagIds && tagIds.length > 0)) return [3 /*break*/, 6];
@@ -5587,8 +5801,8 @@
5587
5801
  tagIds: tagIds
5588
5802
  })];
5589
5803
  case 5:
5590
- tags = (_f.sent()).tags;
5591
- _f.label = 6;
5804
+ tags = (_g.sent()).tags;
5805
+ _g.label = 6;
5592
5806
  case 6:
5593
5807
  pStyle = (_b = style === null || style === void 0 ? void 0 : style.pointStyle) !== null && _b !== void 0 ? _b : {};
5594
5808
  return [4 /*yield*/, Render({
@@ -5600,20 +5814,21 @@
5600
5814
  apiGetter: params.apiGetter,
5601
5815
  maxDistance: zoomItem.MaxZoom,
5602
5816
  minDistance: zoomItem.MinZoom,
5603
- rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID)
5817
+ rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID),
5818
+ entityHistoric: (_d = params.entitiesHistoric) === null || _d === void 0 ? void 0 : _d[entity.Bruce.ID]
5604
5819
  })];
5605
5820
  case 7:
5606
- cEntity = _f.sent();
5821
+ cEntity = _g.sent();
5607
5822
  if (!cEntity) return [3 /*break*/, 9];
5608
5823
  return [4 /*yield*/, getName(api, entity)];
5609
5824
  case 8:
5610
- name_2 = _f.sent();
5825
+ name_2 = _g.sent();
5611
5826
  cEntity.name = name_2;
5612
- cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
5613
- _f.label = 9;
5827
+ cEntity._renderGroup = getRenderGroupId(zoomItem, (_e = params.viewer) === null || _e === void 0 ? void 0 : _e.terrainProvider);
5828
+ _g.label = 9;
5614
5829
  case 9:
5615
5830
  cEntities.set(entity.Bruce.ID, cEntity);
5616
- _f.label = 10;
5831
+ _g.label = 10;
5617
5832
  case 10:
5618
5833
  i++;
5619
5834
  return [3 /*break*/, 1];
@@ -6184,6 +6399,9 @@
6184
6399
  function Render(params) {
6185
6400
  var _this = this;
6186
6401
  var entity = params.entity;
6402
+ if (!params.entityHistoric) {
6403
+ params.entityHistoric = [];
6404
+ }
6187
6405
  var transform = entity === null || entity === void 0 ? void 0 : entity.transform;
6188
6406
  var heading = EnsureNumber(transform === null || transform === void 0 ? void 0 : transform.heading);
6189
6407
  heading = (heading + 90) % 360;
@@ -6230,29 +6448,38 @@
6230
6448
  color = colorToCColor(bColor);
6231
6449
  }
6232
6450
  }
6233
- /*
6234
- const cEntity: ICesiumEntityExt = new Cesium.Entity({
6235
- id: ObjectUtils.UId(10),
6236
- model: {
6237
- uri: params.lodUrl,
6238
- heightReference: heightRef,
6239
- scale: scale * styleScale,
6240
- shadows: Cesium.ShadowMode.ENABLED,
6241
- colorBlendAmount: blendAmount,
6242
- colorBlendMode: blendMode,
6243
- color: new Cesium.CallbackProperty(() => color, true),
6244
- distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance)
6245
- },
6246
- orientation: new Cesium.ConstantProperty(orientation),
6247
- position: pos,
6248
- show: true
6249
- });
6250
- */
6251
6451
  var animateScale = null;
6252
6452
  var cEntity = params.rendered;
6253
6453
  if (!cEntity || !cEntity.model) {
6254
6454
  var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(heading), Cesium.Math.toRadians(pitch), Cesium.Math.toRadians(roll));
6255
6455
  var orientation_1 = Cesium.Transforms.headingPitchRollQuaternion(pos3d, hpr);
6456
+ if (!color) {
6457
+ color = Cesium.Color.WHITE.clone();
6458
+ }
6459
+ var animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
6460
+ durationMs: 1500,
6461
+ targetColor: color,
6462
+ startColor: color.clone().withAlpha(0.001),
6463
+ viewer: params.viewer
6464
+ });
6465
+ var position = null;
6466
+ // If we have a series of time-based positions then we'll animate as time changes.
6467
+ var series = getSeriesPossesForHistoricEntity(params.viewer, heightRef, params.entityHistoric);
6468
+ if (series.length > 1) {
6469
+ var animatePosition_7 = new CesiumAnimatedProperty.AnimatePositionSeries({
6470
+ posses: series,
6471
+ viewer: params.viewer
6472
+ });
6473
+ position = new Cesium.CallbackProperty(function () { return animatePosition_7.GetValue(); }, false);
6474
+ }
6475
+ else {
6476
+ position = new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
6477
+ viewer: params.viewer,
6478
+ entity: entity,
6479
+ recordHeightRef: heightRef,
6480
+ returnHeightRef: heightRef
6481
+ }); }, true);
6482
+ }
6256
6483
  cEntity = new Cesium.Entity({
6257
6484
  id: bruceModels.ObjectUtils.UId(10),
6258
6485
  model: {
@@ -6262,17 +6489,27 @@
6262
6489
  shadows: Cesium.ShadowMode.ENABLED,
6263
6490
  colorBlendAmount: blendAmount,
6264
6491
  colorBlendMode: blendMode,
6265
- color: new Cesium.CallbackProperty(function () { return color; }, true),
6492
+ color: new Cesium.CallbackProperty(function () {
6493
+ var color = animateColor_1.GetColor();
6494
+ if (animateColor_1.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.model)) {
6495
+ cEntity.model.color = new Cesium.CallbackProperty(function () { return color; }, true);
6496
+ }
6497
+ return color;
6498
+ }, false),
6266
6499
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance)
6267
6500
  },
6268
6501
  orientation: new Cesium.CallbackProperty(function () { return orientation_1; }, true),
6269
- position: new Cesium.CallbackProperty(function () { return pos3d; }, true),
6502
+ position: position,
6270
6503
  show: true
6271
6504
  });
6272
6505
  exports.CesiumEntityStyler.BakeDefaultColor({
6273
6506
  entity: cEntity,
6274
6507
  viewer: params.viewer,
6275
- override: true
6508
+ override: true,
6509
+ colors: {
6510
+ "model": color
6511
+ },
6512
+ refresh: false
6276
6513
  });
6277
6514
  }
6278
6515
  else {
@@ -6302,17 +6539,28 @@
6302
6539
  cEntity.model.colorBlendAmount = new Cesium.ConstantProperty(blendAmount);
6303
6540
  cEntity.model.colorBlendMode = new Cesium.ConstantProperty(blendMode);
6304
6541
  cEntity.model.distanceDisplayCondition = new Cesium.ConstantProperty(getDisplayCondition(params.minDistance, params.maxDistance));
6305
- var prevPos3d = getValue$1(params.viewer, cEntity.position);
6306
- var posChanged = !prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d);
6307
- var animatePosition_3 = null;
6308
- if (posChanged) {
6309
- animatePosition_3 = new CesiumAnimatedProperty.AnimatePosition({
6310
- durationMs: 200,
6311
- targetPos3d: pos3d,
6312
- viewer: params.viewer,
6313
- startPos3d: prevPos3d
6542
+ // If we have a series of time-based positions then we'll animate as time changes.
6543
+ var series = getSeriesPossesForHistoricEntity(params.viewer, heightRef, params.entityHistoric);
6544
+ if (series.length > 1) {
6545
+ var animatePosition_8 = new CesiumAnimatedProperty.AnimatePositionSeries({
6546
+ posses: series,
6547
+ viewer: params.viewer
6314
6548
  });
6315
- cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_3.GetValue(); }, false);
6549
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_8.GetValue(); }, false);
6550
+ }
6551
+ else {
6552
+ var prevPos3d = getValue$1(params.viewer, cEntity.position);
6553
+ var posChanged = !prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d);
6554
+ var animatePosition_9 = null;
6555
+ if (posChanged) {
6556
+ animatePosition_9 = new CesiumAnimatedProperty.AnimatePosition({
6557
+ durationMs: 200,
6558
+ targetPos3d: pos3d,
6559
+ viewer: params.viewer,
6560
+ startPos3d: prevPos3d
6561
+ });
6562
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_9.GetValue(); }, false);
6563
+ }
6316
6564
  }
6317
6565
  // cEntity.orientation = new Cesium.ConstantProperty(orientation);
6318
6566
  var prevHeading = cEntity.model._heading;
@@ -6461,16 +6709,16 @@
6461
6709
  }
6462
6710
  Model3d.Render = Render;
6463
6711
  function RenderGroup(params) {
6464
- var _a, _b, _c, _d, _e, _f;
6712
+ var _a, _b, _c, _d, _e, _f, _g;
6465
6713
  return __awaiter(this, void 0, void 0, function () {
6466
- var api, cEntities, reqBody, i, entity, zoomItem, style, _g, tagIds, tags, mStyle, group, level, catId, lodData, _loop_2, i;
6467
- return __generator(this, function (_h) {
6468
- switch (_h.label) {
6714
+ var api, cEntities, reqBody, i, entity, zoomItem, style, _h, tagIds, tags, mStyle, group, level, catId, lodData, _loop_2, i;
6715
+ return __generator(this, function (_j) {
6716
+ switch (_j.label) {
6469
6717
  case 0:
6470
6718
  api = params.apiGetter.getApi();
6471
6719
  return [4 /*yield*/, api.Loading];
6472
6720
  case 1:
6473
- _h.sent();
6721
+ _j.sent();
6474
6722
  cEntities = new Map();
6475
6723
  reqBody = {
6476
6724
  "strict": false,
@@ -6478,7 +6726,7 @@
6478
6726
  "Items": []
6479
6727
  };
6480
6728
  i = 0;
6481
- _h.label = 2;
6729
+ _j.label = 2;
6482
6730
  case 2:
6483
6731
  if (!(i < params.entities.length)) return [3 /*break*/, 9];
6484
6732
  entity = params.entities[i];
@@ -6486,13 +6734,13 @@
6486
6734
  if (!(zoomItem.StyleID != -1)) return [3 /*break*/, 4];
6487
6735
  return [4 /*yield*/, getStyle(api, entity, zoomItem.StyleID)];
6488
6736
  case 3:
6489
- _g = (_a = (_h.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
6737
+ _h = (_a = (_j.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
6490
6738
  return [3 /*break*/, 5];
6491
6739
  case 4:
6492
- _g = zoomItem.Style;
6493
- _h.label = 5;
6740
+ _h = zoomItem.Style;
6741
+ _j.label = 5;
6494
6742
  case 5:
6495
- style = _g;
6743
+ style = _h;
6496
6744
  tagIds = entity.Bruce["Layer.ID"];
6497
6745
  tags = [];
6498
6746
  if (!(tagIds && tagIds.length > 0)) return [3 /*break*/, 7];
@@ -6501,8 +6749,8 @@
6501
6749
  tagIds: tagIds
6502
6750
  })];
6503
6751
  case 6:
6504
- tags = (_h.sent()).tags;
6505
- _h.label = 7;
6752
+ tags = (_j.sent()).tags;
6753
+ _j.label = 7;
6506
6754
  case 7:
6507
6755
  mStyle = (_b = style === null || style === void 0 ? void 0 : style.modelStyle) !== null && _b !== void 0 ? _b : {};
6508
6756
  group = mStyle.lodGroup ? bruceModels.Calculator.GetString(mStyle.lodGroup, entity, tags) : null;
@@ -6523,7 +6771,7 @@
6523
6771
  "group": group,
6524
6772
  "level": level
6525
6773
  });
6526
- _h.label = 8;
6774
+ _j.label = 8;
6527
6775
  case 8:
6528
6776
  i++;
6529
6777
  return [3 /*break*/, 2];
@@ -6532,24 +6780,24 @@
6532
6780
  filter: reqBody
6533
6781
  })];
6534
6782
  case 10:
6535
- lodData = (_h.sent()).lods;
6783
+ lodData = (_j.sent()).lods;
6536
6784
  _loop_2 = function (i) {
6537
- var entity, zoomItem, style, _j, tagIds, tags, lod, mStyle, cEntity, name_5;
6538
- return __generator(this, function (_k) {
6539
- switch (_k.label) {
6785
+ var entity, zoomItem, style, _k, tagIds, tags, lod, mStyle, cEntity, name_5;
6786
+ return __generator(this, function (_l) {
6787
+ switch (_l.label) {
6540
6788
  case 0:
6541
6789
  entity = params.entities[i];
6542
6790
  zoomItem = params.zoomItems[entity.Bruce.ID];
6543
6791
  if (!(zoomItem.StyleID != -1)) return [3 /*break*/, 2];
6544
6792
  return [4 /*yield*/, getStyle(api, entity, zoomItem.StyleID)];
6545
6793
  case 1:
6546
- _j = (_c = (_k.sent())) === null || _c === void 0 ? void 0 : _c.Settings;
6794
+ _k = (_c = (_l.sent())) === null || _c === void 0 ? void 0 : _c.Settings;
6547
6795
  return [3 /*break*/, 3];
6548
6796
  case 2:
6549
- _j = zoomItem.Style;
6550
- _k.label = 3;
6797
+ _k = zoomItem.Style;
6798
+ _l.label = 3;
6551
6799
  case 3:
6552
- style = _j;
6800
+ style = _k;
6553
6801
  tagIds = entity.Bruce["Layer.ID"];
6554
6802
  tags = [];
6555
6803
  if (!(tagIds && tagIds.length > 0)) return [3 /*break*/, 5];
@@ -6558,8 +6806,8 @@
6558
6806
  tagIds: tagIds
6559
6807
  })];
6560
6808
  case 4:
6561
- tags = (_k.sent()).tags;
6562
- _k.label = 5;
6809
+ tags = (_l.sent()).tags;
6810
+ _l.label = 5;
6563
6811
  case 5:
6564
6812
  lod = lodData.find(function (x) { return x.entityId == entity.Bruce.ID; });
6565
6813
  if (!(lod === null || lod === void 0 ? void 0 : lod.clientFileId)) {
@@ -6569,6 +6817,7 @@
6569
6817
  cEntity = Render({
6570
6818
  rendered: (_e = params.rendered) === null || _e === void 0 ? void 0 : _e.get(entity.Bruce.ID),
6571
6819
  entity: entity,
6820
+ entityHistoric: (_f = params.entitiesHistoric) === null || _f === void 0 ? void 0 : _f[entity.Bruce.ID],
6572
6821
  style: mStyle,
6573
6822
  tags: tags,
6574
6823
  viewer: params.viewer,
@@ -6584,23 +6833,23 @@
6584
6833
  if (!cEntity) return [3 /*break*/, 7];
6585
6834
  return [4 /*yield*/, getName(api, entity)];
6586
6835
  case 6:
6587
- name_5 = _k.sent();
6836
+ name_5 = _l.sent();
6588
6837
  cEntity.name = name_5;
6589
- cEntity._renderGroup = getRenderGroupId(zoomItem, (_f = params.viewer) === null || _f === void 0 ? void 0 : _f.terrainProvider);
6838
+ cEntity._renderGroup = getRenderGroupId(zoomItem, (_g = params.viewer) === null || _g === void 0 ? void 0 : _g.terrainProvider);
6590
6839
  cEntities.set(entity.Bruce.ID, cEntity);
6591
- _k.label = 7;
6840
+ _l.label = 7;
6592
6841
  case 7: return [2 /*return*/];
6593
6842
  }
6594
6843
  });
6595
6844
  };
6596
6845
  i = 0;
6597
- _h.label = 11;
6846
+ _j.label = 11;
6598
6847
  case 11:
6599
6848
  if (!(i < params.entities.length)) return [3 /*break*/, 14];
6600
6849
  return [5 /*yield**/, _loop_2(i)];
6601
6850
  case 12:
6602
- _h.sent();
6603
- _h.label = 13;
6851
+ _j.sent();
6852
+ _j.label = 13;
6604
6853
  case 13:
6605
6854
  i++;
6606
6855
  return [3 /*break*/, 11];
@@ -7823,6 +8072,165 @@
7823
8072
  EntityLabel.GetLabel = GetLabel;
7824
8073
  })(exports.EntityLabel || (exports.EntityLabel = {}));
7825
8074
 
8075
+ function getColor$2(viewer, obj) {
8076
+ var value = null;
8077
+ if (obj === null || obj === void 0 ? void 0 : obj.getValue) {
8078
+ var date = viewer.scene.lastRenderTime;
8079
+ if (!date) {
8080
+ date = viewer.clock.currentTime;
8081
+ }
8082
+ value = obj.getValue(date);
8083
+ }
8084
+ else {
8085
+ value = obj;
8086
+ }
8087
+ if (value && value instanceof Cesium.ColorMaterialProperty) {
8088
+ value = value.color;
8089
+ }
8090
+ return value;
8091
+ }
8092
+ var CesiumAnimatedInOut;
8093
+ (function (CesiumAnimatedInOut) {
8094
+ /**
8095
+ * Animates an Entity out of the scene.
8096
+ * Removes it from the scene at the end of the animation.
8097
+ * @param params
8098
+ */
8099
+ function AnimateOut(params) {
8100
+ var viewer = params.viewer, entity = params.entity;
8101
+ if (entity instanceof Cesium.Entity) {
8102
+ var pieces = exports.EntityUtils.GatherEntity({
8103
+ entity: entity,
8104
+ });
8105
+ var leaderSet = false;
8106
+ var removed_1 = false;
8107
+ var doRemove_1 = function () {
8108
+ if (removed_1) {
8109
+ return;
8110
+ }
8111
+ removed_1 = true;
8112
+ var removal = viewer.scene.postRender.addEventListener(function () {
8113
+ removal();
8114
+ exports.EntityRenderEngine.Remove({
8115
+ viewer: viewer,
8116
+ entity: entity
8117
+ });
8118
+ });
8119
+ };
8120
+ var _loop_1 = function (i) {
8121
+ var piece = pieces[i];
8122
+ if (piece instanceof Cesium.Entity) {
8123
+ var animateColor_1;
8124
+ var thing_1;
8125
+ var colorPropKey_1;
8126
+ if (piece.model) {
8127
+ var curColor = getColor$2(viewer, piece.model.color);
8128
+ if (!curColor) {
8129
+ curColor = Cesium.Color.WHITE.clone();
8130
+ }
8131
+ animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
8132
+ durationMs: 500,
8133
+ targetColor: curColor.withAlpha(0.01),
8134
+ startColor: curColor,
8135
+ viewer: viewer
8136
+ });
8137
+ thing_1 = piece.model;
8138
+ colorPropKey_1 = "color";
8139
+ }
8140
+ else if (piece.point) {
8141
+ var curColor = getColor$2(viewer, piece.point.color);
8142
+ if (!curColor) {
8143
+ curColor = Cesium.Color.WHITE.clone();
8144
+ }
8145
+ animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
8146
+ durationMs: 500,
8147
+ targetColor: curColor.withAlpha(0.01),
8148
+ startColor: curColor,
8149
+ viewer: viewer
8150
+ });
8151
+ thing_1 = piece.point;
8152
+ colorPropKey_1 = "color";
8153
+ }
8154
+ else if (piece.billboard) {
8155
+ var curColor = getColor$2(viewer, piece.billboard.color);
8156
+ if (!curColor) {
8157
+ curColor = Cesium.Color.WHITE.clone();
8158
+ }
8159
+ animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
8160
+ durationMs: 200,
8161
+ targetColor: curColor.withAlpha(0.0),
8162
+ startColor: curColor,
8163
+ viewer: viewer
8164
+ });
8165
+ thing_1 = piece.billboard;
8166
+ colorPropKey_1 = "color";
8167
+ }
8168
+ // Other graphic types don't support colour animation.
8169
+ if (thing_1 && colorPropKey_1 && animateColor_1) {
8170
+ var isLeader_1 = !leaderSet;
8171
+ leaderSet = true;
8172
+ var callback = function () {
8173
+ var color = animateColor_1.GetColor();
8174
+ if (isLeader_1 && animateColor_1.IsDone()) {
8175
+ doRemove_1();
8176
+ thing_1[colorPropKey_1] = new Cesium.ConstantProperty(color);
8177
+ }
8178
+ return color;
8179
+ };
8180
+ if (thing_1[colorPropKey_1] instanceof Cesium.CallbackProperty) {
8181
+ thing_1[colorPropKey_1].setCallback(callback, false);
8182
+ }
8183
+ else {
8184
+ thing_1[colorPropKey_1] = new Cesium.CallbackProperty(callback, false);
8185
+ }
8186
+ }
8187
+ }
8188
+ };
8189
+ for (var i = 0; i < pieces.length; i++) {
8190
+ _loop_1(i);
8191
+ }
8192
+ // Nothing animated, so just remove the entity.
8193
+ if (!leaderSet) {
8194
+ exports.EntityRenderEngine.Remove({
8195
+ viewer: viewer,
8196
+ entity: entity
8197
+ });
8198
+ }
8199
+ }
8200
+ else if (entity instanceof Cesium.Primitive) {
8201
+ if (viewer.scene.primitives.contains(entity)) {
8202
+ viewer.scene.primitives.remove(entity);
8203
+ }
8204
+ }
8205
+ else if (entity instanceof Cesium.Cesium3DTileFeature) {
8206
+ try {
8207
+ CesiumAnimatedProperty.AnimateTFeatureColor({
8208
+ durationMs: 500,
8209
+ feature: entity,
8210
+ targetColor: Cesium.Color.WHITE.withAlpha(0.0),
8211
+ startColor: entity.color ? entity.color : Cesium.Color.WHITE.clone(),
8212
+ viewer: viewer,
8213
+ onDone: function () {
8214
+ var tileset = entity === null || entity === void 0 ? void 0 : entity.tileset;
8215
+ if (tileset && viewer.scene.primitives.contains(tileset)) {
8216
+ entity.show = false;
8217
+ }
8218
+ }
8219
+ });
8220
+ }
8221
+ catch (e) {
8222
+ console.error(e);
8223
+ // If an error occurs, just hide the feature.
8224
+ var tileset = entity === null || entity === void 0 ? void 0 : entity.tileset;
8225
+ if (tileset && viewer.scene.primitives.contains(tileset)) {
8226
+ entity.show = false;
8227
+ }
8228
+ }
8229
+ }
8230
+ }
8231
+ CesiumAnimatedInOut.AnimateOut = AnimateOut;
8232
+ })(CesiumAnimatedInOut || (CesiumAnimatedInOut = {}));
8233
+
7826
8234
  /**
7827
8235
  * Returns if a given visual is alive and in the scene.
7828
8236
  * @param viewer
@@ -7853,28 +8261,10 @@
7853
8261
  }
7854
8262
  function removeEntity(viewer, visual) {
7855
8263
  unmarkEntity(visual, false);
7856
- if (visual instanceof Cesium.Entity) {
7857
- exports.EntityRenderEngine.Remove({
7858
- viewer: viewer,
7859
- entity: visual
7860
- });
7861
- }
7862
- else if (visual instanceof Cesium.Primitive) {
7863
- if (viewer.scene.primitives.contains(visual)) {
7864
- viewer.scene.primitives.remove(visual);
7865
- }
7866
- }
7867
- else if (visual instanceof Cesium.Cesium3DTileFeature) {
7868
- try {
7869
- var tileset = visual === null || visual === void 0 ? void 0 : visual.tileset;
7870
- if (tileset && viewer.scene.primitives.contains(tileset)) {
7871
- visual.show = false;
7872
- }
7873
- }
7874
- catch (e) {
7875
- console.error(e);
7876
- }
7877
- }
8264
+ CesiumAnimatedInOut.AnimateOut({
8265
+ entity: visual,
8266
+ viewer: viewer
8267
+ });
7878
8268
  }
7879
8269
  var MAX_SHOW_DEPTH = 10;
7880
8270
  function updateCEntityShow(viewer, visual, rego, show, ignoreParent, depth) {
@@ -8617,6 +9007,7 @@
8617
9007
  rego: rego
8618
9008
  });
8619
9009
  removeEntity(this.viewer, rego.visual);
9010
+ rego.visual = null;
8620
9011
  var doesInclude = this.rego[entityId_4].find(function (r) { return r.menuItemId === menuItemId; });
8621
9012
  if (doesInclude) {
8622
9013
  this.rego[entityId_4] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
@@ -8648,6 +9039,7 @@
8648
9039
  rego: rego
8649
9040
  });
8650
9041
  removeEntity(this_2.viewer, rego.visual);
9042
+ rego.visual = null;
8651
9043
  (_b = this_2.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({
8652
9044
  type: EVisualUpdateType.Remove,
8653
9045
  entityId: rego.entityId,
@@ -8678,6 +9070,7 @@
8678
9070
  rego: rego
8679
9071
  });
8680
9072
  removeEntity(this.viewer, rego.visual);
9073
+ rego.visual = null;
8681
9074
  this.rego[entityId_5] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
8682
9075
  (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger({
8683
9076
  type: EVisualUpdateType.Remove,
@@ -10462,33 +10855,55 @@
10462
10855
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
10463
10856
  if (force === void 0) { force = false; }
10464
10857
  return __awaiter(this, void 0, void 0, function () {
10465
- var toRemove, i, entity, _k, updated, cEntities, i, entity, id, cEntity, rego, visual, wasClustered, tagIds, rego_1;
10858
+ var entitiesHistoric, toRemove, i, entity, startTmp, stopTmp, startStr, stopStr, historicData, _k, updated, cEntities, i, entity, id, cEntity, rego, visual, wasClustered, tagIds, rego_1;
10466
10859
  return __generator(this, function (_l) {
10467
10860
  switch (_l.label) {
10468
10861
  case 0:
10469
- if ((_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.historicAttrKey) {
10470
- toRemove = entities.filter(function (x) { var _a; return !((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.historicAttrKey); });
10471
- for (i = 0; i < toRemove.length; i++) {
10472
- entity = toRemove[i];
10473
- this.visualsManager.RemoveRegos({
10474
- entityId: entity.Bruce.ID,
10475
- menuItemId: this.item.id,
10476
- requestRender: false
10477
- });
10478
- (_b = this.clustering) === null || _b === void 0 ? void 0 : _b.RemoveEntity(entity.Bruce.ID, false);
10479
- }
10480
- entities = entities.filter(function (x) { var _a; return !!((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.historicAttrKey); });
10481
- }
10482
- return [4 /*yield*/, exports.EntityRenderEngine.Render({
10483
- viewer: this.viewer,
10484
- apiGetter: this.apiGetter,
10485
- entities: entities,
10862
+ entitiesHistoric = {};
10863
+ if (!((_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.historicAttrKey)) return [3 /*break*/, 2];
10864
+ toRemove = entities.filter(function (x) { var _a; return !((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.historicAttrKey); });
10865
+ for (i = 0; i < toRemove.length; i++) {
10866
+ entity = toRemove[i];
10867
+ this.visualsManager.RemoveRegos({
10868
+ entityId: entity.Bruce.ID,
10486
10869
  menuItemId: this.item.id,
10487
- visualRegister: this.visualsManager,
10488
- zoomControl: this.item.CameraZoomSettings,
10489
- force: force
10870
+ requestRender: false
10871
+ });
10872
+ (_b = this.clustering) === null || _b === void 0 ? void 0 : _b.RemoveEntity(entity.Bruce.ID, false);
10873
+ }
10874
+ entities = entities.filter(function (x) { var _a; return !!((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.historicAttrKey); });
10875
+ if (!this.item.historicInterpolation) return [3 /*break*/, 2];
10876
+ if (!entities.length) return [3 /*break*/, 2];
10877
+ startTmp = Cesium.JulianDate.toDate(this.viewer.clock.startTime);
10878
+ stopTmp = Cesium.JulianDate.toDate(this.viewer.clock.stopTime);
10879
+ startStr = new Date(startTmp.getTime() - 1000).toISOString();
10880
+ stopStr = new Date(stopTmp.getTime() + 1000).toISOString();
10881
+ return [4 /*yield*/, bruceModels.EntityHistoricData.GetList({
10882
+ attrKey: this.item.BruceEntity.historicAttrKey,
10883
+ dateTimeFrom: startStr,
10884
+ dateTimeTo: stopStr,
10885
+ entityIds: entities.map(function (x) { return x.Bruce.ID; }),
10886
+ api: this.apiGetter.getApi()
10490
10887
  })];
10491
10888
  case 1:
10889
+ historicData = _l.sent();
10890
+ if (this.disposed) {
10891
+ this.doDispose();
10892
+ return [2 /*return*/];
10893
+ }
10894
+ entitiesHistoric = historicData.recordsByIds;
10895
+ _l.label = 2;
10896
+ case 2: return [4 /*yield*/, exports.EntityRenderEngine.Render({
10897
+ viewer: this.viewer,
10898
+ apiGetter: this.apiGetter,
10899
+ entities: entities,
10900
+ menuItemId: this.item.id,
10901
+ visualRegister: this.visualsManager,
10902
+ zoomControl: this.item.CameraZoomSettings,
10903
+ entitiesHistoric: entitiesHistoric,
10904
+ force: force
10905
+ })];
10906
+ case 3:
10492
10907
  _k = _l.sent(), updated = _k.updated, cEntities = _k.entities;
10493
10908
  if (this.disposed) {
10494
10909
  this.doDispose();
@@ -23598,7 +24013,7 @@
23598
24013
  ViewRenderEngine.Render = Render;
23599
24014
  })(exports.ViewRenderEngine || (exports.ViewRenderEngine = {}));
23600
24015
 
23601
- var VERSION = "3.8.2";
24016
+ var VERSION = "3.8.3";
23602
24017
 
23603
24018
  exports.VERSION = VERSION;
23604
24019
  exports.CesiumParabola = CesiumParabola;