bruce-cesium 0.9.8 → 1.0.0

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, 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, Cesium3DTileStyle, IonResource, EllipsoidGeodesic, PolygonPipeline, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, KmlDataSource, createOsmBuildings } 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, Cesium3DTileStyle, Cesium3DTileset, IonResource, EllipsoidGeodesic, PolygonPipeline, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, createOsmBuildings, KmlDataSource } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -2742,7 +2742,7 @@ var VisualsRegister;
2742
2742
  if (!entityRegos) {
2743
2743
  return;
2744
2744
  }
2745
- var menuItems = menuItemId ? menuItemId : Object.keys(entityRegos);
2745
+ var menuItems = menuItemId ? [menuItemId] : entityRegos.map(function (x) { return x.menuItemId; });
2746
2746
  var _loop_3 = function (i) {
2747
2747
  var menuItemId_2 = menuItems[i];
2748
2748
  var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId_2; });
@@ -3215,10 +3215,10 @@ function colorToCColor$1(color) {
3215
3215
  * @returns
3216
3216
  */
3217
3217
  function isAlive(viewer, cTileset) {
3218
- if (viewer.isDestroyed()) {
3218
+ if (!(viewer === null || viewer === void 0 ? void 0 : viewer.scene)) {
3219
3219
  return false;
3220
3220
  }
3221
- if (!(viewer === null || viewer === void 0 ? void 0 : viewer.scene)) {
3221
+ if (viewer.isDestroyed()) {
3222
3222
  return false;
3223
3223
  }
3224
3224
  if (cTileset.isDestroyed()) {
@@ -3228,81 +3228,84 @@ function isAlive(viewer, cTileset) {
3228
3228
  }
3229
3229
  var TilesetRenderEngine;
3230
3230
  (function (TilesetRenderEngine) {
3231
- function ApplyPosition(cTileset, tileset, coords) {
3232
- var location;
3233
- var transform;
3234
- if (tileset.type == Tileset.EType.Cad) {
3235
- var settings = tileset.settings;
3236
- // Position using root entity + ucs.
3237
- if (coords === null || coords === void 0 ? void 0 : coords.ucs) {
3238
- location = coords.ucs.location;
3239
- transform = coords.transform;
3240
- }
3241
- // Position using tileset.
3242
- else {
3243
- transform = settings.transform;
3244
- location = settings.location;
3245
- }
3246
- }
3247
- else if (tileset.type == Tileset.EType.PointCloud) {
3248
- var settings = tileset.settings;
3249
- transform = settings.transform;
3250
- location = settings.location;
3251
- }
3252
- if (!(location === null || location === void 0 ? void 0 : location.latitude)) {
3253
- return;
3254
- }
3231
+ function ApplyPosition(params) {
3232
+ var _a;
3233
+ var cTileset = params.cTileset;
3234
+ var root = cTileset.root;
3235
+ var position = params.position;
3236
+ var location = ((_a = position.ucs) === null || _a === void 0 ? void 0 : _a.location) ? position.ucs.location : position.location;
3237
+ var transform = position.transform;
3255
3238
  transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
3256
3239
  transform.scale = EnsureNumber(transform.scale);
3257
3240
  if (transform.scale <= 0) {
3258
3241
  transform.scale = 0.000001;
3259
3242
  }
3260
- var pos = Cartesian3.fromDegrees(EnsureNumber(location.longitude), EnsureNumber(location.latitude), EnsureNumber(location.altitude));
3261
- var hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(transform.heading), EnsureNumber(transform.pitch), EnsureNumber(transform.roll), new HeadingPitchRoll());
3262
- var root = cTileset.root;
3263
- root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
3264
- var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
3265
- root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
3266
- root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(EnsureNumber(transform.x), EnsureNumber(transform.y), EnsureNumber(transform.z)), root.transform);
3267
- // Force matrix to update
3268
- root.updateTransform();
3243
+ if (position.isLegacy) {
3244
+ var legacy_1 = position.legacyProps;
3245
+ if (legacy_1.usingBoundingBox == null) {
3246
+ legacy_1.usingBoundingBox = true;
3247
+ }
3248
+ var getCurPos3d = function () {
3249
+ if (legacy_1.usingBoundingBox == false) {
3250
+ return Matrix4.getTranslation(root.transform, new Cartesian3());
3251
+ }
3252
+ else {
3253
+ return Cartesian3.clone(root.boundingSphere.center);
3254
+ }
3255
+ };
3256
+ var pos3d = void 0;
3257
+ if (location.latitude != null && location.longitude != null) {
3258
+ pos3d = Cartesian3.fromDegrees(EnsureNumber(location.longitude), EnsureNumber(location.latitude), EnsureNumber(location.altitude));
3259
+ }
3260
+ if (!pos3d) {
3261
+ pos3d = getCurPos3d();
3262
+ }
3263
+ // Store data in the tileset as we can't interpret it using the cesium primitive later.
3264
+ var cTilesetExt_1 = cTileset;
3265
+ cTilesetExt_1._bruceCoords.transform = null;
3266
+ if (legacy_1.rotate) {
3267
+ var hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(transform.heading), EnsureNumber(transform.pitch), EnsureNumber(transform.roll), new HeadingPitchRoll());
3268
+ root.transform = Transforms.headingPitchRollToFixedFrame(pos3d, hpr);
3269
+ root.updateTransform();
3270
+ }
3271
+ var curPos3d = getCurPos3d();
3272
+ var newTransform = Matrix4.pack(root.transform.clone(new Matrix4()), []);
3273
+ newTransform[12] += pos3d.x - curPos3d.x;
3274
+ newTransform[13] += pos3d.y - curPos3d.y;
3275
+ newTransform[14] += pos3d.z - curPos3d.z;
3276
+ root.transform = Matrix4.unpack(newTransform);
3277
+ root.updateTransform();
3278
+ }
3279
+ else {
3280
+ if (!(location === null || location === void 0 ? void 0 : location.latitude)) {
3281
+ return;
3282
+ }
3283
+ var pos = Cartesian3.fromDegrees(EnsureNumber(location.longitude), EnsureNumber(location.latitude), EnsureNumber(location.altitude));
3284
+ var hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(transform.heading), EnsureNumber(transform.pitch), EnsureNumber(transform.roll), new HeadingPitchRoll());
3285
+ root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
3286
+ var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
3287
+ root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
3288
+ root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(EnsureNumber(transform.x), EnsureNumber(transform.y), EnsureNumber(transform.z)), root.transform);
3289
+ // Force matrix to update
3290
+ root.updateTransform();
3291
+ }
3269
3292
  // Store data in the tileset as we can't interpret it using the cesium primitive later.
3270
3293
  var cTilesetExt = cTileset;
3271
- cTilesetExt._bruceCoords = __assign({}, cTilesetExt._bruceCoords);
3272
- cTilesetExt._bruceCoords.ucs = coords.ucs ? {
3273
- location: coords.ucs.location ? JSON.parse(JSON.stringify(coords.ucs.location)) : null,
3274
- transform: null
3275
- } : null;
3276
- cTilesetExt._bruceCoords.location = location ? JSON.parse(JSON.stringify(location)) : null;
3277
- cTilesetExt._bruceCoords.transform = transform ? JSON.parse(JSON.stringify(transform)) : null;
3294
+ cTilesetExt._bruceCoords = __assign({}, position);
3278
3295
  }
3279
3296
  TilesetRenderEngine.ApplyPosition = ApplyPosition;
3280
- function ApplySettings(cTileset, tileset) {
3281
- if (tileset.type == Tileset.EType.Cad) {
3282
- var settings = tileset.settings;
3283
- var maxScreenSpaceError = settings.maximumScreenSpaceError;
3284
- if (maxScreenSpaceError || maxScreenSpaceError == 0) {
3285
- cTileset.maximumScreenSpaceError = EnsureNumber(maxScreenSpaceError);
3286
- }
3287
- }
3288
- else if (tileset.type == Tileset.EType.PointCloud) {
3289
- var settings = tileset.settings;
3290
- var maxScreenSpaceError = settings.maximumScreenSpaceError;
3291
- if (maxScreenSpaceError || maxScreenSpaceError == 0) {
3292
- cTileset.maximumScreenSpaceError = EnsureNumber(maxScreenSpaceError);
3293
- }
3294
- var attenuation = settings.attenuation;
3295
- if (attenuation != null) {
3296
- cTileset.pointCloudShading.attenuation = Boolean(attenuation);
3297
- }
3298
- var attenuationMax = settings.attenuationMax;
3299
- if (attenuationMax || attenuationMax == 0) {
3300
- cTileset.pointCloudShading.maximumAttenuation = EnsureNumber(attenuationMax);
3301
- }
3302
- }
3303
- else {
3304
- console.warn("Not implemented.");
3297
+ function ApplySettings(params) {
3298
+ var cTileset = params.cTileset, settings = params.settings;
3299
+ cTileset.maximumScreenSpaceError = EnsureNumber(settings.maxScreenSpaceError, 5);
3300
+ cTileset.pointCloudShading.attenuation = Boolean(settings.attenuation);
3301
+ cTileset.pointCloudShading.maximumAttenuation = EnsureNumber(settings.maximumAttenuation, 4);
3302
+ if (settings.colorMask) {
3303
+ cTileset.style = new Cesium3DTileStyle({
3304
+ color: settings.colorMask
3305
+ });
3305
3306
  }
3307
+ var cTilesetExt = cTileset;
3308
+ cTilesetExt._bruceSettings = __assign({}, settings);
3306
3309
  }
3307
3310
  TilesetRenderEngine.ApplySettings = ApplySettings;
3308
3311
  function Render(params) {
@@ -3317,12 +3320,26 @@ var TilesetRenderEngine;
3317
3320
  });
3318
3321
  params.viewer.scene.primitives.add(cTileset_1);
3319
3322
  cTileset_1.readyPromise.then(function () {
3323
+ var _a, _b, _c;
3320
3324
  try {
3321
3325
  if (!isAlive(params.viewer, cTileset_1)) {
3322
3326
  return;
3323
3327
  }
3324
- ApplySettings(cTileset_1, params.tileset);
3325
- ApplyPosition(cTileset_1, params.tileset, params.coords);
3328
+ var settings = params.tileset.settings;
3329
+ ApplySettings({
3330
+ cTileset: cTileset_1,
3331
+ settings: {
3332
+ maxScreenSpaceError: settings.maximumScreenSpaceError
3333
+ }
3334
+ });
3335
+ ApplyPosition({
3336
+ cTileset: cTileset_1,
3337
+ position: {
3338
+ ucs: (_a = params.coords) === null || _a === void 0 ? void 0 : _a.ucs,
3339
+ location: ((_b = params.coords) === null || _b === void 0 ? void 0 : _b.location) == null ? settings.location : params.coords.location,
3340
+ transform: ((_c = params.coords) === null || _c === void 0 ? void 0 : _c.transform) == null ? settings.transform : params.coords.transform
3341
+ }
3342
+ });
3326
3343
  }
3327
3344
  catch (e) {
3328
3345
  console.error(e);
@@ -3355,8 +3372,22 @@ var TilesetRenderEngine;
3355
3372
  if (!isAlive(params.viewer, cTileset_2)) {
3356
3373
  return;
3357
3374
  }
3358
- ApplySettings(cTileset_2, params.tileset);
3359
- ApplyPosition(cTileset_2, params.tileset, null);
3375
+ var settings = params.tileset.settings;
3376
+ ApplySettings({
3377
+ cTileset: cTileset_2,
3378
+ settings: {
3379
+ attenuation: settings.attenuation,
3380
+ maximumAttenuation: settings.attenuationMax,
3381
+ maxScreenSpaceError: settings.maximumScreenSpaceError
3382
+ }
3383
+ });
3384
+ ApplyPosition({
3385
+ cTileset: cTileset_2,
3386
+ position: {
3387
+ location: settings.location,
3388
+ transform: settings.transform
3389
+ }
3390
+ });
3360
3391
  }
3361
3392
  catch (e) {
3362
3393
  console.error(e);
@@ -3369,87 +3400,6 @@ var TilesetRenderEngine;
3369
3400
  }
3370
3401
  }
3371
3402
  TilesetRenderEngine.Render = Render;
3372
- function ApplyLegacyPosition(params) {
3373
- var cTileset = params.cTileset, tileset = params.tileset;
3374
- var settings = tileset.Settings;
3375
- settings = __assign({}, settings);
3376
- var origin = settings.origin;
3377
- origin = __assign({}, origin);
3378
- var etc = settings.etc;
3379
- etc = __assign({}, etc);
3380
- var root = cTileset.root;
3381
- var transform = etc.dontTransform != true;
3382
- if (!transform) {
3383
- return;
3384
- }
3385
- if (origin.usingBoundingBox == null) {
3386
- origin.usingBoundingBox = true;
3387
- }
3388
- var getCurPos3d = function () {
3389
- if (origin.usingBoundingBox == false) {
3390
- return Matrix4.getTranslation(root.transform, new Cartesian3());
3391
- }
3392
- else {
3393
- return Cartesian3.clone(root.boundingSphere.center);
3394
- }
3395
- };
3396
- var pos3d;
3397
- if (origin.latitude != null && origin.longitude != null) {
3398
- pos3d = Cartesian3.fromDegrees(EnsureNumber(origin.longitude), EnsureNumber(origin.latitude), EnsureNumber(origin.altitude));
3399
- }
3400
- if (!pos3d) {
3401
- pos3d = getCurPos3d();
3402
- }
3403
- // Store data in the tileset as we can't interpret it using the cesium primitive later.
3404
- var cTilesetExt = cTileset;
3405
- cTilesetExt._bruceCoords.transform = null;
3406
- var rotate = etc.dontRotate != true;
3407
- if (rotate) {
3408
- var rotation = settings.rotation;
3409
- var hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(rotation.z), EnsureNumber(rotation.x), EnsureNumber(rotation.y), new HeadingPitchRoll());
3410
- root.transform = Transforms.headingPitchRollToFixedFrame(pos3d, hpr);
3411
- root.updateTransform();
3412
- cTilesetExt._bruceCoords.transform = {
3413
- heading: rotation.z,
3414
- pitch: rotation.x,
3415
- roll: rotation.y,
3416
- scale: 1
3417
- };
3418
- }
3419
- var curPos3d = getCurPos3d();
3420
- var newTransform = Matrix4.pack(root.transform.clone(new Matrix4()), []);
3421
- newTransform[12] += pos3d.x - curPos3d.x;
3422
- newTransform[13] += pos3d.y - curPos3d.y;
3423
- newTransform[14] += pos3d.z - curPos3d.z;
3424
- root.transform = Matrix4.unpack(newTransform);
3425
- root.updateTransform();
3426
- var carto = Cartographic.fromCartesian(pos3d);
3427
- cTilesetExt._bruceCoords.location = carto ? {
3428
- altitude: carto.height,
3429
- latitude: carto.latitude,
3430
- longitude: carto.longitude
3431
- } : null;
3432
- cTilesetExt._bruceCoords.legacy = true;
3433
- cTilesetExt._bruceCoords.legacyUsingBoundingBox = origin.usingBoundingBox;
3434
- }
3435
- TilesetRenderEngine.ApplyLegacyPosition = ApplyLegacyPosition;
3436
- function ApplyLegacySettings(params) {
3437
- var cTileset = params.cTileset, tileset = params.tileset;
3438
- var settings = tileset.Settings;
3439
- settings = __assign({}, settings);
3440
- var visual = settings.visual;
3441
- visual = __assign({}, visual);
3442
- cTileset.maximumScreenSpaceError = EnsureNumber(visual.maximumScreenSpaceError, 5);
3443
- cTileset.pointCloudShading.attenuation = visual.attenuation != false;
3444
- cTileset.pointCloudShading.maximumAttenuation = EnsureNumber(visual.attenuationMax, 4);
3445
- var colorMask = visual.colorMask;
3446
- if (colorMask && (tileset.Type == "S" || tileset.Type == "X")) {
3447
- tileset.style = new Cesium3DTileStyle({
3448
- color: colorMask
3449
- });
3450
- }
3451
- }
3452
- TilesetRenderEngine.ApplyLegacySettings = ApplyLegacySettings;
3453
3403
  function RenderLegacy(params) {
3454
3404
  return __awaiter(this, void 0, void 0, function () {
3455
3405
  var apiGetter, viewer, tileset, ionId, settings, visual, etc, loadUrl, api, cTileset;
@@ -3492,13 +3442,43 @@ var TilesetRenderEngine;
3492
3442
  return;
3493
3443
  }
3494
3444
  if (tileset) {
3495
- ApplyLegacySettings({
3445
+ var settings_1 = tileset.Settings;
3446
+ settings_1 = __assign({}, settings_1);
3447
+ var origin_1 = settings_1.origin;
3448
+ origin_1 = __assign({}, origin_1);
3449
+ var etc_1 = settings_1.etc;
3450
+ etc_1 = __assign({}, etc_1);
3451
+ var rotation = settings_1.rotation;
3452
+ ApplySettings({
3496
3453
  cTileset: cTileset,
3497
- tileset: tileset
3454
+ settings: {
3455
+ attenuation: visual.attenuation != false,
3456
+ colorMask: visual.colorMask,
3457
+ maximumAttenuation: visual.attenuationMax,
3458
+ maxScreenSpaceError: visual.maximumScreenSpaceError
3459
+ }
3498
3460
  });
3499
- ApplyLegacyPosition({
3500
- cTileset: cTileset,
3501
- tileset: tileset
3461
+ ApplyPosition({
3462
+ cTileset: tileset,
3463
+ position: {
3464
+ transform: rotation ? {
3465
+ heading: rotation.z,
3466
+ pitch: rotation.x,
3467
+ roll: rotation.y,
3468
+ scale: 1
3469
+ } : null,
3470
+ location: (origin_1 === null || origin_1 === void 0 ? void 0 : origin_1.latitude) ? {
3471
+ latitude: origin_1.latitude,
3472
+ longitude: origin_1.longitude,
3473
+ altitude: origin_1.altitude
3474
+ } : null,
3475
+ isLegacy: true,
3476
+ legacyProps: {
3477
+ rotate: etc_1.dontRotate != true,
3478
+ transform: etc_1.dontTransform != true,
3479
+ usingBoundingBox: etc_1.usingBoundingBox != false
3480
+ }
3481
+ }
3502
3482
  });
3503
3483
  }
3504
3484
  }