bruce-cesium 1.9.4 → 1.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { BruceEvent, Cartes, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, DelayQueue, BatchedDataGetter, EntityRelationType, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartesian2, Cartographic, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, HeightReference, EllipsoidTerrainProvider, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, SceneMode, HeadingPitchRange, Cesium3DTileColorBlendMode, Cesium3DTileStyle, createOsmBuildings, KmlDataSource, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Cesium3DTileset, Matrix4, Matrix3, IonResource, PolygonPipeline, OrthographicFrustum, JulianDate, NearFarScalar, ColorMaterialProperty, EasingFunction, GeometryInstance, EllipsoidGeodesic, sampleTerrainMostDetailed } from 'cesium';
3
+ import { Cartesian2, Cartographic, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, SceneMode, HeightReference, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, OrthographicFrustum, JulianDate, NearFarScalar, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, Cesium3DTileset, Matrix4, Matrix3, IonResource, ColorMaterialProperty, EasingFunction, GeometryInstance } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -1535,8 +1535,15 @@ function getStyle(api, entity, styleId) {
1535
1535
  });
1536
1536
  });
1537
1537
  }
1538
+ /**
1539
+ * Height fix means while flat terrain is active we don't clamp-to-ground and instead place at alt=0.
1540
+ * This is currently breaking as the curvature of the earth makes larger polygons/polylines clip.
1541
+ * @param terrain
1542
+ * @returns
1543
+ */
1538
1544
  function shouldApplyFlatFix(terrain) {
1539
- return terrain instanceof EllipsoidTerrainProvider;
1545
+ //return terrain instanceof Cesium.EllipsoidTerrainProvider;
1546
+ return false;
1540
1547
  }
1541
1548
  function getRenderGroupId(zoomItem, terrain) {
1542
1549
  if (!zoomItem) {
@@ -1600,7 +1607,7 @@ var EntityRenderEngine;
1600
1607
  menuItemId: params.menuItemId
1601
1608
  });
1602
1609
  oldRenderId = (_c = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _c === void 0 ? void 0 : _c._renderGroup;
1603
- if (params.force || (newRenderId == oldRenderId && !(existingRego === null || existingRego === void 0 ? void 0 : existingRego.stale))) {
1610
+ if (!params.force && newRenderId == oldRenderId && !(existingRego === null || existingRego === void 0 ? void 0 : existingRego.stale)) {
1604
1611
  cEntities[id] = existingRego.visual;
1605
1612
  }
1606
1613
  else {
@@ -2893,6 +2900,7 @@ var EntitiesLoadedRenderManager;
2893
2900
  this.getterSub = null;
2894
2901
  this.disposed = false;
2895
2902
  this.renderedEntities = {};
2903
+ this.updatedEntities = {};
2896
2904
  var viewer = params.viewer, apiGetter = params.apiGetter, monitor = params.monitor, item = params.item, visualsManager = params.register;
2897
2905
  this.viewer = viewer;
2898
2906
  this.apiGetter = apiGetter;
@@ -2914,6 +2922,13 @@ var EntitiesLoadedRenderManager;
2914
2922
  }
2915
2923
  this.getter = new BatchedDataGetter.Getter(this.item.BruceEntity.Entities, this.monitor, BATCH_SIZE$1);
2916
2924
  this.getterSub = this.getter.OnUpdate.Subscribe(function (entities) {
2925
+ var _a;
2926
+ for (var _i = 0, entities_1 = entities; _i < entities_1.length; _i++) {
2927
+ var entity = entities_1[_i];
2928
+ if (_this.renderedEntities[(_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID]) {
2929
+ continue;
2930
+ }
2931
+ }
2917
2932
  _this.onGetterUpdate(entities);
2918
2933
  });
2919
2934
  this.getter.Start();
@@ -2949,12 +2964,19 @@ var EntitiesLoadedRenderManager;
2949
2964
  return (_b = (_a = _this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.Entities) === null || _b === void 0 ? void 0 : _b.find(function (y) { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == x; });
2950
2965
  });
2951
2966
  }
2967
+ if (entities === null || entities === void 0 ? void 0 : entities.length) {
2968
+ entities = [].concat(entities).filter(function (x) { var _a; return entityIds.includes((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID); });
2969
+ entities.forEach(function (x) {
2970
+ var _a;
2971
+ _this.updatedEntities[(_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID] = x;
2972
+ });
2973
+ }
2952
2974
  this.visualsManager.MarkStale({
2953
2975
  entityIds: entityIds,
2954
2976
  menuItemIds: [this.item.id]
2955
2977
  });
2956
2978
  if (entities === null || entities === void 0 ? void 0 : entities.length) {
2957
- this.onGetterUpdate([].concat(entities).filter(function (x) { var _a; return entityIds.includes((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID); }), force);
2979
+ this.onGetterUpdate(entities, force);
2958
2980
  }
2959
2981
  else {
2960
2982
  this.doEntityCheck(entityIds, force);
@@ -2981,6 +3003,7 @@ var EntitiesLoadedRenderManager;
2981
3003
  if (!(ids.length > 0)) return [3 /*break*/, 4];
2982
3004
  checkBatch = function () { return __awaiter(_this, void 0, void 0, function () {
2983
3005
  var entityIds, entities;
3006
+ var _this = this;
2984
3007
  return __generator(this, function (_a) {
2985
3008
  switch (_a.label) {
2986
3009
  case 0:
@@ -2994,6 +3017,10 @@ var EntitiesLoadedRenderManager;
2994
3017
  if (this.disposed) {
2995
3018
  return [2 /*return*/];
2996
3019
  }
3020
+ entities.forEach(function (x) {
3021
+ var _a;
3022
+ _this.updatedEntities[(_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID] = x;
3023
+ });
2997
3024
  this.onGetterUpdate(entities, force);
2998
3025
  return [2 /*return*/];
2999
3026
  }