bruce-cesium 0.6.1 → 0.6.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.
@@ -1,5 +1,5 @@
1
1
  import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, ProgramKey, Camera } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, Matrix4, Cesium3DTileset, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, JulianDate, createOsmBuildings, Cesium3DTileStyle } from 'cesium';
2
+ import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, JulianDate, createOsmBuildings, Cesium3DTileStyle } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -2573,40 +2573,42 @@ function colorToCColor$1(color) {
2573
2573
  var TilesetRenderEngine;
2574
2574
  (function (TilesetRenderEngine) {
2575
2575
  function ApplyPosition(cTileset, tileset, coords) {
2576
+ var location;
2577
+ var transform;
2576
2578
  if (tileset.type == Tileset.EType.Cad) {
2577
2579
  var settings = tileset.settings;
2578
- var location_1;
2579
- var transform = void 0;
2580
2580
  // Position using root entity + ucs.
2581
2581
  if (coords === null || coords === void 0 ? void 0 : coords.ucs) {
2582
- location_1 = coords.ucs.location;
2582
+ location = coords.ucs.location;
2583
2583
  transform = coords.transform;
2584
2584
  }
2585
2585
  // Position using tileset.
2586
2586
  else {
2587
2587
  transform = settings.transform;
2588
- location_1 = settings.location;
2588
+ location = settings.location;
2589
2589
  }
2590
- if (!(location_1 === null || location_1 === void 0 ? void 0 : location_1.latitude)) {
2591
- return;
2592
- }
2593
- transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
2594
- if (transform.scale <= 0) {
2595
- transform.scale = 0.000001;
2596
- }
2597
- var pos = Cartesian3.fromDegrees(location_1.longitude, location_1.latitude, location_1.altitude);
2598
- var hpr = HeadingPitchRoll.fromDegrees(transform.heading, transform.pitch, transform.roll, new HeadingPitchRoll());
2599
- var root = cTileset.root;
2600
- root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
2601
- var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
2602
- root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
2603
- root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(transform.x, transform.y, transform.z), root.transform);
2604
- // Force matrix to update
2605
- root.updateTransform();
2606
2590
  }
2607
- else {
2608
- console.warn("Not implemented.");
2591
+ else if (tileset.type == Tileset.EType.PointCloud) {
2592
+ var settings = tileset.settings;
2593
+ transform = settings.transform;
2594
+ location = settings.location;
2595
+ }
2596
+ if (!(location === null || location === void 0 ? void 0 : location.latitude)) {
2597
+ return;
2598
+ }
2599
+ transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
2600
+ if (transform.scale <= 0) {
2601
+ transform.scale = 0.000001;
2609
2602
  }
2603
+ var pos = Cartesian3.fromDegrees(location.longitude, location.latitude, location.altitude);
2604
+ var hpr = HeadingPitchRoll.fromDegrees(transform.heading, transform.pitch, transform.roll, new HeadingPitchRoll());
2605
+ var root = cTileset.root;
2606
+ root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
2607
+ var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
2608
+ root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
2609
+ root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(transform.x, transform.y, transform.z), root.transform);
2610
+ // Force matrix to update
2611
+ root.updateTransform();
2610
2612
  }
2611
2613
  TilesetRenderEngine.ApplyPosition = ApplyPosition;
2612
2614
  function ApplySettings(cTileset, tileset) {
@@ -2617,6 +2619,21 @@ var TilesetRenderEngine;
2617
2619
  cTileset.maximumScreenSpaceError = maxScreenSpaceError;
2618
2620
  }
2619
2621
  }
2622
+ else if (tileset.type == Tileset.EType.PointCloud) {
2623
+ var settings = tileset.settings;
2624
+ var maxScreenSpaceError = settings.maximumScreenSpaceError;
2625
+ if (maxScreenSpaceError || maxScreenSpaceError == 0) {
2626
+ cTileset.maximumScreenSpaceError = maxScreenSpaceError;
2627
+ }
2628
+ var attenuation = settings.attenuation;
2629
+ if (attenuation != null) {
2630
+ cTileset.pointCloudShading.attenuation = attenuation;
2631
+ }
2632
+ var attenuationMax = settings.attenuationMax;
2633
+ if (attenuationMax || attenuationMax == 0) {
2634
+ cTileset.pointCloudShading.maximumAttenuation = attenuationMax;
2635
+ }
2636
+ }
2620
2637
  else {
2621
2638
  console.warn("Not implemented.");
2622
2639
  }
@@ -2642,6 +2659,17 @@ var TilesetRenderEngine;
2642
2659
  params.viewer.scene.primitives.add(cTileset);
2643
2660
  return cTileset;
2644
2661
  }
2662
+ else if (params.tileset.type == Tileset.EType.PointCloud) {
2663
+ var cTileset_2 = new Cesium3DTileset({
2664
+ url: Tileset.GetPublicFileUrl(api, params.tileset.id, "tileset.json") + "?generation=" + params.tileset.generateVersion
2665
+ });
2666
+ params.viewer.scene.primitives.add(cTileset_2);
2667
+ cTileset_2.readyPromise.then(function () {
2668
+ ApplySettings(cTileset_2, params.tileset);
2669
+ ApplyPosition(cTileset_2, params.tileset, null);
2670
+ });
2671
+ return cTileset_2;
2672
+ }
2645
2673
  else {
2646
2674
  throw ("Not implemented.");
2647
2675
  }
@@ -2978,7 +3006,7 @@ var TilesetRenderEngine;
2978
3006
  if (!style) {
2979
3007
  return;
2980
3008
  }
2981
- var bColor = (((_a = style.modelStyle) === null || _a === void 0 ? void 0 : _a.fillColor) ? Calculator.GetValue(style.modelStyle.fillColor, data, []) : null);
3009
+ var bColor = ((_a = style.modelStyle) === null || _a === void 0 ? void 0 : _a.fillColor) ? Calculator.GetColor(style.modelStyle.fillColor, data, []) : null;
2982
3010
  if (bColor != null) {
2983
3011
  var cColor = colorToCColor$1(bColor);
2984
3012
  var visual = entity.visual;
@@ -3096,7 +3124,10 @@ var TilesetCadRenderManager;
3096
3124
  }
3097
3125
  };
3098
3126
  Manager.prototype.mapCTile = function (tile) {
3099
- var content = tile.content;
3127
+ var content = tile === null || tile === void 0 ? void 0 : tile.content;
3128
+ if (!content) {
3129
+ return;
3130
+ }
3100
3131
  for (var i = 0; i < content.featuresLength; i++) {
3101
3132
  var feature = content.getFeature(i);
3102
3133
  var rego = this.mapTilesetFeature(feature);
@@ -3334,7 +3365,10 @@ var TilesetOsmRenderManager;
3334
3365
  var content, i, feature;
3335
3366
  return __generator(this, function (_a) {
3336
3367
  if (this.sourceId) {
3337
- content = tile.content;
3368
+ content = tile === null || tile === void 0 ? void 0 : tile.content;
3369
+ if (!content) {
3370
+ return [2 /*return*/];
3371
+ }
3338
3372
  for (i = 0; i < content.featuresLength; i++) {
3339
3373
  feature = content.getFeature(i);
3340
3374
  if (feature._counter == null) {
@@ -3599,7 +3633,10 @@ var TilesetEntitiesRenderManager;
3599
3633
  }
3600
3634
  };
3601
3635
  Manager.prototype.mapCTile = function (tile) {
3602
- var content = tile.content;
3636
+ var content = tile === null || tile === void 0 ? void 0 : tile.content;
3637
+ if (!content) {
3638
+ return;
3639
+ }
3603
3640
  for (var i = 0; i < content.featuresLength; i++) {
3604
3641
  var feature = content.getFeature(i);
3605
3642
  this.mapTilesetFeature(feature);
@@ -3623,6 +3660,78 @@ var TilesetEntitiesRenderManager;
3623
3660
  TilesetEntitiesRenderManager.Manager = Manager;
3624
3661
  })(TilesetEntitiesRenderManager || (TilesetEntitiesRenderManager = {}));
3625
3662
 
3663
+ var TilesetPointcloudRenderManager;
3664
+ (function (TilesetPointcloudRenderManager) {
3665
+ var Manager = /** @class */ (function () {
3666
+ function Manager(viewer, apiGetter, item) {
3667
+ this.disposed = false;
3668
+ this.cTileset = null;
3669
+ this.viewer = viewer;
3670
+ this.apiGetter = apiGetter;
3671
+ this.item = item;
3672
+ }
3673
+ Object.defineProperty(Manager.prototype, "Disposed", {
3674
+ get: function () {
3675
+ return this.disposed;
3676
+ },
3677
+ enumerable: false,
3678
+ configurable: true
3679
+ });
3680
+ Manager.prototype.Init = function () {
3681
+ var _a;
3682
+ return __awaiter(this, void 0, void 0, function () {
3683
+ var tilesetId, api, tileset, cTileset;
3684
+ var _this = this;
3685
+ return __generator(this, function (_b) {
3686
+ switch (_b.label) {
3687
+ case 0:
3688
+ tilesetId = (_a = this.item.tileset) === null || _a === void 0 ? void 0 : _a.TilesetID;
3689
+ if (!tilesetId) {
3690
+ return [2 /*return*/];
3691
+ }
3692
+ api = this.apiGetter.getApi();
3693
+ return [4 /*yield*/, Tileset.Get(api, tilesetId)];
3694
+ case 1:
3695
+ tileset = _b.sent();
3696
+ if (!tileset) {
3697
+ return [2 /*return*/];
3698
+ }
3699
+ cTileset = this.cTileset = TilesetRenderEngine.Render({
3700
+ apiGetter: this.apiGetter,
3701
+ tileset: tileset,
3702
+ viewer: this.viewer,
3703
+ coords: null
3704
+ });
3705
+ cTileset.readyPromise.then(function () {
3706
+ if (_this.disposed) {
3707
+ return;
3708
+ }
3709
+ _this.onCTilesetLoad();
3710
+ });
3711
+ return [2 /*return*/];
3712
+ }
3713
+ });
3714
+ });
3715
+ };
3716
+ Manager.prototype.onCTilesetLoad = function () {
3717
+ if (this.item.FlyTo) {
3718
+ this.viewer.zoomTo(this.cTileset, new HeadingPitchRange(0.0, -0.5, this.cTileset.boundingSphere.radius / 4.0));
3719
+ }
3720
+ };
3721
+ Manager.prototype.Dispose = function () {
3722
+ if (this.disposed) {
3723
+ return;
3724
+ }
3725
+ this.disposed = true;
3726
+ if (this.cTileset) {
3727
+ this.cTileset.show = false;
3728
+ }
3729
+ };
3730
+ return Manager;
3731
+ }());
3732
+ TilesetPointcloudRenderManager.Manager = Manager;
3733
+ })(TilesetPointcloudRenderManager || (TilesetPointcloudRenderManager = {}));
3734
+
3626
3735
  /**
3627
3736
  * Utility to keep track of enabled menu items within a Cesium viewer.
3628
3737
  */
@@ -3709,7 +3818,7 @@ var MenuItemManager;
3709
3818
  rItem.renderManager = new TilesetOsmRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, this.sharedMonitor, params.item);
3710
3819
  break;
3711
3820
  case MenuItem.EType.PointCloud:
3712
- // TODO;
3821
+ rItem.renderManager = new TilesetPointcloudRenderManager.Manager(this.viewer, params.apiGetter, params.item);
3713
3822
  break;
3714
3823
  case MenuItem.EType.EntityTileset:
3715
3824
  rItem.renderManager = new TilesetEntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);