bruce-cesium 4.2.0 → 4.2.1

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.
@@ -50,5 +50,5 @@ __exportStar(require("./rendering/cesium-animated-property"), exports);
50
50
  __exportStar(require("./rendering/cesium-animated-in-out"), exports);
51
51
  __exportStar(require("./widgets/common/draw-3d-polygon"), exports);
52
52
  __exportStar(require("./widgets/common/draw-3d-polyline"), exports);
53
- exports.VERSION = "4.2.0";
53
+ exports.VERSION = "4.2.1";
54
54
  //# sourceMappingURL=bruce-cesium.js.map
@@ -750,11 +750,11 @@ function compareColorMaterials(viewer, a, b) {
750
750
  var EntityRenderEngine;
751
751
  (function (EntityRenderEngine) {
752
752
  function Render(params) {
753
- var _a, _b, _c, _d, _e, _f, _g;
753
+ var _a, _b, _c, _d, _e, _f;
754
754
  return __awaiter(this, void 0, void 0, function () {
755
- var groupRenderParams, i, entity, geometry, optimized, updated, cEntities, models, multiGeometry, polygons, polylines, points, i, entity, id, zoomItem, displayType, existingRego, newRenderId, oldRenderId, geometry, mParams, mEntities, i, entity, id, cEntity, _loop_1, i, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
756
- return __generator(this, function (_h) {
757
- switch (_h.label) {
755
+ var groupRenderParams, updated, cEntities, models, multiGeometry, polygons, polylines, points, prepareGeometry, i, entity, id, zoomItem, displayType, existingRego, newRenderId, oldRenderId, geometry, mParams, mEntities, i, entity, id, cEntity, _loop_1, i, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
756
+ return __generator(this, function (_g) {
757
+ switch (_g.label) {
758
758
  case 0:
759
759
  groupRenderParams = {
760
760
  apiGetter: params.apiGetter,
@@ -764,10 +764,16 @@ var EntityRenderEngine;
764
764
  menuItemId: params.menuItemId,
765
765
  visualRegister: params.visualRegister
766
766
  };
767
- // Flatten multi-geometry if it's only got 1 piece.
768
- for (i = 0; i < params.entities.length; i++) {
769
- entity = params.entities[i];
770
- geometry = bruce_models_1.Entity.GetValue({
767
+ updated = new Map();
768
+ cEntities = new Map();
769
+ models = [];
770
+ multiGeometry = [];
771
+ polygons = [];
772
+ polylines = [];
773
+ points = [];
774
+ prepareGeometry = function (entity) {
775
+ var _a;
776
+ var geometry = bruce_models_1.Entity.GetValue({
771
777
  entity: entity,
772
778
  path: ["Bruce", "VectorGeometry"]
773
779
  });
@@ -782,14 +788,13 @@ var EntityRenderEngine;
782
788
  if (params.optimizeTolerance == null) {
783
789
  params.optimizeTolerance = 0.00001;
784
790
  }
785
- optimized = simplify_geometry_1.SimplifyGeometry.Simplify(entity.Bruce.ID, geometry, params.optimizeTolerance);
791
+ var optimized = simplify_geometry_1.SimplifyGeometry.Simplify(entity.Bruce.ID, geometry, params.optimizeTolerance);
786
792
  if (optimized) {
787
793
  // Continue on with the rendering using the optimized geometry.
788
794
  geometry = optimized;
789
795
  // Dereference the Entity object now that we have done a destructive operation.
790
796
  entity = Object.assign({}, entity);
791
797
  entity.Bruce = Object.assign({}, entity.Bruce);
792
- params.entities[i] = entity;
793
798
  }
794
799
  }
795
800
  }
@@ -802,14 +807,8 @@ var EntityRenderEngine;
802
807
  else {
803
808
  entity.Bruce.VectorGeometry = geometry;
804
809
  }
805
- }
806
- updated = new Map();
807
- cEntities = new Map();
808
- models = [];
809
- multiGeometry = [];
810
- polygons = [];
811
- polylines = [];
812
- points = [];
810
+ return entity;
811
+ };
813
812
  // Initial sorting.
814
813
  for (i = 0; i < params.entities.length; i++) {
815
814
  entity = params.entities[i];
@@ -833,12 +832,12 @@ var EntityRenderEngine;
833
832
  menuItemId: params.menuItemId
834
833
  });
835
834
  newRenderId = getRenderGroupId(zoomItem);
836
- oldRenderId = (_b = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _b === void 0 ? void 0 : _b._renderGroup;
835
+ oldRenderId = (_a = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _a === void 0 ? void 0 : _a._renderGroup;
837
836
  if (!params.force &&
838
837
  newRenderId == oldRenderId &&
839
838
  !(existingRego === null || existingRego === void 0 ? void 0 : existingRego.stale) &&
840
839
  // If historic metadata is different then it's also stale.
841
- ((existingRego === null || existingRego === void 0 ? void 0 : existingRego.historicDateTime) == ((_c = entity.Bruce) === null || _c === void 0 ? void 0 : _c.HistoricDateTime))) {
840
+ ((existingRego === null || existingRego === void 0 ? void 0 : existingRego.historicDateTime) == ((_b = entity.Bruce) === null || _b === void 0 ? void 0 : _b.HistoricDateTime))) {
842
841
  // No sorting category needed. Already rendered the way we want.
843
842
  cEntities.set(id, existingRego.visual);
844
843
  }
@@ -849,20 +848,22 @@ var EntityRenderEngine;
849
848
  // Flag as no longer stale as we're unlikely to recreate the rego if we're reusing the graphic.
850
849
  existingRego.stale = false;
851
850
  // Update metadata for the same reason.
852
- existingRego.historicDateTime = (_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d.HistoricDateTime;
853
- existingRego.historicAttrKey = (_e = entity.Bruce) === null || _e === void 0 ? void 0 : _e.HistoricAttrKey;
851
+ existingRego.historicDateTime = (_c = entity.Bruce) === null || _c === void 0 ? void 0 : _c.HistoricDateTime;
852
+ existingRego.historicAttrKey = (_d = entity.Bruce) === null || _d === void 0 ? void 0 : _d.HistoricAttrKey;
854
853
  existingRego.entityTypeId = entity.Bruce["EntityType.ID"];
855
854
  updated.set(id, true);
856
855
  }
857
856
  if (displayType == bruce_models_1.ZoomControl.EDisplayType.Model3D) {
857
+ entity = params.entities[i] = prepareGeometry(entity);
858
858
  models.push(entity);
859
859
  }
860
860
  else if (displayType == bruce_models_1.ZoomControl.EDisplayType.Geometry) {
861
+ entity = params.entities[i] = prepareGeometry(entity);
861
862
  geometry = bruce_models_1.Entity.GetValue({
862
863
  entity: entity,
863
864
  path: ["Bruce", "VectorGeometry"]
864
865
  });
865
- if ((_f = geometry === null || geometry === void 0 ? void 0 : geometry.MultiGeometry) === null || _f === void 0 ? void 0 : _f.length) {
866
+ if ((_e = geometry === null || geometry === void 0 ? void 0 : geometry.MultiGeometry) === null || _e === void 0 ? void 0 : _e.length) {
866
867
  multiGeometry.push(entity);
867
868
  }
868
869
  else {
@@ -880,7 +881,7 @@ var EntityRenderEngine;
880
881
  mParams = __assign(__assign({}, groupRenderParams), { rendered: cEntities, entities: models, entitiesHistoric: params.entitiesHistoric });
881
882
  return [4 /*yield*/, Model3d.RenderGroup(mParams)];
882
883
  case 1:
883
- mEntities = _h.sent();
884
+ mEntities = _g.sent();
884
885
  for (i = 0; i < mParams.entities.length; i++) {
885
886
  entity = mParams.entities[i];
886
887
  id = entity.Bruce.ID;
@@ -892,20 +893,20 @@ var EntityRenderEngine;
892
893
  multiGeometry.push(entity);
893
894
  }
894
895
  }
895
- _h.label = 2;
896
+ _g.label = 2;
896
897
  case 2:
897
898
  if (!(multiGeometry.length > 0)) return [3 /*break*/, 6];
898
899
  _loop_1 = function (i) {
899
900
  var entity, geometry, pParams, zoomItem, j, subEntity, cPoly, rendered, cLines, cPoints, rootEntity_1, firstEntity;
900
- return __generator(this, function (_j) {
901
- switch (_j.label) {
901
+ return __generator(this, function (_h) {
902
+ switch (_h.label) {
902
903
  case 0:
903
904
  entity = multiGeometry[i];
904
905
  geometry = bruce_models_1.Entity.GetValue({
905
906
  entity: entity,
906
907
  path: ["Bruce", "VectorGeometry"]
907
908
  });
908
- if (!((_g = geometry === null || geometry === void 0 ? void 0 : geometry.MultiGeometry) === null || _g === void 0 ? void 0 : _g.length)) {
909
+ if (!((_f = geometry === null || geometry === void 0 ? void 0 : geometry.MultiGeometry) === null || _f === void 0 ? void 0 : _f.length)) {
909
910
  polygons.push(entity);
910
911
  return [2 /*return*/, "continue"];
911
912
  }
@@ -919,7 +920,7 @@ var EntityRenderEngine;
919
920
  }
920
921
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
921
922
  case 1:
922
- cPoly = _j.sent();
923
+ cPoly = _h.sent();
923
924
  Array.from(cPoly.keys()).forEach(function (key) {
924
925
  if (cPoly.get(key)) {
925
926
  pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
@@ -928,7 +929,7 @@ var EntityRenderEngine;
928
929
  rendered = Array.from(cPoly.values());
929
930
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
930
931
  case 2:
931
- cLines = _j.sent();
932
+ cLines = _h.sent();
932
933
  Array.from(cLines.keys()).forEach(function (key) {
933
934
  if (cLines.get(key)) {
934
935
  pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
@@ -938,9 +939,9 @@ var EntityRenderEngine;
938
939
  if (!!rendered.length) return [3 /*break*/, 4];
939
940
  return [4 /*yield*/, Point.RenderGroup(pParams)];
940
941
  case 3:
941
- cPoints = _j.sent();
942
+ cPoints = _h.sent();
942
943
  rendered = rendered.concat(Array.from(cPoints.values()));
943
- _j.label = 4;
944
+ _h.label = 4;
944
945
  case 4:
945
946
  rendered = rendered.filter(function (x) { return x != null; });
946
947
  if (rendered.length) {
@@ -967,13 +968,13 @@ var EntityRenderEngine;
967
968
  });
968
969
  };
969
970
  i = 0;
970
- _h.label = 3;
971
+ _g.label = 3;
971
972
  case 3:
972
973
  if (!(i < multiGeometry.length)) return [3 /*break*/, 6];
973
974
  return [5 /*yield**/, _loop_1(i)];
974
975
  case 4:
975
- _h.sent();
976
- _h.label = 5;
976
+ _g.sent();
977
+ _g.label = 5;
977
978
  case 5:
978
979
  i++;
979
980
  return [3 /*break*/, 3];
@@ -982,7 +983,7 @@ var EntityRenderEngine;
982
983
  pParams = __assign(__assign({}, groupRenderParams), { entities: polygons, rendered: cEntities });
983
984
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
984
985
  case 7:
985
- pEntities = _h.sent();
986
+ pEntities = _g.sent();
986
987
  for (i = 0; i < pParams.entities.length; i++) {
987
988
  entity = pParams.entities[i];
988
989
  cEntity = pEntities.get(entity.Bruce.ID);
@@ -993,13 +994,13 @@ var EntityRenderEngine;
993
994
  polylines.push(entity);
994
995
  }
995
996
  }
996
- _h.label = 8;
997
+ _g.label = 8;
997
998
  case 8:
998
999
  if (!(polylines.length > 0)) return [3 /*break*/, 10];
999
1000
  pParams = __assign(__assign({}, groupRenderParams), { entities: polylines, rendered: cEntities });
1000
1001
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
1001
1002
  case 9:
1002
- pEntities = _h.sent();
1003
+ pEntities = _g.sent();
1003
1004
  for (i = 0; i < pParams.entities.length; i++) {
1004
1005
  entity = pParams.entities[i];
1005
1006
  cEntity = pEntities.get(entity.Bruce.ID);
@@ -1010,13 +1011,13 @@ var EntityRenderEngine;
1010
1011
  points.push(entity);
1011
1012
  }
1012
1013
  }
1013
- _h.label = 10;
1014
+ _g.label = 10;
1014
1015
  case 10:
1015
1016
  if (!(points.length > 0)) return [3 /*break*/, 12];
1016
1017
  pParams = __assign(__assign({}, groupRenderParams), { entities: points, rendered: cEntities, entitiesHistoric: params.entitiesHistoric });
1017
1018
  return [4 /*yield*/, Point.RenderGroup(pParams)];
1018
1019
  case 11:
1019
- pEntities = _h.sent();
1020
+ pEntities = _g.sent();
1020
1021
  for (i = 0; i < pParams.entities.length; i++) {
1021
1022
  entity = pParams.entities[i];
1022
1023
  cEntity = pEntities.get(entity.Bruce.ID);
@@ -1024,7 +1025,7 @@ var EntityRenderEngine;
1024
1025
  cEntities.set(entity.Bruce.ID, cEntity);
1025
1026
  }
1026
1027
  }
1027
- _h.label = 12;
1028
+ _g.label = 12;
1028
1029
  case 12: return [2 /*return*/, {
1029
1030
  entities: cEntities,
1030
1031
  updated: updated
@@ -1938,6 +1939,7 @@ var EntityRenderEngine;
1938
1939
  var points = bruce_models_1.Geometry.ParsePoints(x.LinearRing);
1939
1940
  var holePosses = points.map(function (x) { return Cesium.Cartesian3.fromDegrees((0, js_utils_1.EnsureNumber)(x.longitude), (0, js_utils_1.EnsureNumber)(x.latitude), (0, js_utils_1.EnsureNumber)(x.altitude)); });
1940
1941
  holePosses = cullDuplicatePoints(holePosses);
1942
+ bruce_models_1.Cartes.CloseRing3(holePosses);
1941
1943
  return holePosses;
1942
1944
  }).filter(function (x) { return x.length >= 4; });
1943
1945
  var zIndex = getZIndex(style, entity, params.tags);