bruce-cesium 3.0.9 → 3.1.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.
@@ -1,6 +1,6 @@
1
1
  import { BruceEvent, Cartes, ProjectViewTile, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, DelayQueue, EntityCoords, Api, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, ProjectView, ProjectViewBookmark, ProjectViewLegacyTile, ProgramKey, Camera, AbstractApi, EntityAttachment, EntityAttachmentType, EntityAttribute } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, JulianDate, SceneMode, HeightReference, DistanceDisplayCondition, NearFarScalar, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Model, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, SceneTransforms, OrthographicFrustum, EasingFunction, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, defined, Cesium3DTileset, CesiumInspector, Matrix4, Matrix3, IonResource, Ion, ScreenSpaceEventHandler, ScreenSpaceEventType, PolygonPipeline, ColorMaterialProperty, GeometryInstance, BoundingSphere, Intersect } from 'cesium';
3
+ import { Cartographic, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, JulianDate, HeightReference, DistanceDisplayCondition, NearFarScalar, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Model, Primitive, Cesium3DTileFeature, SceneMode, HeadingPitchRange, Cesium3DTileColorBlendMode, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, SceneTransforms, OrthographicFrustum, EasingFunction, Cesium3DTileset, Matrix4, Matrix3, IonResource, Ion, EllipsoidTerrainProvider, CesiumInspector, defined, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, ScreenSpaceEventHandler, ScreenSpaceEventType, ColorMaterialProperty, BoundingSphere, GeometryInstance, Intersect } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -1127,7 +1127,7 @@ var EntityUtils;
1127
1127
  function GetLocation(params) {
1128
1128
  var _a, _b;
1129
1129
  return __awaiter(this, void 0, void 0, function () {
1130
- var api, viewer, samples, visualRegister, minimumAlt, paddingAlt, MAX_DISTANCE_BETWEEN_SAMPLES, MAX_TERRAIN_SAMPLES, terrainSamples, MAX_API_CALLS, apiCalls, MAX_VALID_SAMPLES, validSamples, MIN_RECT_DIAGONAL_LENGTH, terrainProviderReady, data, processPosHeight, ensureHeightRefs, getEntityPositions, allPosses, i, sample, samplePosses, valid, j, samplePos, k, allPos, distance, rect, factor, marginX, marginY, diagonalLen, terrData, posCarto, height, MIN_POSSES_LEN;
1130
+ var api, viewer, samples, visualRegister, minimumAlt, paddingAlt, MAX_DISTANCE_BETWEEN_SAMPLES, MAX_TERRAIN_SAMPLES, terrainSamples, MAX_API_CALLS, apiCalls, MAX_VALID_SAMPLES, validSamples, MIN_RECT_DIAGONAL_LENGTH, terrainProviderReady, data, spheres, processPosHeight, ensureHeightRefs, getEntityPositions, allPosses, i, sample, samplePosses, valid, j, samplePos, k, allPos, distance, rect, factor, marginX, marginY, diagonalLen, terrData, posCarto, height, MIN_POSSES_LEN, allPointSphere, rectSphere, combinedSphere;
1131
1131
  var _this = this;
1132
1132
  return __generator(this, function (_c) {
1133
1133
  switch (_c.label) {
@@ -1150,8 +1150,10 @@ var EntityUtils;
1150
1150
  terrainProviderReady = Boolean((_a = viewer === null || viewer === void 0 ? void 0 : viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a.ready);
1151
1151
  data = {
1152
1152
  pos3d: null,
1153
- rectangle: null
1153
+ rectangle: null,
1154
+ sphere: null
1154
1155
  };
1156
+ spheres = [];
1155
1157
  processPosHeight = function (pos3d, heightRef) { return __awaiter(_this, void 0, void 0, function () {
1156
1158
  var carto, baseHeight, terrData, height, carto;
1157
1159
  return __generator(this, function (_a) {
@@ -1235,69 +1237,38 @@ var EntityUtils;
1235
1237
  });
1236
1238
  }); };
1237
1239
  getEntityPositions = function (sample) { return __awaiter(_this, void 0, void 0, function () {
1238
- var entityId, entity, tileset, tilesetId, lat, lon, e_1, e_2, evaluateRendered, evaluateRecord, renderedPosses, recordPosses, tSettings, pos3d, alt, alt, heading, pitch, roll, matrix4, offset, m1, hpr, transform, transformedOffset;
1240
+ var entityId, entity, tileset, tilesetId, e_1, evaluateRendered, evaluateRecord, renderedPosses, recordPosses, e_2, tSettings, pos3d, alt, alt, heading, pitch, roll, matrix4, offset, m1, hpr, transform, transformedOffset, sphere;
1239
1241
  var _this = this;
1240
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
1241
- return __generator(this, function (_o) {
1242
- switch (_o.label) {
1242
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1243
+ return __generator(this, function (_l) {
1244
+ switch (_l.label) {
1243
1245
  case 0:
1244
1246
  entityId = sample.entityId, entity = sample.entity, tileset = sample.tileset, tilesetId = sample.tilesetId;
1245
- if (!!entity) return [3 /*break*/, 9];
1246
- lat = 0;
1247
- lon = 0;
1248
- if (!(apiCalls < MAX_API_CALLS)) return [3 /*break*/, 9];
1249
- // Counting this whole area as a single call because it has a single purpose.
1247
+ if (!!entity) return [3 /*break*/, 4];
1248
+ if (!(apiCalls < MAX_API_CALLS)) return [3 /*break*/, 4];
1250
1249
  apiCalls += 1;
1251
- _o.label = 1;
1250
+ _l.label = 1;
1252
1251
  case 1:
1253
- _o.trys.push([1, 3, , 4]);
1252
+ _l.trys.push([1, 3, , 4]);
1254
1253
  return [4 /*yield*/, Entity$1.Get({
1255
1254
  api: api,
1256
1255
  entityId: entityId,
1256
+ // Not expanding relative positions at first to see if the entity has valid location just by itself.
1257
1257
  expandLocation: false
1258
1258
  })];
1259
1259
  case 2:
1260
- entity = (_o.sent()).entity;
1261
- lat = +((_a = entity === null || entity === void 0 ? void 0 : entity.location) === null || _a === void 0 ? void 0 : _a.latitude);
1262
- lon = +((_b = entity === null || entity === void 0 ? void 0 : entity.location) === null || _b === void 0 ? void 0 : _b.longitude);
1260
+ entity = (_l.sent()).entity;
1263
1261
  return [3 /*break*/, 4];
1264
1262
  case 3:
1265
- e_1 = _o.sent();
1263
+ e_1 = _l.sent();
1266
1264
  console.error(e_1);
1267
1265
  return [3 /*break*/, 4];
1268
1266
  case 4:
1269
- if (!(entity && (isNaN(lat) || isNaN(lon) || (lat == 0 && lon == 0)))) return [3 /*break*/, 9];
1270
- _o.label = 5;
1271
- case 5:
1272
- _o.trys.push([5, 7, , 9]);
1273
- return [4 /*yield*/, Entity$1.Get({
1274
- api: api,
1275
- entityId: entityId,
1276
- expandLocation: true
1277
- })];
1278
- case 6:
1279
- entity = (_o.sent()).entity;
1280
- return [3 /*break*/, 9];
1281
- case 7:
1282
- e_2 = _o.sent();
1283
- console.warn(e_2);
1284
- return [4 /*yield*/, Entity$1.Get({
1285
- api: api,
1286
- entityId: entityId,
1287
- expandLocation: false
1288
- })];
1289
- case 8:
1290
- entity = (_o.sent()).entity;
1291
- return [3 /*break*/, 9];
1292
- case 9:
1293
1267
  if (!entity) {
1294
1268
  return [2 /*return*/, []];
1295
1269
  }
1296
- if (!tilesetId) {
1297
- tilesetId = ((_c = entity.tilesetID) === null || _c === void 0 ? void 0 : _c.length) ? entity.tilesetID[0] : tilesetId;
1298
- }
1299
1270
  evaluateRendered = function () { return __awaiter(_this, void 0, void 0, function () {
1300
- var rego, posses, visual, visualHeightRef, hierarchy, hPosses, hPossesSample, step, i, pPosses, pPossesSample, step, i, pPosses, pPossesSample, step, i, pos3d_1;
1271
+ var rego, posses, visual, visualHeightRef, hierarchy, hPosses, hPossesSample, step, i, pPosses, pPossesSample, step, i, pPosses, pPossesSample, step, i, pos3d_1, modelExt, sphere;
1301
1272
  return __generator(this, function (_a) {
1302
1273
  switch (_a.label) {
1303
1274
  case 0:
@@ -1318,7 +1289,7 @@ var EntityUtils;
1318
1289
  if (!(hierarchy === null || hierarchy === void 0 ? void 0 : hierarchy.positions)) return [3 /*break*/, 3];
1319
1290
  hPosses = hierarchy.positions.map(function (x) { return x.clone ? x.clone() : x; });
1320
1291
  hPossesSample = [];
1321
- step = Math.floor(hPosses.length / 5);
1292
+ step = Math.max(1, Math.floor(hPosses.length / 5));
1322
1293
  for (i = 0; i < hPosses.length; i += step) {
1323
1294
  hPossesSample.push(hPosses[i]);
1324
1295
  }
@@ -1337,7 +1308,7 @@ var EntityUtils;
1337
1308
  // Grab 5 positions from the polyline at varied indexes.
1338
1309
  pPosses = pPosses.map(function (x) { return x.clone ? x.clone() : x; });
1339
1310
  pPossesSample = [];
1340
- step = Math.floor(pPosses.length / 5);
1311
+ step = Math.max(1, Math.floor(pPosses.length / 5));
1341
1312
  for (i = 0; i < pPosses.length; i += step) {
1342
1313
  pPossesSample.push(pPosses[i]);
1343
1314
  }
@@ -1359,7 +1330,7 @@ var EntityUtils;
1359
1330
  // Grab 5 positions from the corridor at varied indexes.
1360
1331
  pPosses = pPosses.map(function (x) { return x.clone ? x.clone() : x; });
1361
1332
  pPossesSample = [];
1362
- step = Math.floor(pPosses.length / 5);
1333
+ step = Math.max(1, Math.floor(pPosses.length / 5));
1363
1334
  for (i = 0; i < pPosses.length; i += step) {
1364
1335
  pPossesSample.push(pPosses[i]);
1365
1336
  }
@@ -1390,6 +1361,14 @@ var EntityUtils;
1390
1361
  case 13:
1391
1362
  pos3d_1 = _a.sent();
1392
1363
  posses.push(pos3d_1);
1364
+ if (visual.model) {
1365
+ modelExt = visual.model;
1366
+ if (modelExt._radius) {
1367
+ sphere = BoundingSphere.fromPoints([pos3d_1]);
1368
+ sphere.radius = modelExt._radius;
1369
+ spheres.push(sphere);
1370
+ }
1371
+ }
1393
1372
  _a.label = 14;
1394
1373
  case 14: return [2 /*return*/, posses];
1395
1374
  }
@@ -1465,32 +1444,54 @@ var EntityUtils;
1465
1444
  });
1466
1445
  }); };
1467
1446
  return [4 /*yield*/, evaluateRendered()];
1468
- case 10:
1469
- renderedPosses = _o.sent();
1447
+ case 5:
1448
+ renderedPosses = _l.sent();
1470
1449
  if (renderedPosses === null || renderedPosses === void 0 ? void 0 : renderedPosses.length) {
1471
1450
  return [2 /*return*/, renderedPosses];
1472
1451
  }
1473
1452
  return [4 /*yield*/, evaluateRecord()];
1474
- case 11:
1475
- recordPosses = _o.sent();
1453
+ case 6:
1454
+ recordPosses = _l.sent();
1476
1455
  if (recordPosses === null || recordPosses === void 0 ? void 0 : recordPosses.length) {
1477
1456
  return [2 /*return*/, recordPosses];
1478
1457
  }
1479
- if (!!tileset) return [3 /*break*/, 13];
1480
- if (!(tilesetId && apiCalls < MAX_API_CALLS)) return [3 /*break*/, 13];
1458
+ if (!(apiCalls < MAX_API_CALLS)) return [3 /*break*/, 10];
1459
+ _l.label = 7;
1460
+ case 7:
1461
+ _l.trys.push([7, 9, , 10]);
1462
+ apiCalls += 1;
1463
+ return [4 /*yield*/, Entity$1.Get({
1464
+ api: api,
1465
+ entityId: entityId,
1466
+ // We'll be expanding relative positioning and related tilesets now.
1467
+ expandLocation: true
1468
+ })];
1469
+ case 8:
1470
+ entity = (_l.sent()).entity;
1471
+ return [3 /*break*/, 10];
1472
+ case 9:
1473
+ e_2 = _l.sent();
1474
+ console.warn(e_2);
1475
+ return [3 /*break*/, 10];
1476
+ case 10:
1477
+ if (!tilesetId) {
1478
+ tilesetId = ((_a = entity.tilesetID) === null || _a === void 0 ? void 0 : _a.length) ? entity.tilesetID[0] : tilesetId;
1479
+ }
1480
+ if (!!tileset) return [3 /*break*/, 12];
1481
+ if (!(tilesetId && apiCalls < MAX_API_CALLS)) return [3 /*break*/, 12];
1481
1482
  apiCalls += 1;
1482
1483
  return [4 /*yield*/, Tileset.Get({
1483
1484
  api: api,
1484
1485
  tilesetId: tilesetId
1485
1486
  })];
1487
+ case 11:
1488
+ tileset = (_l.sent()).tileset;
1489
+ _l.label = 12;
1486
1490
  case 12:
1487
- tileset = (_o.sent()).tileset;
1488
- _o.label = 13;
1489
- case 13:
1490
1491
  tSettings = tileset === null || tileset === void 0 ? void 0 : tileset.settings;
1491
1492
  pos3d = null;
1492
- if (!(((_d = entity.location) === null || _d === void 0 ? void 0 : _d.longitude) || ((_e = tSettings === null || tSettings === void 0 ? void 0 : tSettings.location) === null || _e === void 0 ? void 0 : _e.longitude))) return [3 /*break*/, 15];
1493
- if ((_f = entity === null || entity === void 0 ? void 0 : entity.location) === null || _f === void 0 ? void 0 : _f.longitude) {
1493
+ if (!(((_b = entity === null || entity === void 0 ? void 0 : entity.location) === null || _b === void 0 ? void 0 : _b.longitude) || ((_c = tSettings === null || tSettings === void 0 ? void 0 : tSettings.location) === null || _c === void 0 ? void 0 : _c.longitude))) return [3 /*break*/, 15];
1494
+ if ((_d = entity === null || entity === void 0 ? void 0 : entity.location) === null || _d === void 0 ? void 0 : _d.longitude) {
1494
1495
  alt = +entity.location.altitude;
1495
1496
  if (isNaN(alt)) {
1496
1497
  alt = 0;
@@ -1508,22 +1509,22 @@ var EntityUtils;
1508
1509
  heading = 0;
1509
1510
  pitch = 0;
1510
1511
  roll = 0;
1511
- if ((_g = entity === null || entity === void 0 ? void 0 : entity.transform) === null || _g === void 0 ? void 0 : _g.heading) {
1512
+ if ((_e = entity === null || entity === void 0 ? void 0 : entity.transform) === null || _e === void 0 ? void 0 : _e.heading) {
1512
1513
  heading = entity.transform.heading;
1513
1514
  }
1514
- else if ((_h = tSettings === null || tSettings === void 0 ? void 0 : tSettings.transform) === null || _h === void 0 ? void 0 : _h.heading) {
1515
+ else if ((_f = tSettings === null || tSettings === void 0 ? void 0 : tSettings.transform) === null || _f === void 0 ? void 0 : _f.heading) {
1515
1516
  heading = tSettings.transform.heading;
1516
1517
  }
1517
- if ((_j = entity === null || entity === void 0 ? void 0 : entity.transform) === null || _j === void 0 ? void 0 : _j.pitch) {
1518
+ if ((_g = entity === null || entity === void 0 ? void 0 : entity.transform) === null || _g === void 0 ? void 0 : _g.pitch) {
1518
1519
  pitch = entity.transform.pitch;
1519
1520
  }
1520
- else if ((_k = tSettings === null || tSettings === void 0 ? void 0 : tSettings.transform) === null || _k === void 0 ? void 0 : _k.pitch) {
1521
+ else if ((_h = tSettings === null || tSettings === void 0 ? void 0 : tSettings.transform) === null || _h === void 0 ? void 0 : _h.pitch) {
1521
1522
  pitch = tSettings.transform.pitch;
1522
1523
  }
1523
- if ((_l = entity === null || entity === void 0 ? void 0 : entity.transform) === null || _l === void 0 ? void 0 : _l.roll) {
1524
+ if ((_j = entity === null || entity === void 0 ? void 0 : entity.transform) === null || _j === void 0 ? void 0 : _j.roll) {
1524
1525
  roll = entity.transform.roll;
1525
1526
  }
1526
- else if ((_m = tSettings === null || tSettings === void 0 ? void 0 : tSettings.transform) === null || _m === void 0 ? void 0 : _m.roll) {
1527
+ else if ((_k = tSettings === null || tSettings === void 0 ? void 0 : tSettings.transform) === null || _k === void 0 ? void 0 : _k.roll) {
1527
1528
  roll = tSettings.transform.roll;
1528
1529
  }
1529
1530
  heading = +heading;
@@ -1549,11 +1550,18 @@ var EntityUtils;
1549
1550
  transform = Matrix3.fromHeadingPitchRoll(hpr);
1550
1551
  transformedOffset = Matrix3.multiplyByVector(transform, offset, new Cartesian3());
1551
1552
  pos3d = Matrix4.multiplyByPoint(m1, transformedOffset, new Cartesian3());
1552
- if (!(pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) return [3 /*break*/, 15];
1553
+ if (!(pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) return [3 /*break*/, 14];
1553
1554
  return [4 /*yield*/, processPosHeight(pos3d, HeightReference.NONE)];
1555
+ case 13:
1556
+ pos3d = _l.sent();
1557
+ _l.label = 14;
1554
1558
  case 14:
1555
- pos3d = _o.sent();
1556
- _o.label = 15;
1559
+ if ((entity === null || entity === void 0 ? void 0 : entity.geometryRadius) && (pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) {
1560
+ sphere = BoundingSphere.fromPoints([pos3d]);
1561
+ sphere.radius = entity.geometryRadius;
1562
+ spheres.push(sphere);
1563
+ }
1564
+ _l.label = 15;
1557
1565
  case 15:
1558
1566
  if (pos3d) {
1559
1567
  return [2 /*return*/, [pos3d]];
@@ -1629,6 +1637,16 @@ var EntityUtils;
1629
1637
  else if (allPosses.length == 1) {
1630
1638
  data.pos3d = allPosses[0];
1631
1639
  }
1640
+ if (spheres.length) {
1641
+ allPointSphere = BoundingSphere.fromPoints(allPosses);
1642
+ spheres.push(allPointSphere);
1643
+ if (data.rectangle) {
1644
+ rectSphere = BoundingSphere.fromRectangle3D(data.rectangle);
1645
+ spheres.push(rectSphere);
1646
+ }
1647
+ combinedSphere = BoundingSphere.fromBoundingSpheres(spheres);
1648
+ data.sphere = combinedSphere;
1649
+ }
1632
1650
  return [2 /*return*/, data];
1633
1651
  }
1634
1652
  });
@@ -3018,6 +3036,10 @@ var EntityRenderEngine;
3018
3036
  EntityRenderEngine.Remove = Remove;
3019
3037
  var Point;
3020
3038
  (function (Point) {
3039
+ function CreateCircleBillboard(params) {
3040
+ return createCircleBillboard(params.size, params.colorCss);
3041
+ }
3042
+ Point.CreateCircleBillboard = CreateCircleBillboard;
3021
3043
  function Render(params) {
3022
3044
  return __awaiter(this, void 0, void 0, function () {
3023
3045
  var entity, style, type, cEntity, siblings, iconUrlRows, icon, iconUrl_1, res, blob_1, e_4, e_5, iconScale, disableDepthTest, heightRef, radius, bFill, cFill, outline, cOutline, outlineWidth, bOutline, heightRef, pos3d, extrusion, outlineExtrusion, bColor, cColor, size, heightRef, circleBillboard;
@@ -18541,7 +18563,7 @@ var ViewerUtils;
18541
18563
  ViewerUtils.CreateWidgets = CreateWidgets;
18542
18564
  })(ViewerUtils || (ViewerUtils = {}));
18543
18565
 
18544
- var VERSION$1 = "3.0.9";
18566
+ var VERSION$1 = "3.1.1";
18545
18567
 
18546
18568
  export { VERSION$1 as VERSION, CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, MenuItemCreator, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, TilesetArbRenderManager, TilesetEntitiesRenderManager, TilesetOsmRenderManager, TilesetPointcloudRenderManager, TilesetGooglePhotosRenderManager, DataSourceStaticKmlManager, RelationsRenderManager, SharedGetters, CesiumParabola, EntityLabel, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, Draw3dPolygon, Draw3dPolyline };
18547
18569
  //# sourceMappingURL=bruce-cesium.es5.js.map