bruce-cesium 0.9.3 → 0.9.5

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.
Files changed (32) hide show
  1. package/dist/bruce-cesium.es5.js +421 -11
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +420 -10
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/rendering/menu-item-manager.js +9 -0
  6. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  7. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +2 -1
  8. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  9. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +2 -1
  10. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  11. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +2 -1
  12. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  13. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +2 -1
  14. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  15. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +283 -0
  17. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -0
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +5 -4
  19. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  20. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +4 -1
  21. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  22. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +2 -1
  23. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -1
  24. package/dist/lib/rendering/tileset-render-engine.js +152 -0
  25. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  26. package/dist/lib/rendering/visuals-register.js.map +1 -1
  27. package/dist/types/rendering/menu-item-manager.d.ts +1 -1
  28. package/dist/types/rendering/render-managers/render-manager.d.ts +0 -10
  29. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +29 -0
  30. package/dist/types/rendering/tileset-render-engine.d.ts +27 -1
  31. package/dist/types/rendering/visuals-register.d.ts +3 -1
  32. package/package.json +2 -2
@@ -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, 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, Cesium3DTileColorBlendMode, HeadingPitchRange, OrthographicFrustum, JulianDate, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, createOsmBuildings, Cesium3DTileStyle, KmlDataSource } 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, Cesium3DTileColorBlendMode, HeadingPitchRange, OrthographicFrustum, JulianDate, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, Cesium3DTileStyle, IonResource, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, createOsmBuildings, KmlDataSource } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -1871,7 +1871,8 @@ var EntitiesRenderManager;
1871
1871
  menuItemId: this.item.id,
1872
1872
  visual: cEntity,
1873
1873
  priority: 0,
1874
- entityTypeId: entity.Bruce["EntityType.ID"]
1874
+ entityTypeId: entity.Bruce["EntityType.ID"],
1875
+ accountId: this.apiGetter.accountId
1875
1876
  });
1876
1877
  }
1877
1878
  }
@@ -2053,7 +2054,8 @@ var EntitiesLoadedRenderManager;
2053
2054
  menuItemId: this.item.id,
2054
2055
  visual: cEntity,
2055
2056
  priority: 0,
2056
- entityTypeId: entity.Bruce["EntityType.ID"]
2057
+ entityTypeId: entity.Bruce["EntityType.ID"],
2058
+ accountId: this.apiGetter.accountId
2057
2059
  });
2058
2060
  }
2059
2061
  }
@@ -2708,7 +2710,8 @@ var EntitiesIdsRenderManager;
2708
2710
  menuItemId: this.item.id,
2709
2711
  visual: cEntity,
2710
2712
  priority: 0,
2711
- entityTypeId: entity.Bruce["EntityType.ID"]
2713
+ entityTypeId: entity.Bruce["EntityType.ID"],
2714
+ accountId: this.apiGetter.accountId
2712
2715
  });
2713
2716
  }
2714
2717
  }
@@ -2834,7 +2837,8 @@ var EntityRenderManager;
2834
2837
  menuItemId: this.item.id,
2835
2838
  visual: cEntity,
2836
2839
  priority: 0,
2837
- entityTypeId: entity.Bruce["EntityType.ID"]
2840
+ entityTypeId: entity.Bruce["EntityType.ID"],
2841
+ accountId: this.apiGetter.accountId
2838
2842
  });
2839
2843
  }
2840
2844
  }
@@ -2917,6 +2921,15 @@ var TilesetRenderEngine;
2917
2921
  root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(EnsureNumber(transform.x), EnsureNumber(transform.y), EnsureNumber(transform.z)), root.transform);
2918
2922
  // Force matrix to update
2919
2923
  root.updateTransform();
2924
+ // Store data in the tileset as we can't interpret it using the cesium primitive later.
2925
+ var cTilesetExt = cTileset;
2926
+ cTilesetExt._bruceCoords = __assign({}, cTilesetExt._bruceCoords);
2927
+ cTilesetExt._bruceCoords.ucs = coords.ucs ? {
2928
+ location: coords.ucs.location ? JSON.parse(JSON.stringify(coords.ucs.location)) : null,
2929
+ transform: null
2930
+ } : null;
2931
+ cTilesetExt._bruceCoords.location = location ? JSON.parse(JSON.stringify(location)) : null;
2932
+ cTilesetExt._bruceCoords.transform = transform ? JSON.parse(JSON.stringify(transform)) : null;
2920
2933
  }
2921
2934
  TilesetRenderEngine.ApplyPosition = ApplyPosition;
2922
2935
  function ApplySettings(cTileset, tileset) {
@@ -3011,6 +3024,149 @@ var TilesetRenderEngine;
3011
3024
  }
3012
3025
  }
3013
3026
  TilesetRenderEngine.Render = Render;
3027
+ function ApplyLegacyPosition(params) {
3028
+ var cTileset = params.cTileset, tileset = params.tileset;
3029
+ var settings = tileset.Settings;
3030
+ settings = __assign({}, settings);
3031
+ var origin = settings.origin;
3032
+ origin = __assign({}, origin);
3033
+ var etc = settings.etc;
3034
+ etc = __assign({}, etc);
3035
+ var root = cTileset.root;
3036
+ var transform = etc.dontTransform != true;
3037
+ if (!transform) {
3038
+ return;
3039
+ }
3040
+ if (origin.usingBoundingBox == null) {
3041
+ origin.usingBoundingBox = true;
3042
+ }
3043
+ var getCurPos3d = function () {
3044
+ if (origin.usingBoundingBox == false) {
3045
+ return Matrix4.getTranslation(root.transform, new Cartesian3());
3046
+ }
3047
+ else {
3048
+ return Cartesian3.clone(root.boundingSphere.center);
3049
+ }
3050
+ };
3051
+ var pos3d;
3052
+ if (origin.latitude != null && origin.longitude != null) {
3053
+ pos3d = Cartesian3.fromDegrees(EnsureNumber(origin.longitude), EnsureNumber(origin.latitude), EnsureNumber(origin.altitude));
3054
+ }
3055
+ if (!pos3d) {
3056
+ pos3d = getCurPos3d();
3057
+ }
3058
+ // Store data in the tileset as we can't interpret it using the cesium primitive later.
3059
+ var cTilesetExt = cTileset;
3060
+ cTilesetExt._bruceCoords.transform = null;
3061
+ var rotate = etc.dontRotate != true;
3062
+ if (rotate) {
3063
+ var rotation = settings.rotation;
3064
+ var hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(rotation.z), EnsureNumber(rotation.x), EnsureNumber(rotation.y), new HeadingPitchRoll());
3065
+ root.transform = Transforms.headingPitchRollToFixedFrame(pos3d, hpr);
3066
+ root.updateTransform();
3067
+ cTilesetExt._bruceCoords.transform = {
3068
+ heading: rotation.z,
3069
+ pitch: rotation.x,
3070
+ roll: rotation.y,
3071
+ scale: 1
3072
+ };
3073
+ }
3074
+ var curPos3d = getCurPos3d();
3075
+ var newTransform = Matrix4.pack(root.transform.clone(new Matrix4()), []);
3076
+ newTransform[12] += pos3d.x - curPos3d.x;
3077
+ newTransform[13] += pos3d.y - curPos3d.y;
3078
+ newTransform[14] += pos3d.z - curPos3d.z;
3079
+ root.transform = Matrix4.unpack(newTransform);
3080
+ root.updateTransform();
3081
+ var carto = Cartographic.fromCartesian(pos3d);
3082
+ cTilesetExt._bruceCoords.location = carto ? {
3083
+ altitude: carto.height,
3084
+ latitude: carto.latitude,
3085
+ longitude: carto.longitude
3086
+ } : null;
3087
+ cTilesetExt._bruceCoords.legacy = true;
3088
+ cTilesetExt._bruceCoords.legacyUsingBoundingBox = origin.usingBoundingBox;
3089
+ }
3090
+ TilesetRenderEngine.ApplyLegacyPosition = ApplyLegacyPosition;
3091
+ function ApplyLegacySettings(params) {
3092
+ var cTileset = params.cTileset, tileset = params.tileset;
3093
+ var settings = tileset.Settings;
3094
+ settings = __assign({}, settings);
3095
+ var visual = settings.visual;
3096
+ visual = __assign({}, visual);
3097
+ cTileset.maximumScreenSpaceError = EnsureNumber(visual.maximumScreenSpaceError, 5);
3098
+ cTileset.pointCloudShading.attenuation = visual.attenuation != false;
3099
+ cTileset.pointCloudShading.maximumAttenuation = EnsureNumber(visual.attenuationMax, 4);
3100
+ var colorMask = visual.colorMask;
3101
+ if (colorMask && (tileset.Type == "S" || tileset.Type == "X")) {
3102
+ tileset.style = new Cesium3DTileStyle({
3103
+ color: colorMask
3104
+ });
3105
+ }
3106
+ }
3107
+ TilesetRenderEngine.ApplyLegacySettings = ApplyLegacySettings;
3108
+ function RenderLegacy(params) {
3109
+ return __awaiter(this, void 0, void 0, function () {
3110
+ var apiGetter, viewer, tileset, ionId, settings, visual, etc, loadUrl, api, cTileset;
3111
+ return __generator(this, function (_a) {
3112
+ switch (_a.label) {
3113
+ case 0:
3114
+ apiGetter = params.apiGetter, viewer = params.viewer, tileset = params.tileset, ionId = params.ionId;
3115
+ settings = tileset === null || tileset === void 0 ? void 0 : tileset.Settings;
3116
+ settings = __assign({}, settings);
3117
+ visual = settings.visual;
3118
+ visual = __assign({}, visual);
3119
+ etc = settings.etc;
3120
+ etc = __assign({}, etc);
3121
+ loadUrl = null;
3122
+ if (!ionId) return [3 /*break*/, 2];
3123
+ return [4 /*yield*/, IonResource.fromAssetId(EnsureNumber(ionId))];
3124
+ case 1:
3125
+ // TODO: Can cause issues with menu-item dispose race conditions.
3126
+ loadUrl = _a.sent();
3127
+ return [3 /*break*/, 3];
3128
+ case 2:
3129
+ if (tileset) {
3130
+ if (etc === null || etc === void 0 ? void 0 : etc.ExternalTilesetURL) {
3131
+ loadUrl = etc.ExternalTilesetURL;
3132
+ }
3133
+ else {
3134
+ api = apiGetter.getApi(apiGetter.accountId);
3135
+ loadUrl = api.GetBaseUrl() + ("ui.tileset/" + tileset.id + "/file/tileset.json");
3136
+ }
3137
+ }
3138
+ _a.label = 3;
3139
+ case 3:
3140
+ cTileset = this.cTileset = new Cesium3DTileset({
3141
+ url: loadUrl
3142
+ });
3143
+ this.viewer.scene.primitives.add(cTileset);
3144
+ cTileset.readyPromise.then(function () {
3145
+ try {
3146
+ if (!isAlive(viewer, cTileset)) {
3147
+ return;
3148
+ }
3149
+ if (tileset) {
3150
+ ApplyLegacySettings({
3151
+ cTileset: cTileset,
3152
+ tileset: tileset
3153
+ });
3154
+ ApplyLegacyPosition({
3155
+ cTileset: cTileset,
3156
+ tileset: tileset
3157
+ });
3158
+ }
3159
+ }
3160
+ catch (e) {
3161
+ console.error(e);
3162
+ }
3163
+ });
3164
+ return [2 /*return*/, cTileset];
3165
+ }
3166
+ });
3167
+ });
3168
+ }
3169
+ TilesetRenderEngine.RenderLegacy = RenderLegacy;
3014
3170
  var CadStyler = /** @class */ (function () {
3015
3171
  function CadStyler(api, cTileset, fallbackStyleId, styleMapping) {
3016
3172
  this.disposed = false;
@@ -3507,13 +3663,13 @@ var TilesetCadRenderManager;
3507
3663
  for (var i = 0; i < content.featuresLength; i++) {
3508
3664
  var feature = content.getFeature(i);
3509
3665
  var rego = this.mapTilesetFeature(feature);
3510
- if (rego === null || rego === void 0 ? void 0 : rego.entityId) {
3666
+ if ((rego === null || rego === void 0 ? void 0 : rego.entityId) && this.styler) {
3511
3667
  this.styler.QueueEntities([rego]);
3512
3668
  }
3513
3669
  }
3514
3670
  };
3515
3671
  Manager.prototype.mapTilesetFeature = function (feature) {
3516
- var _a, _b, _c, _d;
3672
+ var _a, _b, _c, _d, _e, _f;
3517
3673
  var version = (_c = (_b = (_a = feature === null || feature === void 0 ? void 0 : feature.tileset) === null || _a === void 0 ? void 0 : _a.extensions) === null || _b === void 0 ? void 0 : _b.modelTree) === null || _c === void 0 ? void 0 : _c.version;
3518
3674
  if (!version) {
3519
3675
  version = 1;
@@ -3523,7 +3679,8 @@ var TilesetCadRenderManager;
3523
3679
  entityTypeId: null,
3524
3680
  menuItemId: this.item.id,
3525
3681
  priority: 0,
3526
- visual: feature
3682
+ visual: feature,
3683
+ accountId: (_e = (_d = this.item.tileset) === null || _d === void 0 ? void 0 : _d.ClientAccountID) !== null && _e !== void 0 ? _e : this.apiGetter.accountId
3527
3684
  };
3528
3685
  if (version == 1) {
3529
3686
  var pathStr = feature.getProperty("BrucePath");
@@ -3552,7 +3709,7 @@ var TilesetCadRenderManager;
3552
3709
  }
3553
3710
  // Optional menu item restriction.
3554
3711
  // Allows only showing certain entities from a tileset.
3555
- var onlyIds = (_d = this.item.BruceEntity) === null || _d === void 0 ? void 0 : _d.EntityIds;
3712
+ var onlyIds = (_f = this.item.BruceEntity) === null || _f === void 0 ? void 0 : _f.EntityIds;
3556
3713
  if ((onlyIds === null || onlyIds === void 0 ? void 0 : onlyIds.length) && !onlyIds.includes(rego.entityId)) {
3557
3714
  if (this.item.BruceEntity.Ghosts) {
3558
3715
  feature.color = Color.WHITE.clone().withAlpha(0.5);
@@ -3954,7 +4111,8 @@ var TilesetOsmRenderManager;
3954
4111
  priority: 0,
3955
4112
  visual: feature,
3956
4113
  entityTypeId: this.entityTypeId,
3957
- sourceId: this.sourceId
4114
+ sourceId: this.sourceId,
4115
+ accountId: this.apiGetter.accountId
3958
4116
  };
3959
4117
  this.visualsManager.Add(rego);
3960
4118
  this._loadedCesiumEntities[bId] = rego;
@@ -4100,6 +4258,7 @@ var TilesetEntitiesRenderManager;
4100
4258
  }
4101
4259
  };
4102
4260
  Manager.prototype.mapTilesetFeature = function (feature) {
4261
+ var _a, _b, _c;
4103
4262
  var id = feature.getProperty("BruceId");
4104
4263
  if (id) {
4105
4264
  var rego = {
@@ -4107,7 +4266,9 @@ var TilesetEntitiesRenderManager;
4107
4266
  entityTypeId: this.typeId,
4108
4267
  menuItemId: this.item.id,
4109
4268
  priority: 0,
4110
- visual: feature
4269
+ visual: feature,
4270
+ tilesetId: (_a = this.item.tileset) === null || _a === void 0 ? void 0 : _a.TilesetID,
4271
+ accountId: (_c = (_b = this.item.tileset) === null || _b === void 0 ? void 0 : _b.ClientAccountID) !== null && _c !== void 0 ? _c : this.apiGetter.accountId
4111
4272
  };
4112
4273
  this.visualsManager.Add(rego);
4113
4274
  }
@@ -4285,6 +4446,247 @@ var DataSourceStaticKmlManager;
4285
4446
  DataSourceStaticKmlManager.Manager = Manager;
4286
4447
  })(DataSourceStaticKmlManager || (DataSourceStaticKmlManager = {}));
4287
4448
 
4449
+ function getLegacyTileset(params) {
4450
+ return __awaiter(this, void 0, void 0, function () {
4451
+ var apiGetter, menuItem, tileset, api, legacyTileset, e_1;
4452
+ return __generator(this, function (_a) {
4453
+ switch (_a.label) {
4454
+ case 0:
4455
+ apiGetter = params.apiGetter, menuItem = params.menuItem, tileset = params.tileset;
4456
+ _a.label = 1;
4457
+ case 1:
4458
+ _a.trys.push([1, 3, , 4]);
4459
+ api = apiGetter.getApi(menuItem.tileset.ClientAccountID);
4460
+ return [4 /*yield*/, api.GET("ui.tileset/" + tileset.id)];
4461
+ case 2:
4462
+ legacyTileset = _a.sent();
4463
+ return [2 /*return*/, legacyTileset];
4464
+ case 3:
4465
+ e_1 = _a.sent();
4466
+ console.log(e_1);
4467
+ return [3 /*break*/, 4];
4468
+ case 4: return [2 /*return*/];
4469
+ }
4470
+ });
4471
+ });
4472
+ }
4473
+ function getTileset(params) {
4474
+ return __awaiter(this, void 0, void 0, function () {
4475
+ var apiGetter, menuItem, api, tileset, e_2;
4476
+ return __generator(this, function (_a) {
4477
+ switch (_a.label) {
4478
+ case 0:
4479
+ apiGetter = params.apiGetter, menuItem = params.menuItem;
4480
+ _a.label = 1;
4481
+ case 1:
4482
+ _a.trys.push([1, 3, , 4]);
4483
+ api = apiGetter.getApi(menuItem.tileset.ClientAccountID);
4484
+ return [4 /*yield*/, Tileset.Get({
4485
+ api: api,
4486
+ tilesetId: menuItem.tileset.TilesetID
4487
+ })];
4488
+ case 2:
4489
+ tileset = (_a.sent()).tileset;
4490
+ return [2 /*return*/, tileset];
4491
+ case 3:
4492
+ e_2 = _a.sent();
4493
+ console.error(e_2);
4494
+ return [3 /*break*/, 4];
4495
+ case 4: return [2 /*return*/];
4496
+ }
4497
+ });
4498
+ });
4499
+ }
4500
+ var TilesetArbRenderManager;
4501
+ (function (TilesetArbRenderManager) {
4502
+ var Manager = /** @class */ (function () {
4503
+ function Manager(params) {
4504
+ this.disposed = false;
4505
+ this.cTileset = null;
4506
+ this.styler = null;
4507
+ this.viewer = params.viewer;
4508
+ this.apiGetter = params.apiGetter;
4509
+ this.item = params.item;
4510
+ }
4511
+ Object.defineProperty(Manager.prototype, "Disposed", {
4512
+ get: function () {
4513
+ return this.disposed;
4514
+ },
4515
+ enumerable: false,
4516
+ configurable: true
4517
+ });
4518
+ Object.defineProperty(Manager.prototype, "Tileset", {
4519
+ get: function () {
4520
+ return this.cTileset;
4521
+ },
4522
+ enumerable: false,
4523
+ configurable: true
4524
+ });
4525
+ Manager.prototype.Init = function () {
4526
+ var _a, _b, _c;
4527
+ return __awaiter(this, void 0, void 0, function () {
4528
+ var itemUrl, tileset, legacyTileset, _d;
4529
+ var _this = this;
4530
+ return __generator(this, function (_e) {
4531
+ switch (_e.label) {
4532
+ case 0:
4533
+ itemUrl = (_a = this.item.tileset) === null || _a === void 0 ? void 0 : _a.TilesetURL;
4534
+ if (itemUrl && itemUrl.includes("cc3d.api")) {
4535
+ this.item.tileset.ClientAccountID = "cc3d";
4536
+ }
4537
+ else if ((_b = this.item.IonResource) === null || _b === void 0 ? void 0 : _b.AssetID) {
4538
+ this.item.tileset.ClientAccountID = "cc3d";
4539
+ }
4540
+ return [4 /*yield*/, getTileset({
4541
+ apiGetter: this.apiGetter,
4542
+ menuItem: this.item
4543
+ })];
4544
+ case 1:
4545
+ tileset = _e.sent();
4546
+ if (!(tileset === null || tileset === void 0 ? void 0 : tileset.type)) return [3 /*break*/, 2];
4547
+ this.cTileset = TilesetRenderEngine.Render({
4548
+ apiGetter: this.apiGetter,
4549
+ tileset: tileset,
4550
+ viewer: this.viewer,
4551
+ coords: null
4552
+ });
4553
+ return [3 /*break*/, 5];
4554
+ case 2: return [4 /*yield*/, getLegacyTileset({
4555
+ apiGetter: this.apiGetter,
4556
+ menuItem: this.item,
4557
+ tileset: tileset
4558
+ })];
4559
+ case 3:
4560
+ legacyTileset = _e.sent();
4561
+ _d = this;
4562
+ return [4 /*yield*/, TilesetRenderEngine.RenderLegacy({
4563
+ apiGetter: this.apiGetter,
4564
+ tileset: legacyTileset,
4565
+ viewer: this.viewer,
4566
+ ionId: (_c = this.item.IonResource) === null || _c === void 0 ? void 0 : _c.AssetID
4567
+ })];
4568
+ case 4:
4569
+ _d.cTileset = _e.sent();
4570
+ _e.label = 5;
4571
+ case 5:
4572
+ this.cTileset.readyPromise.then(function () {
4573
+ try {
4574
+ if (_this.item.ApplyStyles) {
4575
+ var api = _this.apiGetter.getApi();
4576
+ _this.styler = new TilesetRenderEngine.CadStyler(api, _this.cTileset, _this.item.styleId, _this.item.StyleMapping);
4577
+ _this.onCTilesetLoad();
4578
+ }
4579
+ }
4580
+ catch (e) {
4581
+ console.error(e);
4582
+ }
4583
+ });
4584
+ this.cTileset.tileLoad.addEventListener(function (tile) {
4585
+ try {
4586
+ _this.mapCTile(tile);
4587
+ }
4588
+ catch (e) {
4589
+ console.error(e);
4590
+ }
4591
+ });
4592
+ return [2 /*return*/];
4593
+ }
4594
+ });
4595
+ });
4596
+ };
4597
+ Manager.prototype.onCTilesetLoad = function () {
4598
+ if (this.item.FlyTo) {
4599
+ this.viewer.zoomTo(this.cTileset, new HeadingPitchRange(0.0, -0.5, this.cTileset.boundingSphere.radius / 4.0));
4600
+ }
4601
+ };
4602
+ Manager.prototype.Dispose = function () {
4603
+ var _a;
4604
+ if (this.disposed) {
4605
+ return;
4606
+ }
4607
+ this.disposed = true;
4608
+ if (this.cTileset) {
4609
+ var viewer = this.viewer;
4610
+ if (!(viewer === null || viewer === void 0 ? void 0 : viewer.isDestroyed()) && this.viewer.scene.primitives.contains(this.cTileset)) {
4611
+ this.cTileset.show = false;
4612
+ this.viewer.scene.primitives.remove(this.cTileset);
4613
+ }
4614
+ this.cTileset = null;
4615
+ }
4616
+ (_a = this.styler) === null || _a === void 0 ? void 0 : _a.Dispose();
4617
+ this.visualsManager.RemoveByMenuItemId(this.item.id);
4618
+ };
4619
+ Manager.prototype.ReRender = function (entityIds) {
4620
+ return __awaiter(this, void 0, void 0, function () {
4621
+ var regos;
4622
+ return __generator(this, function (_a) {
4623
+ if (!this.styler) {
4624
+ return [2 /*return*/];
4625
+ }
4626
+ regos = this.visualsManager.GetMenuItemRegos(this.item.id);
4627
+ if (entityIds != null) {
4628
+ regos = regos.filter(function (r) { return entityIds.indexOf(r.entityId) >= 0; });
4629
+ }
4630
+ this.styler.QueueEntities(regos);
4631
+ return [2 /*return*/];
4632
+ });
4633
+ });
4634
+ };
4635
+ Manager.prototype.mapCTile = function (tile) {
4636
+ var content = tile === null || tile === void 0 ? void 0 : tile.content;
4637
+ if (!content) {
4638
+ return;
4639
+ }
4640
+ for (var i = 0; i < content.featuresLength; i++) {
4641
+ var feature = content.getFeature(i);
4642
+ var rego = this.mapTilesetFeature(feature);
4643
+ if ((rego === null || rego === void 0 ? void 0 : rego.entityId) && this.styler) {
4644
+ this.styler.QueueEntities([rego]);
4645
+ }
4646
+ }
4647
+ };
4648
+ Manager.prototype.mapTilesetFeature = function (feature) {
4649
+ var _a, _b, _c;
4650
+ var rego = {
4651
+ entityId: null,
4652
+ entityTypeId: null,
4653
+ menuItemId: this.item.id,
4654
+ priority: 0,
4655
+ visual: feature,
4656
+ accountId: (_b = (_a = this.item.tileset) === null || _a === void 0 ? void 0 : _a.ClientAccountID) !== null && _b !== void 0 ? _b : this.apiGetter.accountId
4657
+ };
4658
+ var props = feature.getPropertyNames([]);
4659
+ if (props.find(function (x) { return x == "BrucePath"; })) {
4660
+ var path = (_c = feature.getProperty("BrucePath")) === null || _c === void 0 ? void 0 : _c.split("|");
4661
+ if (path === null || path === void 0 ? void 0 : path.length) {
4662
+ rego.entityId = path[path.length - 1];
4663
+ }
4664
+ }
4665
+ if (!rego.entityId) {
4666
+ var ACCEPTABLE_PROPS = [
4667
+ "Building_ID", "BuildingID", "BruceId"
4668
+ ];
4669
+ for (var _i = 0, ACCEPTABLE_PROPS_1 = ACCEPTABLE_PROPS; _i < ACCEPTABLE_PROPS_1.length; _i++) {
4670
+ var acceptableId = ACCEPTABLE_PROPS_1[_i];
4671
+ if (props.indexOf(acceptableId) > -1) {
4672
+ rego.entityId = feature.getProperty(acceptableId);
4673
+ if (rego.entityId) {
4674
+ break;
4675
+ }
4676
+ }
4677
+ }
4678
+ }
4679
+ if (!rego.entityId) {
4680
+ return null;
4681
+ }
4682
+ this.visualsManager.Add(rego);
4683
+ return rego;
4684
+ };
4685
+ return Manager;
4686
+ }());
4687
+ TilesetArbRenderManager.Manager = Manager;
4688
+ })(TilesetArbRenderManager || (TilesetArbRenderManager = {}));
4689
+
4288
4690
  /**
4289
4691
  * Utility to keep track of enabled menu items within a Cesium viewer.
4290
4692
  */
@@ -4385,6 +4787,14 @@ var MenuItemManager;
4385
4787
  case MenuItem.EType.Kml:
4386
4788
  rItem.renderManager = new DataSourceStaticKmlManager.Manager(this.viewer, params.apiGetter, params.item);
4387
4789
  break;
4790
+ case MenuItem.EType.ArbTileset:
4791
+ rItem.renderManager = new TilesetArbRenderManager.Manager({
4792
+ apiGetter: params.apiGetter,
4793
+ item: params.item,
4794
+ viewer: this.viewer,
4795
+ visualsManager: this.visualsRegister
4796
+ });
4797
+ break;
4388
4798
  // Any "none" type can be ignored. These are just containers for other items.
4389
4799
  case MenuItem.EType.None:
4390
4800
  break;