bruce-cesium 1.2.7 → 1.2.9

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
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, EntityRelationType, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, EntityRelation, 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, createOsmBuildings, Cesium3DTileStyle, Rectangle, KmlDataSource, CallbackProperty, Matrix4, Cesium3DTileset, IonResource, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, OrthographicFrustum, JulianDate, ColorMaterialProperty, Matrix3, EasingFunction, GeometryInstance, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline } from 'cesium';
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, EntityRelation, 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, createOsmBuildings, Cesium3DTileStyle, Rectangle, KmlDataSource, OrthographicFrustum, JulianDate, CallbackProperty, Matrix4, Cesium3DTileset, IonResource, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, ColorMaterialProperty, Matrix3, EasingFunction, GeometryInstance } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -1120,6 +1120,13 @@ function getZIndex(style, entity, tags) {
1120
1120
  }
1121
1121
  return EnsureNumber(zIndex);
1122
1122
  }
1123
+ function getValue(viewer, obj) {
1124
+ var _a;
1125
+ if ((_a = obj) === null || _a === void 0 ? void 0 : _a.getValue) {
1126
+ return obj.getValue(viewer.scene.lastRenderTime);
1127
+ }
1128
+ return obj;
1129
+ }
1123
1130
  function getStyle(api, entity, styleId) {
1124
1131
  return __awaiter(this, void 0, void 0, function () {
1125
1132
  var style, type;
@@ -1165,11 +1172,11 @@ function getRenderGroupId(zoomItem) {
1165
1172
  var EntityRenderEngine;
1166
1173
  (function (EntityRenderEngine) {
1167
1174
  function Render(params) {
1168
- var _a;
1175
+ var _a, _b, _c, _d;
1169
1176
  return __awaiter(this, void 0, void 0, function () {
1170
- var groupRenderParams, cEntities, models, polygons, polylines, points, i, entity, id, zoomItem, displayType, newRenderId, existingRego, oldRenderId, mParams, mEntities, i, entity, id, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
1171
- return __generator(this, function (_b) {
1172
- switch (_b.label) {
1177
+ var groupRenderParams, i, entity, geometry, cEntities, models, multiGeometry, polygons, polylines, points, i, entity, id, zoomItem, displayType, newRenderId, existingRego, oldRenderId, mParams, mEntities, i, entity, id, cEntity, _loop_1, i, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
1178
+ return __generator(this, function (_e) {
1179
+ switch (_e.label) {
1173
1180
  case 0:
1174
1181
  groupRenderParams = {
1175
1182
  apiGetter: params.apiGetter,
@@ -1179,8 +1186,17 @@ var EntityRenderEngine;
1179
1186
  menuItemId: params.menuItemId,
1180
1187
  visualRegister: params.visualRegister
1181
1188
  };
1189
+ // Flatten multi-geometry if it's only got 1 piece.
1190
+ for (i = 0; i < params.entities.length; i++) {
1191
+ entity = params.entities[i];
1192
+ geometry = entity.geometry;
1193
+ if (((_a = geometry === null || geometry === void 0 ? void 0 : geometry.MultiGeometry) === null || _a === void 0 ? void 0 : _a.length) == 1) {
1194
+ entity.geometry = __assign(__assign(__assign({}, entity.geometry), geometry.MultiGeometry[0]), { MultiGeometry: [] });
1195
+ }
1196
+ }
1182
1197
  cEntities = {};
1183
1198
  models = [];
1199
+ multiGeometry = [];
1184
1200
  polygons = [];
1185
1201
  polylines = [];
1186
1202
  points = [];
@@ -1207,7 +1223,7 @@ var EntityRenderEngine;
1207
1223
  entityId: id,
1208
1224
  menuItemId: params.menuItemId
1209
1225
  });
1210
- oldRenderId = (_a = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _a === void 0 ? void 0 : _a._renderGroup;
1226
+ oldRenderId = (_b = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _b === void 0 ? void 0 : _b._renderGroup;
1211
1227
  if (newRenderId == oldRenderId && !(existingRego === null || existingRego === void 0 ? void 0 : existingRego.stale)) {
1212
1228
  cEntities[id] = existingRego.visual;
1213
1229
  }
@@ -1216,7 +1232,12 @@ var EntityRenderEngine;
1216
1232
  models.push(entity);
1217
1233
  }
1218
1234
  else if (displayType == ZoomControl.EDisplayType.Geometry) {
1219
- polygons.push(entity);
1235
+ if ((_d = (_c = entity.geometry) === null || _c === void 0 ? void 0 : _c.MultiGeometry) === null || _d === void 0 ? void 0 : _d.length) {
1236
+ multiGeometry.push(entity);
1237
+ }
1238
+ else {
1239
+ polygons.push(entity);
1240
+ }
1220
1241
  }
1221
1242
  else {
1222
1243
  points.push(entity);
@@ -1229,7 +1250,7 @@ var EntityRenderEngine;
1229
1250
  mParams = __assign(__assign({}, groupRenderParams), { entities: models });
1230
1251
  return [4 /*yield*/, Model3d.RenderGroup(mParams)];
1231
1252
  case 1:
1232
- mEntities = _b.sent();
1253
+ mEntities = _e.sent();
1233
1254
  for (i = 0; i < mParams.entities.length; i++) {
1234
1255
  entity = mParams.entities[i];
1235
1256
  id = entity.Bruce.ID;
@@ -1238,16 +1259,84 @@ var EntityRenderEngine;
1238
1259
  cEntities[id] = cEntity;
1239
1260
  }
1240
1261
  else {
1241
- polygons.push(entity);
1262
+ multiGeometry.push(entity);
1242
1263
  }
1243
1264
  }
1244
- _b.label = 2;
1265
+ _e.label = 2;
1245
1266
  case 2:
1246
- if (!(polygons.length > 0)) return [3 /*break*/, 4];
1267
+ if (!(multiGeometry.length > 0)) return [3 /*break*/, 6];
1268
+ _loop_1 = function (i) {
1269
+ var entity, pParams, zoomItem, j, subEntity, cPoly, rendered, cLines, cPoints, rootEntity, firstEntity;
1270
+ return __generator(this, function (_a) {
1271
+ switch (_a.label) {
1272
+ case 0:
1273
+ entity = multiGeometry[i];
1274
+ pParams = __assign(__assign({}, groupRenderParams), { entities: [] });
1275
+ zoomItem = pParams.zoomItems[entity.Bruce.ID];
1276
+ for (j = 0; j < entity.geometry.MultiGeometry.length; j++) {
1277
+ subEntity = __assign(__assign({}, entity), { geometry: entity.geometry.MultiGeometry[j], Bruce: __assign(__assign({}, entity.Bruce), { ID: ObjectUtils.UId() }) });
1278
+ pParams.zoomItems[subEntity.Bruce.ID] = zoomItem;
1279
+ pParams.entities.push(subEntity);
1280
+ }
1281
+ return [4 /*yield*/, Polygon.RenderGroup(pParams)];
1282
+ case 1:
1283
+ cPoly = _a.sent();
1284
+ Object.keys(cPoly).forEach(function (key) {
1285
+ if (cPoly[key]) {
1286
+ pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
1287
+ }
1288
+ });
1289
+ rendered = Object.values(cPoly);
1290
+ return [4 /*yield*/, Polyline.RenderGroup(pParams)];
1291
+ case 2:
1292
+ cLines = _a.sent();
1293
+ Object.keys(cLines).forEach(function (key) {
1294
+ if (cLines[key]) {
1295
+ pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
1296
+ }
1297
+ });
1298
+ rendered = rendered.concat(Object.values(cLines));
1299
+ return [4 /*yield*/, Point.RenderGroup(pParams)];
1300
+ case 3:
1301
+ cPoints = _a.sent();
1302
+ rendered = rendered.concat(Object.values(cPoints));
1303
+ rendered = rendered.filter(function (x) { return x != null; });
1304
+ if (rendered.length) {
1305
+ rootEntity = new Entity({});
1306
+ params.viewer.entities.add(rootEntity);
1307
+ rootEntity._siblingGraphics = [];
1308
+ rootEntity._renderGroup = getRenderGroupId(zoomItem);
1309
+ rootEntity._siblingGraphics = rootEntity._siblingGraphics.concat(rendered);
1310
+ cEntities[entity.Bruce.ID] = rootEntity;
1311
+ firstEntity = rendered[0];
1312
+ if (firstEntity) {
1313
+ rootEntity.position = getValue(params.viewer, firstEntity.position.getValue);
1314
+ }
1315
+ }
1316
+ else {
1317
+ polygons.push(entity);
1318
+ }
1319
+ return [2 /*return*/];
1320
+ }
1321
+ });
1322
+ };
1323
+ i = 0;
1324
+ _e.label = 3;
1325
+ case 3:
1326
+ if (!(i < multiGeometry.length)) return [3 /*break*/, 6];
1327
+ return [5 /*yield**/, _loop_1(i)];
1328
+ case 4:
1329
+ _e.sent();
1330
+ _e.label = 5;
1331
+ case 5:
1332
+ i++;
1333
+ return [3 /*break*/, 3];
1334
+ case 6:
1335
+ if (!(polygons.length > 0)) return [3 /*break*/, 8];
1247
1336
  pParams = __assign(__assign({}, groupRenderParams), { entities: polygons });
1248
1337
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
1249
- case 3:
1250
- pEntities = _b.sent();
1338
+ case 7:
1339
+ pEntities = _e.sent();
1251
1340
  for (i = 0; i < pParams.entities.length; i++) {
1252
1341
  entity = pParams.entities[i];
1253
1342
  cEntity = pEntities[entity.Bruce.ID];
@@ -1258,13 +1347,13 @@ var EntityRenderEngine;
1258
1347
  polylines.push(entity);
1259
1348
  }
1260
1349
  }
1261
- _b.label = 4;
1262
- case 4:
1263
- if (!(polylines.length > 0)) return [3 /*break*/, 6];
1350
+ _e.label = 8;
1351
+ case 8:
1352
+ if (!(polylines.length > 0)) return [3 /*break*/, 10];
1264
1353
  pParams = __assign(__assign({}, groupRenderParams), { entities: polylines });
1265
1354
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
1266
- case 5:
1267
- pEntities = _b.sent();
1355
+ case 9:
1356
+ pEntities = _e.sent();
1268
1357
  for (i = 0; i < pParams.entities.length; i++) {
1269
1358
  entity = pParams.entities[i];
1270
1359
  cEntity = pEntities[entity.Bruce.ID];
@@ -1275,13 +1364,13 @@ var EntityRenderEngine;
1275
1364
  points.push(entity);
1276
1365
  }
1277
1366
  }
1278
- _b.label = 6;
1279
- case 6:
1280
- if (!(points.length > 0)) return [3 /*break*/, 8];
1367
+ _e.label = 10;
1368
+ case 10:
1369
+ if (!(points.length > 0)) return [3 /*break*/, 12];
1281
1370
  pParams = __assign(__assign({}, groupRenderParams), { entities: points });
1282
1371
  return [4 /*yield*/, Point.RenderGroup(pParams)];
1283
- case 7:
1284
- pEntities = _b.sent();
1372
+ case 11:
1373
+ pEntities = _e.sent();
1285
1374
  for (i = 0; i < pParams.entities.length; i++) {
1286
1375
  entity = pParams.entities[i];
1287
1376
  cEntity = pEntities[entity.Bruce.ID];
@@ -1289,8 +1378,8 @@ var EntityRenderEngine;
1289
1378
  cEntities[entity.Bruce.ID] = cEntity;
1290
1379
  }
1291
1380
  }
1292
- _b.label = 8;
1293
- case 8: return [2 /*return*/, cEntities];
1381
+ _e.label = 12;
1382
+ case 12: return [2 /*return*/, cEntities];
1294
1383
  }
1295
1384
  });
1296
1385
  });
@@ -1785,7 +1874,7 @@ var EntityRenderEngine;
1785
1874
  function RenderGroup(params) {
1786
1875
  var _a, _b, _c, _d;
1787
1876
  return __awaiter(this, void 0, void 0, function () {
1788
- var api, cEntities, reqBody, i, entity, zoomItem, style, tagIds, tags, mStyle, group, level, catId, lodData, _loop_1, i;
1877
+ var api, cEntities, reqBody, i, entity, zoomItem, style, tagIds, tags, mStyle, group, level, catId, lodData, _loop_2, i;
1789
1878
  return __generator(this, function (_e) {
1790
1879
  switch (_e.label) {
1791
1880
  case 0:
@@ -1845,7 +1934,7 @@ var EntityRenderEngine;
1845
1934
  })];
1846
1935
  case 7:
1847
1936
  lodData = (_e.sent()).lods;
1848
- _loop_1 = function (i) {
1937
+ _loop_2 = function (i) {
1849
1938
  var entity, zoomItem, style, tagIds, tags, lod, mStyle, cEntity;
1850
1939
  return __generator(this, function (_a) {
1851
1940
  switch (_a.label) {
@@ -1894,7 +1983,7 @@ var EntityRenderEngine;
1894
1983
  _e.label = 8;
1895
1984
  case 8:
1896
1985
  if (!(i < params.entities.length)) return [3 /*break*/, 11];
1897
- return [5 /*yield**/, _loop_1(i)];
1986
+ return [5 /*yield**/, _loop_2(i)];
1898
1987
  case 9:
1899
1988
  _e.sent();
1900
1989
  _e.label = 10;