bruce-cesium 1.5.0 → 1.5.2

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,5 +1,5 @@
1
1
  import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, DelayQueue, Entity as Entity$1, BatchedDataGetter, EntityRelationType, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, EllipsoidTerrainProvider, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, SceneMode, HeadingPitchRange, Cesium3DTileColorBlendMode, KmlDataSource, createOsmBuildings, Cesium3DTileStyle, Rectangle, CallbackProperty, OrthographicFrustum, JulianDate, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, IonResource, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, ColorMaterialProperty, Matrix3, EasingFunction, GeometryInstance } from 'cesium';
2
+ import { Entity, Primitive, Cesium3DTileFeature, Color, Cartesian2, Cartographic, Math as Math$1, SceneMode, Cartesian3, HeadingPitchRange, Cesium3DTileColorBlendMode, HeightReference, EllipsoidTerrainProvider, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, createOsmBuildings, Cesium3DTileStyle, Rectangle, KmlDataSource, CallbackProperty, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, OrthographicFrustum, JulianDate, Matrix4, Cesium3DTileset, IonResource, PolygonPipeline, EllipsoidGeodesic, sampleTerrainMostDetailed, ColorMaterialProperty, Matrix3, EasingFunction, GeometryInstance } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -359,6 +359,24 @@ function __generator(thisArg, body) {
359
359
  }
360
360
  }
361
361
 
362
+ /**
363
+ * Ensures a number is returned from a given value.
364
+ * If given value cannot be parsed it will return defaultNum.
365
+ * @param value
366
+ * @param defaultNum default is 0.
367
+ * @returns
368
+ */
369
+ function EnsureNumber(value, defaultNum) {
370
+ if (!defaultNum) {
371
+ defaultNum = 0;
372
+ }
373
+ value = Number(value);
374
+ if (isNaN(value)) {
375
+ return defaultNum;
376
+ }
377
+ return value;
378
+ }
379
+
362
380
  var MeasureUtils;
363
381
  (function (MeasureUtils) {
364
382
  /**
@@ -525,25 +543,48 @@ var DrawingUtils;
525
543
  });
526
544
  }
527
545
  DrawingUtils.GetTerrainHeight = GetTerrainHeight;
528
- })(DrawingUtils || (DrawingUtils = {}));
529
-
530
- /**
531
- * Ensures a number is returned from a given value.
532
- * If given value cannot be parsed it will return defaultNum.
533
- * @param value
534
- * @param defaultNum default is 0.
535
- * @returns
536
- */
537
- function EnsureNumber(value, defaultNum) {
538
- if (!defaultNum) {
539
- defaultNum = 0;
540
- }
541
- value = Number(value);
542
- if (isNaN(value)) {
543
- return defaultNum;
546
+ function EnsurePosHeight(params) {
547
+ var pos3d = params.pos3d, viewer = params.viewer, desiredHeightRef = params.desiredHeightRef, heightRef = params.heightRef;
548
+ var carto = Cartes.ValidateCartes3(pos3d) ? Cartographic.fromCartesian(pos3d) : null;
549
+ if (heightRef == null) {
550
+ heightRef = HeightReference.CLAMP_TO_GROUND;
551
+ }
552
+ if (desiredHeightRef == null) {
553
+ desiredHeightRef = HeightReference.CLAMP_TO_GROUND;
554
+ }
555
+ if (heightRef == desiredHeightRef) {
556
+ return pos3d;
557
+ }
558
+ if (heightRef == HeightReference.NONE) {
559
+ // Turn absolute into clamped.
560
+ if (desiredHeightRef == HeightReference.CLAMP_TO_GROUND) {
561
+ return Cartesian3.fromRadians(carto.longitude, carto.latitude, 0);
562
+ }
563
+ // Turn absolute into relative (remove terrain height).
564
+ else if (desiredHeightRef == HeightReference.RELATIVE_TO_GROUND) {
565
+ var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto), 0);
566
+ return Cartesian3.fromRadians(carto.longitude, carto.latitude, carto.height - terrainHeight);
567
+ }
568
+ }
569
+ else if (heightRef == HeightReference.CLAMP_TO_GROUND) {
570
+ var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto), 0);
571
+ return Cartesian3.fromRadians(carto.longitude, carto.latitude, terrainHeight);
572
+ }
573
+ else if (heightRef == HeightReference.RELATIVE_TO_GROUND) {
574
+ // Turn relative into absolute (add terrain height).
575
+ if (desiredHeightRef == HeightReference.NONE) {
576
+ var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto), 0);
577
+ return Cartesian3.fromRadians(carto.longitude, carto.latitude, carto.height + terrainHeight);
578
+ }
579
+ // Turn relative into clamped.
580
+ else if (desiredHeightRef == HeightReference.CLAMP_TO_GROUND) {
581
+ return Cartesian3.fromRadians(carto.longitude, carto.latitude, 0);
582
+ }
583
+ }
584
+ return pos3d;
544
585
  }
545
- return value;
546
- }
586
+ DrawingUtils.EnsurePosHeight = EnsurePosHeight;
587
+ })(DrawingUtils || (DrawingUtils = {}));
547
588
 
548
589
  function traverseEntity(cEntity, arr, ignoreParent) {
549
590
  if (cEntity._parentEntity && !ignoreParent) {
@@ -681,8 +722,6 @@ var EntityUtils;
681
722
  */
682
723
  function GetPos(params) {
683
724
  var viewer = params.viewer, entity = params.entity, visualRegister = params.visualRegister;
684
- // TODO: Tidy this up, move to a separate function.
685
- // We need a generic "get pos AS blah height reference" function.
686
725
  function evaluateRendered() {
687
726
  var rego = visualRegister ? visualRegister.GetRego({
688
727
  entityId: entity.Bruce.ID,
@@ -713,37 +752,12 @@ var EntityUtils;
713
752
  else if (visual.point) {
714
753
  visualHeightRef = GetValue(viewer, visual.point.heightReference);
715
754
  }
716
- if (visualHeightRef == params.heightReference) {
717
- return pos3d_1;
718
- }
719
- var carto_1 = Cartographic.fromCartesian(pos3d_1);
720
- if (visualHeightRef == HeightReference.NONE) {
721
- // Turn absolute into clamped.
722
- if (params.heightReference == HeightReference.CLAMP_TO_GROUND) {
723
- return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, 0);
724
- }
725
- // Turn absolute into relative (remove terrain height).
726
- else if (params.heightReference == HeightReference.RELATIVE_TO_GROUND) {
727
- var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto_1), 0);
728
- return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, carto_1.height - terrainHeight);
729
- }
730
- }
731
- else if (visualHeightRef == HeightReference.CLAMP_TO_GROUND) {
732
- var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto_1), 0);
733
- return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, terrainHeight);
734
- }
735
- else if (visualHeightRef == HeightReference.RELATIVE_TO_GROUND) {
736
- // Turn relative into absolute (add terrain height).
737
- if (params.heightReference == HeightReference.NONE) {
738
- var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto_1), 0);
739
- return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, carto_1.height + terrainHeight);
740
- }
741
- // Turn relative into clamped.
742
- else if (params.heightReference == HeightReference.CLAMP_TO_GROUND) {
743
- return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, 0);
744
- }
745
- }
746
- return pos3d_1;
755
+ return DrawingUtils.EnsurePosHeight({
756
+ desiredHeightRef: params.returnHeightRef,
757
+ heightRef: visualHeightRef,
758
+ pos3d: pos3d_1,
759
+ viewer: viewer
760
+ });
747
761
  }
748
762
  }
749
763
  }
@@ -814,14 +828,12 @@ var EntityUtils;
814
828
  return pos3d;
815
829
  }
816
830
  pos3d = evaluateRecord();
817
- var carto = Cartes.ValidateCartes3(pos3d) ? Cartographic.fromCartesian(pos3d) : null;
818
- if (carto) {
819
- // Since we don't know height reference, we can't convert it.
820
- // We will just clamp it to ground.
821
- var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto), 0);
822
- pos3d = Cartesian3.fromRadians(carto.longitude, carto.latitude, terrainHeight);
823
- }
824
- return pos3d;
831
+ return DrawingUtils.EnsurePosHeight({
832
+ desiredHeightRef: params.returnHeightRef,
833
+ heightRef: params.recordHeightRef,
834
+ pos3d: pos3d,
835
+ viewer: viewer
836
+ });
825
837
  }
826
838
  EntityUtils.GetPos = GetPos;
827
839
  /**
@@ -1049,7 +1061,7 @@ function getPolygonStyleExtrusion(pStyle, entity, tags, heightRef) {
1049
1061
  You need to extrude by 55 meters, if you extrude by 5 it will extrude from sea and look flat.
1050
1062
  */
1051
1063
  var height = (_a = entity.location) === null || _a === void 0 ? void 0 : _a.altitude;
1052
- return heightRef == HeightReference.RELATIVE_TO_GROUND ? extrusion + height : extrusion;
1064
+ return heightRef != HeightReference.CLAMP_TO_GROUND ? extrusion + height : extrusion;
1053
1065
  }
1054
1066
  catch (e) {
1055
1067
  console.error(e);
@@ -1474,6 +1486,7 @@ var EntityRenderEngine;
1474
1486
  iconScale = 1;
1475
1487
  }
1476
1488
  if (iconScale > 0) {
1489
+ var heightRef = getHeightRef(style);
1477
1490
  cEntity = new Entity({
1478
1491
  billboard: {
1479
1492
  horizontalOrigin: HorizontalOrigin.CENTER,
@@ -1484,7 +1497,9 @@ var EntityRenderEngine;
1484
1497
  },
1485
1498
  position: EntityUtils.GetPos({
1486
1499
  viewer: params.viewer,
1487
- entity: entity
1500
+ entity: entity,
1501
+ recordHeightRef: heightRef,
1502
+ returnHeightRef: heightRef
1488
1503
  }),
1489
1504
  show: false
1490
1505
  });
@@ -1515,7 +1530,9 @@ var EntityRenderEngine;
1515
1530
  }
1516
1531
  var pos = EntityUtils.GetPos({
1517
1532
  viewer: params.viewer,
1518
- entity: entity
1533
+ entity: entity,
1534
+ recordHeightRef: HeightReference.CLAMP_TO_GROUND,
1535
+ returnHeightRef: HeightReference.CLAMP_TO_GROUND
1519
1536
  });
1520
1537
  cEntity = new Entity({
1521
1538
  ellipse: {
@@ -1563,6 +1580,7 @@ var EntityRenderEngine;
1563
1580
  if (size <= 0) {
1564
1581
  return null;
1565
1582
  }
1583
+ var heightRef = getHeightRef(style);
1566
1584
  cEntity = new Entity({
1567
1585
  point: {
1568
1586
  pixelSize: size,
@@ -1571,7 +1589,9 @@ var EntityRenderEngine;
1571
1589
  },
1572
1590
  position: EntityUtils.GetPos({
1573
1591
  viewer: params.viewer,
1574
- entity: entity
1592
+ entity: entity,
1593
+ recordHeightRef: heightRef,
1594
+ returnHeightRef: heightRef
1575
1595
  }),
1576
1596
  show: false
1577
1597
  });
@@ -1706,7 +1726,9 @@ var EntityRenderEngine;
1706
1726
  },
1707
1727
  position: EntityUtils.GetPos({
1708
1728
  viewer: params.viewer,
1709
- entity: entity
1729
+ entity: entity,
1730
+ recordHeightRef: heightRef,
1731
+ returnHeightRef: heightRef
1710
1732
  }),
1711
1733
  show: false
1712
1734
  });
@@ -1820,7 +1842,9 @@ var EntityRenderEngine;
1820
1842
  },
1821
1843
  position: EntityUtils.GetPos({
1822
1844
  viewer: params.viewer,
1823
- entity: entity
1845
+ entity: entity,
1846
+ recordHeightRef: heightRef,
1847
+ returnHeightRef: heightRef
1824
1848
  }),
1825
1849
  show: false
1826
1850
  });
@@ -1944,7 +1968,9 @@ var EntityRenderEngine;
1944
1968
  var heightRef = getHeightRef(style);
1945
1969
  var pos = EntityUtils.GetPos({
1946
1970
  viewer: params.viewer,
1947
- entity: entity
1971
+ entity: entity,
1972
+ recordHeightRef: heightRef,
1973
+ returnHeightRef: heightRef
1948
1974
  });
1949
1975
  if (heightRef == HeightReference.CLAMP_TO_GROUND) {
1950
1976
  var carto = Cartographic.fromCartesian(pos);
@@ -2954,41 +2980,41 @@ var RelationRenderEngine;
2954
2980
  RelationRenderEngine.GetRenderGroupId = GetRenderGroupId;
2955
2981
  function Render(params) {
2956
2982
  return __awaiter(this, void 0, void 0, function () {
2957
- var apiGetter, viewer, visualRegister, menuItemId, relations, api, rendered, i, relation, fromEntity, toEntity, dataEntity, _a, relationType, styleId, entityType, style, _b, cEntity;
2958
- return __generator(this, function (_c) {
2959
- switch (_c.label) {
2983
+ var apiGetter, viewer, visualRegister, menuItemId, relations, api, rendered, i, relation, fromEntity, toEntity, dataEntity, _a, relationType, styleId, typeId, entityType, _b, style, _c, cEntity;
2984
+ return __generator(this, function (_d) {
2985
+ switch (_d.label) {
2960
2986
  case 0:
2961
2987
  apiGetter = params.apiGetter, viewer = params.viewer, visualRegister = params.visualRegister, menuItemId = params.menuItemId, relations = params.relations;
2962
2988
  api = apiGetter.getApi(apiGetter.accountId);
2963
2989
  rendered = {};
2964
2990
  i = 0;
2965
- _c.label = 1;
2991
+ _d.label = 1;
2966
2992
  case 1:
2967
- if (!(i < relations.length)) return [3 /*break*/, 14];
2993
+ if (!(i < relations.length)) return [3 /*break*/, 16];
2968
2994
  relation = relations[i];
2969
2995
  return [4 /*yield*/, Entity$1.Get({
2970
2996
  api: api,
2971
2997
  entityId: relation["Principal.Entity.ID"],
2972
2998
  })];
2973
2999
  case 2:
2974
- fromEntity = (_c.sent()).entity;
3000
+ fromEntity = (_d.sent()).entity;
2975
3001
  return [4 /*yield*/, Entity$1.Get({
2976
3002
  api: api,
2977
3003
  entityId: relation["Related.Entity.ID"],
2978
3004
  })];
2979
3005
  case 3:
2980
- toEntity = (_c.sent()).entity;
3006
+ toEntity = (_d.sent()).entity;
2981
3007
  if (!relation["Data.Entity.ID"]) return [3 /*break*/, 5];
2982
3008
  return [4 /*yield*/, Entity$1.Get({
2983
3009
  api: api,
2984
3010
  entityId: relation["Data.Entity.ID"]
2985
3011
  })];
2986
3012
  case 4:
2987
- _a = (_c.sent()).entity;
3013
+ _a = (_d.sent()).entity;
2988
3014
  return [3 /*break*/, 6];
2989
3015
  case 5:
2990
3016
  _a = null;
2991
- _c.label = 6;
3017
+ _d.label = 6;
2992
3018
  case 6:
2993
3019
  dataEntity = _a;
2994
3020
  return [4 /*yield*/, EntityRelationType.Get({
@@ -2996,31 +3022,39 @@ var RelationRenderEngine;
2996
3022
  relationTypeId: relation["Relation.Type.ID"]
2997
3023
  })];
2998
3024
  case 7:
2999
- relationType = (_c.sent()).relationType;
3025
+ relationType = (_d.sent()).relationType;
3000
3026
  styleId = Number(relationType === null || relationType === void 0 ? void 0 : relationType.EntityDisplaySettingID);
3001
- if (!!styleId) return [3 /*break*/, 9];
3027
+ if (!!styleId) return [3 /*break*/, 11];
3028
+ typeId = relationType === null || relationType === void 0 ? void 0 : relationType["Relation.EntityType.ID"];
3029
+ if (!typeId) return [3 /*break*/, 9];
3002
3030
  return [4 /*yield*/, EntityType.Get({
3003
3031
  api: api,
3004
- entityTypeId: relationType === null || relationType === void 0 ? void 0 : relationType["Relation.EntityType.ID"]
3032
+ entityTypeId: typeId
3005
3033
  })];
3006
3034
  case 8:
3007
- entityType = (_c.sent()).entityType;
3008
- styleId = entityType === null || entityType === void 0 ? void 0 : entityType["DisplaySetting.ID"];
3009
- _c.label = 9;
3035
+ _b = (_d.sent()).entityType;
3036
+ return [3 /*break*/, 10];
3010
3037
  case 9:
3011
- if (!styleId) return [3 /*break*/, 11];
3038
+ _b = null;
3039
+ _d.label = 10;
3040
+ case 10:
3041
+ entityType = _b;
3042
+ styleId = entityType === null || entityType === void 0 ? void 0 : entityType["DisplaySetting.ID"];
3043
+ _d.label = 11;
3044
+ case 11:
3045
+ if (!styleId) return [3 /*break*/, 13];
3012
3046
  return [4 /*yield*/, Style.Get({
3013
3047
  api: api,
3014
3048
  styleId: styleId
3015
3049
  })];
3016
- case 10:
3017
- _b = (_c.sent()).style;
3018
- return [3 /*break*/, 12];
3019
- case 11:
3020
- _b = null;
3021
- _c.label = 12;
3022
3050
  case 12:
3023
- style = _b;
3051
+ _c = (_d.sent()).style;
3052
+ return [3 /*break*/, 14];
3053
+ case 13:
3054
+ _c = null;
3055
+ _d.label = 14;
3056
+ case 14:
3057
+ style = _c;
3024
3058
  cEntity = Parabola.Render({
3025
3059
  dataEntity: dataEntity,
3026
3060
  fromEntity: fromEntity,
@@ -3032,11 +3066,11 @@ var RelationRenderEngine;
3032
3066
  });
3033
3067
  cEntity._renderGroup = GetRenderGroupId(relation);
3034
3068
  rendered[GetRenderGroupId(relation)] = cEntity;
3035
- _c.label = 13;
3036
- case 13:
3069
+ _d.label = 15;
3070
+ case 15:
3037
3071
  i++;
3038
3072
  return [3 /*break*/, 1];
3039
- case 14: return [2 /*return*/, rendered];
3073
+ case 16: return [2 /*return*/, rendered];
3040
3074
  }
3041
3075
  });
3042
3076
  });
@@ -3069,13 +3103,15 @@ var RelationRenderEngine;
3069
3103
  entity: params.fromEntity,
3070
3104
  viewer: params.viewer,
3071
3105
  visualRegister: params.visualRegister,
3072
- heightReference: HeightReference.NONE
3106
+ returnHeightRef: HeightReference.NONE,
3107
+ recordHeightRef: HeightReference.CLAMP_TO_GROUND
3073
3108
  });
3074
3109
  toPos = EntityUtils.GetPos({
3075
3110
  entity: params.toEntity,
3076
3111
  viewer: params.viewer,
3077
3112
  visualRegister: params.visualRegister,
3078
- heightReference: HeightReference.NONE
3113
+ returnHeightRef: HeightReference.NONE,
3114
+ recordHeightRef: HeightReference.CLAMP_TO_GROUND
3079
3115
  });
3080
3116
  }
3081
3117
  catch (e) {
@@ -7048,6 +7084,8 @@ function renderDefaultTerrTile(id) {
7048
7084
  provider = new CesiumTerrainProvider({
7049
7085
  url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
7050
7086
  requestVertexNormals: true,
7087
+ requestWaterMask: false,
7088
+ requestMetadata: false
7051
7089
  });
7052
7090
  break;
7053
7091
  }