bruce-cesium 3.8.2 → 3.8.4

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,69 @@
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.cachedCalc = null;
1275
+ this.cachedTime = null;
1276
+ this.viewer = params.viewer;
1277
+ this.positions = params.posses;
1278
+ // Order positions by date.
1279
+ this.positions.sort(function (a, b) {
1280
+ return a.dateTime.getTime() - b.dateTime.getTime();
1281
+ });
1282
+ }
1283
+ AnimatePositionSeries.prototype.GetValue = function () {
1284
+ var _this = this;
1285
+ var now = this.viewer.scene.lastRenderTime;
1286
+ if (!now) {
1287
+ now = this.viewer.clock.currentTime;
1288
+ }
1289
+ var nowTime = Cesium.JulianDate.toDate(now);
1290
+ if (this.cachedTime == nowTime.getTime()) {
1291
+ return this.cachedCalc;
1292
+ }
1293
+ var calculate = function () {
1294
+ // See if we're before the first position.
1295
+ if (nowTime.getTime() <= _this.positions[0].dateTime.getTime()) {
1296
+ return _this.positions[0].pos3d;
1297
+ }
1298
+ // See if we're after the last position.
1299
+ if (nowTime.getTime() >= _this.positions[_this.positions.length - 1].dateTime.getTime()) {
1300
+ return _this.positions[_this.positions.length - 1].pos3d;
1301
+ }
1302
+ // Find the current position.
1303
+ var lastIndex = 0;
1304
+ for (var i = 1; i < _this.positions.length; i++) {
1305
+ var pos = _this.positions[i];
1306
+ if (nowTime.getTime() >= pos.dateTime.getTime()) {
1307
+ lastIndex = i;
1308
+ }
1309
+ else {
1310
+ break;
1311
+ }
1312
+ }
1313
+ var last = _this.positions[lastIndex];
1314
+ // Interpolate the position.
1315
+ var next = _this.positions[lastIndex + 1];
1316
+ if (!next) {
1317
+ return last.pos3d;
1318
+ }
1319
+ var progress = (nowTime.getTime() - last.dateTime.getTime()) / (next.dateTime.getTime() - last.dateTime.getTime());
1320
+ return Cesium.Cartesian3.lerp(last.pos3d, next.pos3d, progress, new Cesium.Cartesian3());
1321
+ };
1322
+ this.cachedTime = nowTime.getTime();
1323
+ this.cachedCalc = calculate();
1324
+ return this.cachedCalc;
1325
+ };
1326
+ return AnimatePositionSeries;
1327
+ }());
1328
+ CesiumAnimatedProperty.AnimatePositionSeries = AnimatePositionSeries;
1259
1329
  })(CesiumAnimatedProperty || (CesiumAnimatedProperty = {}));
1260
1330
 
1261
1331
  /**
@@ -1612,10 +1682,32 @@
1612
1682
  }
1613
1683
  CesiumEntityStyler.Refresh = Refresh;
1614
1684
  function BakeDefaultColor(params) {
1615
- var viewer = params.viewer, entity = params.entity, override = params.override;
1685
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1686
+ var viewer = params.viewer, entity = params.entity, override = params.override, colors = params.colors, refresh = params.refresh;
1616
1687
  if (!entity) {
1617
1688
  return;
1618
1689
  }
1690
+ if (refresh == null) {
1691
+ refresh = true;
1692
+ }
1693
+ var colorMap;
1694
+ if (colors) {
1695
+ if (!(colors instanceof Map)) {
1696
+ var keys = Object.keys(colors);
1697
+ var map = new Map();
1698
+ for (var i = 0; i < keys.length; i++) {
1699
+ var key = keys[i];
1700
+ map.set(key, colors[key]);
1701
+ }
1702
+ colorMap = map;
1703
+ }
1704
+ else {
1705
+ colorMap = colors;
1706
+ }
1707
+ }
1708
+ else {
1709
+ colorMap = new Map();
1710
+ }
1619
1711
  var parts = exports.EntityUtils.GatherEntity({
1620
1712
  entity: entity
1621
1713
  });
@@ -1633,37 +1725,61 @@
1633
1725
  }
1634
1726
  if (part instanceof Cesium.Cesium3DTileFeature) {
1635
1727
  var opacity = getAppliedOpacity(part);
1636
- storeColor("default", calculateCurColor(viewer, part), part);
1637
- refreshColor(viewer, part, opacity);
1728
+ var color = (_a = colorMap.get("feature")) !== null && _a !== void 0 ? _a : calculateCurColor(viewer, part);
1729
+ storeColor("default", color, part);
1730
+ if (refresh) {
1731
+ refreshColor(viewer, part, opacity);
1732
+ }
1638
1733
  }
1639
1734
  else if (part instanceof Cesium.Entity) {
1640
1735
  if (part.billboard) {
1641
- storeColor("default", calculateCurColor(viewer, part.billboard), part.billboard);
1642
- refreshColor(viewer, part.billboard, getAppliedOpacity(part.billboard));
1736
+ var color = (_b = colorMap.get("billboard")) !== null && _b !== void 0 ? _b : calculateCurColor(viewer, part.billboard);
1737
+ storeColor("default", color, part.billboard);
1738
+ if (refresh) {
1739
+ refreshColor(viewer, part.billboard, getAppliedOpacity(part.billboard));
1740
+ }
1643
1741
  }
1644
1742
  if (part.model) {
1645
- storeColor("default", calculateCurColor(viewer, part.model), part.model);
1646
- refreshColor(viewer, part.model, getAppliedOpacity(part.model));
1743
+ var color = (_c = colorMap.get("model")) !== null && _c !== void 0 ? _c : calculateCurColor(viewer, part.model);
1744
+ storeColor("default", color, part.model);
1745
+ if (refresh) {
1746
+ refreshColor(viewer, part.model, getAppliedOpacity(part.model));
1747
+ }
1647
1748
  }
1648
1749
  if (part.polyline) {
1649
- storeColor("default", calculateCurColor(viewer, part.polyline), part.polyline);
1650
- refreshColor(viewer, part.polyline, getAppliedOpacity(part.polyline));
1750
+ var color = (_d = colorMap.get("polyline")) !== null && _d !== void 0 ? _d : calculateCurColor(viewer, part.polyline);
1751
+ storeColor("default", color, part.polyline);
1752
+ if (refresh) {
1753
+ refreshColor(viewer, part.polyline, getAppliedOpacity(part.polyline));
1754
+ }
1651
1755
  }
1652
1756
  if (part.polygon) {
1653
- storeColor("default", calculateCurColor(viewer, part.polygon), part.polygon);
1654
- refreshColor(viewer, part.polygon, getAppliedOpacity(part.polygon));
1757
+ var color = (_e = colorMap.get("polygon")) !== null && _e !== void 0 ? _e : calculateCurColor(viewer, part.polygon);
1758
+ storeColor("default", color, part.polygon);
1759
+ if (refresh) {
1760
+ refreshColor(viewer, part.polygon, getAppliedOpacity(part.polygon));
1761
+ }
1655
1762
  }
1656
1763
  if (part.corridor) {
1657
- storeColor("default", calculateCurColor(viewer, part.corridor), part.corridor);
1658
- refreshColor(viewer, part.corridor, getAppliedOpacity(part.corridor));
1764
+ var color = (_f = colorMap.get("corridor")) !== null && _f !== void 0 ? _f : calculateCurColor(viewer, part.corridor);
1765
+ storeColor("default", color, part.corridor);
1766
+ if (refresh) {
1767
+ refreshColor(viewer, part.corridor, getAppliedOpacity(part.corridor));
1768
+ }
1659
1769
  }
1660
1770
  if (part.point) {
1661
- storeColor("default", calculateCurColor(viewer, part.point), part.point);
1662
- refreshColor(viewer, part.point, getAppliedOpacity(part.point));
1771
+ var color = (_g = colorMap.get("point")) !== null && _g !== void 0 ? _g : calculateCurColor(viewer, part.point);
1772
+ storeColor("default", color, part.point);
1773
+ if (refresh) {
1774
+ refreshColor(viewer, part.point, getAppliedOpacity(part.point));
1775
+ }
1663
1776
  }
1664
1777
  if (part.ellipse) {
1665
- storeColor("default", calculateCurColor(viewer, part.ellipse), part.ellipse);
1666
- refreshColor(viewer, part.ellipse, getAppliedOpacity(part.ellipse));
1778
+ var color = (_h = colorMap.get("ellipse")) !== null && _h !== void 0 ? _h : calculateCurColor(viewer, part.ellipse);
1779
+ storeColor("default", color, part.ellipse);
1780
+ if (refresh) {
1781
+ refreshColor(viewer, part.ellipse, getAppliedOpacity(part.ellipse));
1782
+ }
1667
1783
  }
1668
1784
  }
1669
1785
  }
@@ -4880,6 +4996,27 @@
4880
4996
  envId: envId
4881
4997
  };
4882
4998
  }
4999
+ function getSeriesPossesForHistoricEntity(viewer, heightRef, historic) {
5000
+ var series = [];
5001
+ for (var i = 0; i < historic.length; i++) {
5002
+ var item = historic[i];
5003
+ var pos3d = exports.EntityUtils.GetPos({
5004
+ entity: item.data,
5005
+ viewer: viewer,
5006
+ recordHeightRef: heightRef,
5007
+ returnHeightRef: heightRef
5008
+ });
5009
+ var dateTime = new Date(item.dateTime);
5010
+ if (!dateTime || !pos3d || isNaN(pos3d.x) || isNaN(pos3d.y) || isNaN(pos3d.z)) {
5011
+ continue;
5012
+ }
5013
+ series.push({
5014
+ dateTime: dateTime,
5015
+ pos3d: pos3d
5016
+ });
5017
+ }
5018
+ return series;
5019
+ }
4883
5020
  (function (EntityRenderEngine) {
4884
5021
  function Render(params) {
4885
5022
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
@@ -4974,7 +5111,7 @@
4974
5111
  }
4975
5112
  }
4976
5113
  if (!(models.length > 0)) return [3 /*break*/, 2];
4977
- mParams = __assign(__assign({}, groupRenderParams), { rendered: cEntities, entities: models });
5114
+ mParams = __assign(__assign({}, groupRenderParams), { rendered: cEntities, entities: models, entitiesHistoric: params.entitiesHistoric });
4978
5115
  return [4 /*yield*/, Model3d.RenderGroup(mParams)];
4979
5116
  case 1:
4980
5117
  mEntities = _m.sent();
@@ -5003,6 +5140,7 @@
5003
5140
  return [2 /*return*/, "continue"];
5004
5141
  }
5005
5142
  pParams = __assign(__assign({}, groupRenderParams), { entities: [], rendered: cEntities });
5143
+ pParams.entitiesHistoric = params.entitiesHistoric;
5006
5144
  zoomItem = pParams.zoomItems[entity.Bruce.ID];
5007
5145
  for (j = 0; j < entity.geometry.MultiGeometry.length; j++) {
5008
5146
  subEntity = __assign(__assign({}, entity), { geometry: entity.geometry.MultiGeometry[j], Bruce: __assign(__assign({}, entity.Bruce), { ID: bruceModels.ObjectUtils.UId() }) });
@@ -5105,7 +5243,7 @@
5105
5243
  _m.label = 10;
5106
5244
  case 10:
5107
5245
  if (!(points.length > 0)) return [3 /*break*/, 12];
5108
- pParams = __assign(__assign({}, groupRenderParams), { entities: points, rendered: cEntities });
5246
+ pParams = __assign(__assign({}, groupRenderParams), { entities: points, rendered: cEntities, entitiesHistoric: params.entitiesHistoric });
5109
5247
  return [4 /*yield*/, Point.RenderGroup(pParams)];
5110
5248
  case 11:
5111
5249
  pEntities = _m.sent();
@@ -5174,11 +5312,14 @@
5174
5312
  function Render(params) {
5175
5313
  var _a, _b, _c, _d;
5176
5314
  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;
5315
+ 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
5316
  return __generator(this, function (_e) {
5179
5317
  switch (_e.label) {
5180
5318
  case 0:
5181
5319
  entity = params.entity;
5320
+ if (!params.entityHistoric) {
5321
+ params.entityHistoric = [];
5322
+ }
5182
5323
  style = params.style;
5183
5324
  type = style.Type;
5184
5325
  if (type == null) {
@@ -5274,9 +5415,32 @@
5274
5415
  disableDepthTest = Boolean(style.renderOnTop);
5275
5416
  if (iconScale > 0) {
5276
5417
  bColor = style.iconTintColor ? bruceModels.Calculator.GetColor(style.iconTintColor, entity, params.tags) : null;
5277
- cColor_1 = bColor ? colorToCColor(bColor) : undefined;
5418
+ cColor = bColor ? colorToCColor(bColor) : Cesium.Color.WHITE.clone();
5278
5419
  heightRef_1 = getHeightRef(style);
5279
5420
  if (!params.rendered || !params.rendered.billboard) {
5421
+ animateColorIn_1 = new CesiumAnimatedProperty.AnimateColor({
5422
+ durationMs: 200,
5423
+ targetColor: cColor,
5424
+ startColor: cColor.withAlpha(0),
5425
+ viewer: params.viewer
5426
+ });
5427
+ position = null;
5428
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_1, params.entityHistoric);
5429
+ if (series.length > 1) {
5430
+ animatePosition_1 = new CesiumAnimatedProperty.AnimatePositionSeries({
5431
+ posses: series,
5432
+ viewer: params.viewer
5433
+ });
5434
+ position = new Cesium.CallbackProperty(function () { return animatePosition_1.GetValue(); }, false);
5435
+ }
5436
+ else {
5437
+ position = new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
5438
+ viewer: params.viewer,
5439
+ entity: entity,
5440
+ recordHeightRef: heightRef_1,
5441
+ returnHeightRef: heightRef_1
5442
+ }); }, true);
5443
+ }
5280
5444
  cEntity = new Cesium.Entity({
5281
5445
  id: bruceModels.ObjectUtils.UId(10),
5282
5446
  billboard: {
@@ -5287,18 +5451,27 @@
5287
5451
  scale: iconScale,
5288
5452
  disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined,
5289
5453
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance),
5290
- color: new Cesium.CallbackProperty(function () { return cColor_1; }, true),
5454
+ color: new Cesium.CallbackProperty(function () {
5455
+ var color = animateColorIn_1.GetColor();
5456
+ if (animateColorIn_1.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.billboard)) {
5457
+ cEntity.billboard.color = new Cesium.CallbackProperty(function () { return color; }, true);
5458
+ }
5459
+ return color;
5460
+ }, false),
5291
5461
  // Would be great once we have a setting for this.
5292
5462
  // translucencyByDistance: getTranslucencyByDistance(params.minDistance, params.maxDistance),
5293
5463
  },
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),
5464
+ position: position,
5300
5465
  show: true
5301
5466
  });
5467
+ exports.CesiumEntityStyler.BakeDefaultColor({
5468
+ entity: cEntity,
5469
+ colors: {
5470
+ "billboard": cColor
5471
+ },
5472
+ viewer: params.viewer,
5473
+ refresh: false
5474
+ });
5302
5475
  }
5303
5476
  else {
5304
5477
  prepareExistingGraphic(params.rendered);
@@ -5311,25 +5484,35 @@
5311
5484
  cEntity.billboard.heightReference = new Cesium.ConstantProperty(getHeightRef(style));
5312
5485
  cEntity.billboard.disableDepthTestDistance = new Cesium.ConstantProperty(disableDepthTest ? Number.POSITIVE_INFINITY : undefined);
5313
5486
  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,
5487
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_1, params.entityHistoric);
5488
+ if (series.length > 1) {
5489
+ animatePosition_2 = new CesiumAnimatedProperty.AnimatePositionSeries({
5490
+ posses: series,
5491
+ viewer: params.viewer
5492
+ });
5493
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_2.GetValue(); }, false);
5494
+ }
5495
+ else {
5496
+ pos3d = exports.EntityUtils.GetPos({
5325
5497
  viewer: params.viewer,
5326
- startPos3d: prevPos3d
5498
+ entity: entity,
5499
+ recordHeightRef: heightRef_1,
5500
+ returnHeightRef: heightRef_1
5327
5501
  });
5328
- cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_1.GetValue(); }, false);
5502
+ prevPos3d = getValue$1(params.viewer, cEntity.position);
5503
+ if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
5504
+ animatePosition_3 = new CesiumAnimatedProperty.AnimatePosition({
5505
+ durationMs: 200,
5506
+ targetPos3d: pos3d,
5507
+ viewer: params.viewer,
5508
+ startPos3d: prevPos3d
5509
+ });
5510
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_3.GetValue(); }, false);
5511
+ }
5329
5512
  }
5330
5513
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
5331
5514
  exports.CesiumEntityStyler.SetDefaultColor({
5332
- color: cColor_1 ? cColor_1 : new Cesium.Color(),
5515
+ color: cColor ? cColor : new Cesium.Color(),
5333
5516
  entity: cEntity,
5334
5517
  viewer: params.viewer,
5335
5518
  override: true,
@@ -5474,6 +5657,29 @@
5474
5657
  circleBillboard = createCircleBillboard(size, cColor.toCssColorString());
5475
5658
  disableDepthTest = Boolean(style.renderOnTop);
5476
5659
  if (!params.rendered || !params.rendered.billboard) {
5660
+ animateColorIn_2 = new CesiumAnimatedProperty.AnimateColor({
5661
+ durationMs: 200,
5662
+ targetColor: cColor,
5663
+ startColor: cColor.withAlpha(0),
5664
+ viewer: params.viewer
5665
+ });
5666
+ position = null;
5667
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_2, params.entityHistoric);
5668
+ if (series.length > 1) {
5669
+ animatePosition_4 = new CesiumAnimatedProperty.AnimatePositionSeries({
5670
+ posses: series,
5671
+ viewer: params.viewer
5672
+ });
5673
+ position = new Cesium.CallbackProperty(function () { return animatePosition_4.GetValue(); }, false);
5674
+ }
5675
+ else {
5676
+ position = new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
5677
+ viewer: params.viewer,
5678
+ entity: entity,
5679
+ recordHeightRef: heightRef_2,
5680
+ returnHeightRef: heightRef_2
5681
+ }); }, true);
5682
+ }
5477
5683
  cEntity = new Cesium.Entity({
5478
5684
  id: bruceModels.ObjectUtils.UId(10),
5479
5685
  // point: {
@@ -5489,19 +5695,28 @@
5489
5695
  height: circleBillboard.height,
5490
5696
  width: circleBillboard.width,
5491
5697
  image: circleBillboard.canvasDataUri,
5492
- color: new Cesium.CallbackProperty(function () { return undefined; }, true),
5698
+ color: new Cesium.CallbackProperty(function () {
5699
+ var color = animateColorIn_2.GetColor();
5700
+ if (animateColorIn_2.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.billboard)) {
5701
+ cEntity.billboard.color = new Cesium.CallbackProperty(function () { return color; }, true);
5702
+ }
5703
+ return color;
5704
+ }, false),
5493
5705
  heightReference: heightRef_2,
5494
5706
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance),
5495
5707
  disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined
5496
5708
  },
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),
5709
+ position: position,
5503
5710
  show: true
5504
5711
  });
5712
+ exports.CesiumEntityStyler.BakeDefaultColor({
5713
+ entity: cEntity,
5714
+ viewer: params.viewer,
5715
+ colors: {
5716
+ "billboard": cColor
5717
+ },
5718
+ refresh: false
5719
+ });
5505
5720
  }
5506
5721
  else {
5507
5722
  prepareExistingGraphic(params.rendered);
@@ -5516,21 +5731,31 @@
5516
5731
  cEntity.billboard.heightReference = new Cesium.ConstantProperty(heightRef_2);
5517
5732
  cEntity.billboard.distanceDisplayCondition = new Cesium.ConstantProperty(getDisplayCondition(params.minDistance, params.maxDistance));
5518
5733
  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,
5734
+ series = getSeriesPossesForHistoricEntity(params.viewer, heightRef_2, params.entityHistoric);
5735
+ if (series.length > 1) {
5736
+ animatePosition_5 = new CesiumAnimatedProperty.AnimatePositionSeries({
5737
+ posses: series,
5738
+ viewer: params.viewer
5739
+ });
5740
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_5.GetValue(); }, false);
5741
+ }
5742
+ else {
5743
+ pos3d = exports.EntityUtils.GetPos({
5530
5744
  viewer: params.viewer,
5531
- startPos3d: prevPos3d
5745
+ entity: entity,
5746
+ recordHeightRef: heightRef_2,
5747
+ returnHeightRef: heightRef_2
5532
5748
  });
5533
- cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_2.GetValue(); }, false);
5749
+ prevPos3d = getValue$1(params.viewer, cEntity.position);
5750
+ if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
5751
+ animatePosition_6 = new CesiumAnimatedProperty.AnimatePosition({
5752
+ durationMs: 200,
5753
+ targetPos3d: pos3d,
5754
+ viewer: params.viewer,
5755
+ startPos3d: prevPos3d
5756
+ });
5757
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_6.GetValue(); }, false);
5758
+ }
5534
5759
  }
5535
5760
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
5536
5761
  exports.CesiumEntityStyler.SetDefaultColor({
@@ -5555,16 +5780,16 @@
5555
5780
  }
5556
5781
  Point.Render = Render;
5557
5782
  function RenderGroup(params) {
5558
- var _a, _b, _c, _d;
5783
+ var _a, _b, _c, _d, _e;
5559
5784
  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) {
5785
+ var api, cEntities, i, entity, zoomItem, style, _f, tagIds, tags, pStyle, cEntity, name_2;
5786
+ return __generator(this, function (_g) {
5787
+ switch (_g.label) {
5563
5788
  case 0:
5564
5789
  api = params.apiGetter.getApi();
5565
5790
  cEntities = new Map();
5566
5791
  i = 0;
5567
- _f.label = 1;
5792
+ _g.label = 1;
5568
5793
  case 1:
5569
5794
  if (!(i < params.entities.length)) return [3 /*break*/, 11];
5570
5795
  entity = params.entities[i];
@@ -5572,13 +5797,13 @@
5572
5797
  if (!(zoomItem.StyleID != -1)) return [3 /*break*/, 3];
5573
5798
  return [4 /*yield*/, getStyle(api, entity, zoomItem.StyleID)];
5574
5799
  case 2:
5575
- _e = (_a = (_f.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
5800
+ _f = (_a = (_g.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
5576
5801
  return [3 /*break*/, 4];
5577
5802
  case 3:
5578
- _e = zoomItem.Style;
5579
- _f.label = 4;
5803
+ _f = zoomItem.Style;
5804
+ _g.label = 4;
5580
5805
  case 4:
5581
- style = _e;
5806
+ style = _f;
5582
5807
  tagIds = entity.Bruce["Layer.ID"];
5583
5808
  tags = [];
5584
5809
  if (!(tagIds && tagIds.length > 0)) return [3 /*break*/, 6];
@@ -5587,8 +5812,8 @@
5587
5812
  tagIds: tagIds
5588
5813
  })];
5589
5814
  case 5:
5590
- tags = (_f.sent()).tags;
5591
- _f.label = 6;
5815
+ tags = (_g.sent()).tags;
5816
+ _g.label = 6;
5592
5817
  case 6:
5593
5818
  pStyle = (_b = style === null || style === void 0 ? void 0 : style.pointStyle) !== null && _b !== void 0 ? _b : {};
5594
5819
  return [4 /*yield*/, Render({
@@ -5600,20 +5825,21 @@
5600
5825
  apiGetter: params.apiGetter,
5601
5826
  maxDistance: zoomItem.MaxZoom,
5602
5827
  minDistance: zoomItem.MinZoom,
5603
- rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID)
5828
+ rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID),
5829
+ entityHistoric: (_d = params.entitiesHistoric) === null || _d === void 0 ? void 0 : _d[entity.Bruce.ID]
5604
5830
  })];
5605
5831
  case 7:
5606
- cEntity = _f.sent();
5832
+ cEntity = _g.sent();
5607
5833
  if (!cEntity) return [3 /*break*/, 9];
5608
5834
  return [4 /*yield*/, getName(api, entity)];
5609
5835
  case 8:
5610
- name_2 = _f.sent();
5836
+ name_2 = _g.sent();
5611
5837
  cEntity.name = name_2;
5612
- cEntity._renderGroup = getRenderGroupId(zoomItem, (_d = params.viewer) === null || _d === void 0 ? void 0 : _d.terrainProvider);
5613
- _f.label = 9;
5838
+ cEntity._renderGroup = getRenderGroupId(zoomItem, (_e = params.viewer) === null || _e === void 0 ? void 0 : _e.terrainProvider);
5839
+ _g.label = 9;
5614
5840
  case 9:
5615
5841
  cEntities.set(entity.Bruce.ID, cEntity);
5616
- _f.label = 10;
5842
+ _g.label = 10;
5617
5843
  case 10:
5618
5844
  i++;
5619
5845
  return [3 /*break*/, 1];
@@ -6184,6 +6410,9 @@
6184
6410
  function Render(params) {
6185
6411
  var _this = this;
6186
6412
  var entity = params.entity;
6413
+ if (!params.entityHistoric) {
6414
+ params.entityHistoric = [];
6415
+ }
6187
6416
  var transform = entity === null || entity === void 0 ? void 0 : entity.transform;
6188
6417
  var heading = EnsureNumber(transform === null || transform === void 0 ? void 0 : transform.heading);
6189
6418
  heading = (heading + 90) % 360;
@@ -6230,29 +6459,38 @@
6230
6459
  color = colorToCColor(bColor);
6231
6460
  }
6232
6461
  }
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
6462
  var animateScale = null;
6252
6463
  var cEntity = params.rendered;
6253
6464
  if (!cEntity || !cEntity.model) {
6254
6465
  var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(heading), Cesium.Math.toRadians(pitch), Cesium.Math.toRadians(roll));
6255
6466
  var orientation_1 = Cesium.Transforms.headingPitchRollQuaternion(pos3d, hpr);
6467
+ if (!color) {
6468
+ color = Cesium.Color.WHITE.clone();
6469
+ }
6470
+ var animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
6471
+ durationMs: 1500,
6472
+ targetColor: color,
6473
+ startColor: color.clone().withAlpha(0.001),
6474
+ viewer: params.viewer
6475
+ });
6476
+ var position = null;
6477
+ // If we have a series of time-based positions then we'll animate as time changes.
6478
+ var series = getSeriesPossesForHistoricEntity(params.viewer, heightRef, params.entityHistoric);
6479
+ if (series.length > 1) {
6480
+ var animatePosition_7 = new CesiumAnimatedProperty.AnimatePositionSeries({
6481
+ posses: series,
6482
+ viewer: params.viewer
6483
+ });
6484
+ position = new Cesium.CallbackProperty(function () { return animatePosition_7.GetValue(); }, false);
6485
+ }
6486
+ else {
6487
+ position = new Cesium.CallbackProperty(function () { return exports.EntityUtils.GetPos({
6488
+ viewer: params.viewer,
6489
+ entity: entity,
6490
+ recordHeightRef: heightRef,
6491
+ returnHeightRef: heightRef
6492
+ }); }, true);
6493
+ }
6256
6494
  cEntity = new Cesium.Entity({
6257
6495
  id: bruceModels.ObjectUtils.UId(10),
6258
6496
  model: {
@@ -6262,17 +6500,27 @@
6262
6500
  shadows: Cesium.ShadowMode.ENABLED,
6263
6501
  colorBlendAmount: blendAmount,
6264
6502
  colorBlendMode: blendMode,
6265
- color: new Cesium.CallbackProperty(function () { return color; }, true),
6503
+ color: new Cesium.CallbackProperty(function () {
6504
+ var color = animateColor_1.GetColor();
6505
+ if (animateColor_1.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.model)) {
6506
+ cEntity.model.color = new Cesium.CallbackProperty(function () { return color; }, true);
6507
+ }
6508
+ return color;
6509
+ }, false),
6266
6510
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance)
6267
6511
  },
6268
6512
  orientation: new Cesium.CallbackProperty(function () { return orientation_1; }, true),
6269
- position: new Cesium.CallbackProperty(function () { return pos3d; }, true),
6513
+ position: position,
6270
6514
  show: true
6271
6515
  });
6272
6516
  exports.CesiumEntityStyler.BakeDefaultColor({
6273
6517
  entity: cEntity,
6274
6518
  viewer: params.viewer,
6275
- override: true
6519
+ override: true,
6520
+ colors: {
6521
+ "model": color
6522
+ },
6523
+ refresh: false
6276
6524
  });
6277
6525
  }
6278
6526
  else {
@@ -6302,17 +6550,28 @@
6302
6550
  cEntity.model.colorBlendAmount = new Cesium.ConstantProperty(blendAmount);
6303
6551
  cEntity.model.colorBlendMode = new Cesium.ConstantProperty(blendMode);
6304
6552
  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
6553
+ // If we have a series of time-based positions then we'll animate as time changes.
6554
+ var series = getSeriesPossesForHistoricEntity(params.viewer, heightRef, params.entityHistoric);
6555
+ if (series.length > 1) {
6556
+ var animatePosition_8 = new CesiumAnimatedProperty.AnimatePositionSeries({
6557
+ posses: series,
6558
+ viewer: params.viewer
6314
6559
  });
6315
- cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_3.GetValue(); }, false);
6560
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_8.GetValue(); }, false);
6561
+ }
6562
+ else {
6563
+ var prevPos3d = getValue$1(params.viewer, cEntity.position);
6564
+ var posChanged = !prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d);
6565
+ var animatePosition_9 = null;
6566
+ if (posChanged) {
6567
+ animatePosition_9 = new CesiumAnimatedProperty.AnimatePosition({
6568
+ durationMs: 200,
6569
+ targetPos3d: pos3d,
6570
+ viewer: params.viewer,
6571
+ startPos3d: prevPos3d
6572
+ });
6573
+ cEntity.position = new Cesium.CallbackProperty(function () { return animatePosition_9.GetValue(); }, false);
6574
+ }
6316
6575
  }
6317
6576
  // cEntity.orientation = new Cesium.ConstantProperty(orientation);
6318
6577
  var prevHeading = cEntity.model._heading;
@@ -6461,16 +6720,16 @@
6461
6720
  }
6462
6721
  Model3d.Render = Render;
6463
6722
  function RenderGroup(params) {
6464
- var _a, _b, _c, _d, _e, _f;
6723
+ var _a, _b, _c, _d, _e, _f, _g;
6465
6724
  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) {
6725
+ var api, cEntities, reqBody, i, entity, zoomItem, style, _h, tagIds, tags, mStyle, group, level, catId, lodData, _loop_2, i;
6726
+ return __generator(this, function (_j) {
6727
+ switch (_j.label) {
6469
6728
  case 0:
6470
6729
  api = params.apiGetter.getApi();
6471
6730
  return [4 /*yield*/, api.Loading];
6472
6731
  case 1:
6473
- _h.sent();
6732
+ _j.sent();
6474
6733
  cEntities = new Map();
6475
6734
  reqBody = {
6476
6735
  "strict": false,
@@ -6478,7 +6737,7 @@
6478
6737
  "Items": []
6479
6738
  };
6480
6739
  i = 0;
6481
- _h.label = 2;
6740
+ _j.label = 2;
6482
6741
  case 2:
6483
6742
  if (!(i < params.entities.length)) return [3 /*break*/, 9];
6484
6743
  entity = params.entities[i];
@@ -6486,13 +6745,13 @@
6486
6745
  if (!(zoomItem.StyleID != -1)) return [3 /*break*/, 4];
6487
6746
  return [4 /*yield*/, getStyle(api, entity, zoomItem.StyleID)];
6488
6747
  case 3:
6489
- _g = (_a = (_h.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
6748
+ _h = (_a = (_j.sent())) === null || _a === void 0 ? void 0 : _a.Settings;
6490
6749
  return [3 /*break*/, 5];
6491
6750
  case 4:
6492
- _g = zoomItem.Style;
6493
- _h.label = 5;
6751
+ _h = zoomItem.Style;
6752
+ _j.label = 5;
6494
6753
  case 5:
6495
- style = _g;
6754
+ style = _h;
6496
6755
  tagIds = entity.Bruce["Layer.ID"];
6497
6756
  tags = [];
6498
6757
  if (!(tagIds && tagIds.length > 0)) return [3 /*break*/, 7];
@@ -6501,8 +6760,8 @@
6501
6760
  tagIds: tagIds
6502
6761
  })];
6503
6762
  case 6:
6504
- tags = (_h.sent()).tags;
6505
- _h.label = 7;
6763
+ tags = (_j.sent()).tags;
6764
+ _j.label = 7;
6506
6765
  case 7:
6507
6766
  mStyle = (_b = style === null || style === void 0 ? void 0 : style.modelStyle) !== null && _b !== void 0 ? _b : {};
6508
6767
  group = mStyle.lodGroup ? bruceModels.Calculator.GetString(mStyle.lodGroup, entity, tags) : null;
@@ -6523,7 +6782,7 @@
6523
6782
  "group": group,
6524
6783
  "level": level
6525
6784
  });
6526
- _h.label = 8;
6785
+ _j.label = 8;
6527
6786
  case 8:
6528
6787
  i++;
6529
6788
  return [3 /*break*/, 2];
@@ -6532,24 +6791,24 @@
6532
6791
  filter: reqBody
6533
6792
  })];
6534
6793
  case 10:
6535
- lodData = (_h.sent()).lods;
6794
+ lodData = (_j.sent()).lods;
6536
6795
  _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) {
6796
+ var entity, zoomItem, style, _k, tagIds, tags, lod, mStyle, cEntity, name_5;
6797
+ return __generator(this, function (_l) {
6798
+ switch (_l.label) {
6540
6799
  case 0:
6541
6800
  entity = params.entities[i];
6542
6801
  zoomItem = params.zoomItems[entity.Bruce.ID];
6543
6802
  if (!(zoomItem.StyleID != -1)) return [3 /*break*/, 2];
6544
6803
  return [4 /*yield*/, getStyle(api, entity, zoomItem.StyleID)];
6545
6804
  case 1:
6546
- _j = (_c = (_k.sent())) === null || _c === void 0 ? void 0 : _c.Settings;
6805
+ _k = (_c = (_l.sent())) === null || _c === void 0 ? void 0 : _c.Settings;
6547
6806
  return [3 /*break*/, 3];
6548
6807
  case 2:
6549
- _j = zoomItem.Style;
6550
- _k.label = 3;
6808
+ _k = zoomItem.Style;
6809
+ _l.label = 3;
6551
6810
  case 3:
6552
- style = _j;
6811
+ style = _k;
6553
6812
  tagIds = entity.Bruce["Layer.ID"];
6554
6813
  tags = [];
6555
6814
  if (!(tagIds && tagIds.length > 0)) return [3 /*break*/, 5];
@@ -6558,8 +6817,8 @@
6558
6817
  tagIds: tagIds
6559
6818
  })];
6560
6819
  case 4:
6561
- tags = (_k.sent()).tags;
6562
- _k.label = 5;
6820
+ tags = (_l.sent()).tags;
6821
+ _l.label = 5;
6563
6822
  case 5:
6564
6823
  lod = lodData.find(function (x) { return x.entityId == entity.Bruce.ID; });
6565
6824
  if (!(lod === null || lod === void 0 ? void 0 : lod.clientFileId)) {
@@ -6569,6 +6828,7 @@
6569
6828
  cEntity = Render({
6570
6829
  rendered: (_e = params.rendered) === null || _e === void 0 ? void 0 : _e.get(entity.Bruce.ID),
6571
6830
  entity: entity,
6831
+ entityHistoric: (_f = params.entitiesHistoric) === null || _f === void 0 ? void 0 : _f[entity.Bruce.ID],
6572
6832
  style: mStyle,
6573
6833
  tags: tags,
6574
6834
  viewer: params.viewer,
@@ -6584,23 +6844,23 @@
6584
6844
  if (!cEntity) return [3 /*break*/, 7];
6585
6845
  return [4 /*yield*/, getName(api, entity)];
6586
6846
  case 6:
6587
- name_5 = _k.sent();
6847
+ name_5 = _l.sent();
6588
6848
  cEntity.name = name_5;
6589
- cEntity._renderGroup = getRenderGroupId(zoomItem, (_f = params.viewer) === null || _f === void 0 ? void 0 : _f.terrainProvider);
6849
+ cEntity._renderGroup = getRenderGroupId(zoomItem, (_g = params.viewer) === null || _g === void 0 ? void 0 : _g.terrainProvider);
6590
6850
  cEntities.set(entity.Bruce.ID, cEntity);
6591
- _k.label = 7;
6851
+ _l.label = 7;
6592
6852
  case 7: return [2 /*return*/];
6593
6853
  }
6594
6854
  });
6595
6855
  };
6596
6856
  i = 0;
6597
- _h.label = 11;
6857
+ _j.label = 11;
6598
6858
  case 11:
6599
6859
  if (!(i < params.entities.length)) return [3 /*break*/, 14];
6600
6860
  return [5 /*yield**/, _loop_2(i)];
6601
6861
  case 12:
6602
- _h.sent();
6603
- _h.label = 13;
6862
+ _j.sent();
6863
+ _j.label = 13;
6604
6864
  case 13:
6605
6865
  i++;
6606
6866
  return [3 /*break*/, 11];
@@ -7823,6 +8083,165 @@
7823
8083
  EntityLabel.GetLabel = GetLabel;
7824
8084
  })(exports.EntityLabel || (exports.EntityLabel = {}));
7825
8085
 
8086
+ function getColor$2(viewer, obj) {
8087
+ var value = null;
8088
+ if (obj === null || obj === void 0 ? void 0 : obj.getValue) {
8089
+ var date = viewer.scene.lastRenderTime;
8090
+ if (!date) {
8091
+ date = viewer.clock.currentTime;
8092
+ }
8093
+ value = obj.getValue(date);
8094
+ }
8095
+ else {
8096
+ value = obj;
8097
+ }
8098
+ if (value && value instanceof Cesium.ColorMaterialProperty) {
8099
+ value = value.color;
8100
+ }
8101
+ return value;
8102
+ }
8103
+ var CesiumAnimatedInOut;
8104
+ (function (CesiumAnimatedInOut) {
8105
+ /**
8106
+ * Animates an Entity out of the scene.
8107
+ * Removes it from the scene at the end of the animation.
8108
+ * @param params
8109
+ */
8110
+ function AnimateOut(params) {
8111
+ var viewer = params.viewer, entity = params.entity;
8112
+ if (entity instanceof Cesium.Entity) {
8113
+ var pieces = exports.EntityUtils.GatherEntity({
8114
+ entity: entity,
8115
+ });
8116
+ var leaderSet = false;
8117
+ var removed_1 = false;
8118
+ var doRemove_1 = function () {
8119
+ if (removed_1) {
8120
+ return;
8121
+ }
8122
+ removed_1 = true;
8123
+ var removal = viewer.scene.postRender.addEventListener(function () {
8124
+ removal();
8125
+ exports.EntityRenderEngine.Remove({
8126
+ viewer: viewer,
8127
+ entity: entity
8128
+ });
8129
+ });
8130
+ };
8131
+ var _loop_1 = function (i) {
8132
+ var piece = pieces[i];
8133
+ if (piece instanceof Cesium.Entity) {
8134
+ var animateColor_1;
8135
+ var thing_1;
8136
+ var colorPropKey_1;
8137
+ if (piece.model) {
8138
+ var curColor = getColor$2(viewer, piece.model.color);
8139
+ if (!curColor) {
8140
+ curColor = Cesium.Color.WHITE.clone();
8141
+ }
8142
+ animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
8143
+ durationMs: 500,
8144
+ targetColor: curColor.withAlpha(0.01),
8145
+ startColor: curColor,
8146
+ viewer: viewer
8147
+ });
8148
+ thing_1 = piece.model;
8149
+ colorPropKey_1 = "color";
8150
+ }
8151
+ else if (piece.point) {
8152
+ var curColor = getColor$2(viewer, piece.point.color);
8153
+ if (!curColor) {
8154
+ curColor = Cesium.Color.WHITE.clone();
8155
+ }
8156
+ animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
8157
+ durationMs: 500,
8158
+ targetColor: curColor.withAlpha(0.01),
8159
+ startColor: curColor,
8160
+ viewer: viewer
8161
+ });
8162
+ thing_1 = piece.point;
8163
+ colorPropKey_1 = "color";
8164
+ }
8165
+ else if (piece.billboard) {
8166
+ var curColor = getColor$2(viewer, piece.billboard.color);
8167
+ if (!curColor) {
8168
+ curColor = Cesium.Color.WHITE.clone();
8169
+ }
8170
+ animateColor_1 = new CesiumAnimatedProperty.AnimateColor({
8171
+ durationMs: 200,
8172
+ targetColor: curColor.withAlpha(0.0),
8173
+ startColor: curColor,
8174
+ viewer: viewer
8175
+ });
8176
+ thing_1 = piece.billboard;
8177
+ colorPropKey_1 = "color";
8178
+ }
8179
+ // Other graphic types don't support colour animation.
8180
+ if (thing_1 && colorPropKey_1 && animateColor_1) {
8181
+ var isLeader_1 = !leaderSet;
8182
+ leaderSet = true;
8183
+ var callback = function () {
8184
+ var color = animateColor_1.GetColor();
8185
+ if (isLeader_1 && animateColor_1.IsDone()) {
8186
+ doRemove_1();
8187
+ thing_1[colorPropKey_1] = new Cesium.ConstantProperty(color);
8188
+ }
8189
+ return color;
8190
+ };
8191
+ if (thing_1[colorPropKey_1] instanceof Cesium.CallbackProperty) {
8192
+ thing_1[colorPropKey_1].setCallback(callback, false);
8193
+ }
8194
+ else {
8195
+ thing_1[colorPropKey_1] = new Cesium.CallbackProperty(callback, false);
8196
+ }
8197
+ }
8198
+ }
8199
+ };
8200
+ for (var i = 0; i < pieces.length; i++) {
8201
+ _loop_1(i);
8202
+ }
8203
+ // Nothing animated, so just remove the entity.
8204
+ if (!leaderSet) {
8205
+ exports.EntityRenderEngine.Remove({
8206
+ viewer: viewer,
8207
+ entity: entity
8208
+ });
8209
+ }
8210
+ }
8211
+ else if (entity instanceof Cesium.Primitive) {
8212
+ if (viewer.scene.primitives.contains(entity)) {
8213
+ viewer.scene.primitives.remove(entity);
8214
+ }
8215
+ }
8216
+ else if (entity instanceof Cesium.Cesium3DTileFeature) {
8217
+ try {
8218
+ CesiumAnimatedProperty.AnimateTFeatureColor({
8219
+ durationMs: 500,
8220
+ feature: entity,
8221
+ targetColor: Cesium.Color.WHITE.withAlpha(0.0),
8222
+ startColor: entity.color ? entity.color : Cesium.Color.WHITE.clone(),
8223
+ viewer: viewer,
8224
+ onDone: function () {
8225
+ var tileset = entity === null || entity === void 0 ? void 0 : entity.tileset;
8226
+ if (tileset && viewer.scene.primitives.contains(tileset)) {
8227
+ entity.show = false;
8228
+ }
8229
+ }
8230
+ });
8231
+ }
8232
+ catch (e) {
8233
+ console.error(e);
8234
+ // If an error occurs, just hide the feature.
8235
+ var tileset = entity === null || entity === void 0 ? void 0 : entity.tileset;
8236
+ if (tileset && viewer.scene.primitives.contains(tileset)) {
8237
+ entity.show = false;
8238
+ }
8239
+ }
8240
+ }
8241
+ }
8242
+ CesiumAnimatedInOut.AnimateOut = AnimateOut;
8243
+ })(CesiumAnimatedInOut || (CesiumAnimatedInOut = {}));
8244
+
7826
8245
  /**
7827
8246
  * Returns if a given visual is alive and in the scene.
7828
8247
  * @param viewer
@@ -7853,28 +8272,10 @@
7853
8272
  }
7854
8273
  function removeEntity(viewer, visual) {
7855
8274
  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
- }
8275
+ CesiumAnimatedInOut.AnimateOut({
8276
+ entity: visual,
8277
+ viewer: viewer
8278
+ });
7878
8279
  }
7879
8280
  var MAX_SHOW_DEPTH = 10;
7880
8281
  function updateCEntityShow(viewer, visual, rego, show, ignoreParent, depth) {
@@ -8617,6 +9018,7 @@
8617
9018
  rego: rego
8618
9019
  });
8619
9020
  removeEntity(this.viewer, rego.visual);
9021
+ rego.visual = null;
8620
9022
  var doesInclude = this.rego[entityId_4].find(function (r) { return r.menuItemId === menuItemId; });
8621
9023
  if (doesInclude) {
8622
9024
  this.rego[entityId_4] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
@@ -8648,6 +9050,7 @@
8648
9050
  rego: rego
8649
9051
  });
8650
9052
  removeEntity(this_2.viewer, rego.visual);
9053
+ rego.visual = null;
8651
9054
  (_b = this_2.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({
8652
9055
  type: EVisualUpdateType.Remove,
8653
9056
  entityId: rego.entityId,
@@ -8678,6 +9081,7 @@
8678
9081
  rego: rego
8679
9082
  });
8680
9083
  removeEntity(this.viewer, rego.visual);
9084
+ rego.visual = null;
8681
9085
  this.rego[entityId_5] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
8682
9086
  (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger({
8683
9087
  type: EVisualUpdateType.Remove,
@@ -10462,33 +10866,55 @@
10462
10866
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
10463
10867
  if (force === void 0) { force = false; }
10464
10868
  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;
10869
+ var entitiesHistoric, toRemove, i, entity, startTmp, stopTmp, startStr, stopStr, historicData, _k, updated, cEntities, i, entity, id, cEntity, rego, visual, wasClustered, tagIds, rego_1;
10466
10870
  return __generator(this, function (_l) {
10467
10871
  switch (_l.label) {
10468
10872
  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,
10873
+ entitiesHistoric = {};
10874
+ if (!((_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.historicAttrKey)) return [3 /*break*/, 2];
10875
+ toRemove = entities.filter(function (x) { var _a; return !((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.historicAttrKey); });
10876
+ for (i = 0; i < toRemove.length; i++) {
10877
+ entity = toRemove[i];
10878
+ this.visualsManager.RemoveRegos({
10879
+ entityId: entity.Bruce.ID,
10486
10880
  menuItemId: this.item.id,
10487
- visualRegister: this.visualsManager,
10488
- zoomControl: this.item.CameraZoomSettings,
10489
- force: force
10881
+ requestRender: false
10882
+ });
10883
+ (_b = this.clustering) === null || _b === void 0 ? void 0 : _b.RemoveEntity(entity.Bruce.ID, false);
10884
+ }
10885
+ entities = entities.filter(function (x) { var _a; return !!((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.historicAttrKey); });
10886
+ if (!this.item.historicInterpolation) return [3 /*break*/, 2];
10887
+ if (!entities.length) return [3 /*break*/, 2];
10888
+ startTmp = Cesium.JulianDate.toDate(this.viewer.clock.startTime);
10889
+ stopTmp = Cesium.JulianDate.toDate(this.viewer.clock.stopTime);
10890
+ startStr = new Date(startTmp.getTime() - 1000).toISOString();
10891
+ stopStr = new Date(stopTmp.getTime() + 1000).toISOString();
10892
+ return [4 /*yield*/, bruceModels.EntityHistoricData.GetList({
10893
+ attrKey: this.item.BruceEntity.historicAttrKey,
10894
+ dateTimeFrom: startStr,
10895
+ dateTimeTo: stopStr,
10896
+ entityIds: entities.map(function (x) { return x.Bruce.ID; }),
10897
+ api: this.apiGetter.getApi()
10490
10898
  })];
10491
10899
  case 1:
10900
+ historicData = _l.sent();
10901
+ if (this.disposed) {
10902
+ this.doDispose();
10903
+ return [2 /*return*/];
10904
+ }
10905
+ entitiesHistoric = historicData.recordsByIds;
10906
+ _l.label = 2;
10907
+ case 2: return [4 /*yield*/, exports.EntityRenderEngine.Render({
10908
+ viewer: this.viewer,
10909
+ apiGetter: this.apiGetter,
10910
+ entities: entities,
10911
+ menuItemId: this.item.id,
10912
+ visualRegister: this.visualsManager,
10913
+ zoomControl: this.item.CameraZoomSettings,
10914
+ entitiesHistoric: entitiesHistoric,
10915
+ force: force
10916
+ })];
10917
+ case 3:
10492
10918
  _k = _l.sent(), updated = _k.updated, cEntities = _k.entities;
10493
10919
  if (this.disposed) {
10494
10920
  this.doDispose();
@@ -23598,7 +24024,7 @@
23598
24024
  ViewRenderEngine.Render = Render;
23599
24025
  })(exports.ViewRenderEngine || (exports.ViewRenderEngine = {}));
23600
24026
 
23601
- var VERSION = "3.8.2";
24027
+ var VERSION = "3.8.4";
23602
24028
 
23603
24029
  exports.VERSION = VERSION;
23604
24030
  exports.CesiumParabola = CesiumParabola;