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.
@@ -1118,6 +1118,13 @@
1118
1118
  }
1119
1119
  return EnsureNumber(zIndex);
1120
1120
  }
1121
+ function getValue(viewer, obj) {
1122
+ var _a;
1123
+ if ((_a = obj) === null || _a === void 0 ? void 0 : _a.getValue) {
1124
+ return obj.getValue(viewer.scene.lastRenderTime);
1125
+ }
1126
+ return obj;
1127
+ }
1121
1128
  function getStyle(api, entity, styleId) {
1122
1129
  return __awaiter(this, void 0, void 0, function () {
1123
1130
  var style, type;
@@ -1162,11 +1169,11 @@
1162
1169
  }
1163
1170
  (function (EntityRenderEngine) {
1164
1171
  function Render(params) {
1165
- var _a;
1172
+ var _a, _b, _c, _d;
1166
1173
  return __awaiter(this, void 0, void 0, function () {
1167
- 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;
1168
- return __generator(this, function (_b) {
1169
- switch (_b.label) {
1174
+ 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;
1175
+ return __generator(this, function (_e) {
1176
+ switch (_e.label) {
1170
1177
  case 0:
1171
1178
  groupRenderParams = {
1172
1179
  apiGetter: params.apiGetter,
@@ -1176,8 +1183,17 @@
1176
1183
  menuItemId: params.menuItemId,
1177
1184
  visualRegister: params.visualRegister
1178
1185
  };
1186
+ // Flatten multi-geometry if it's only got 1 piece.
1187
+ for (i = 0; i < params.entities.length; i++) {
1188
+ entity = params.entities[i];
1189
+ geometry = entity.geometry;
1190
+ if (((_a = geometry === null || geometry === void 0 ? void 0 : geometry.MultiGeometry) === null || _a === void 0 ? void 0 : _a.length) == 1) {
1191
+ entity.geometry = __assign(__assign(__assign({}, entity.geometry), geometry.MultiGeometry[0]), { MultiGeometry: [] });
1192
+ }
1193
+ }
1179
1194
  cEntities = {};
1180
1195
  models = [];
1196
+ multiGeometry = [];
1181
1197
  polygons = [];
1182
1198
  polylines = [];
1183
1199
  points = [];
@@ -1204,7 +1220,7 @@
1204
1220
  entityId: id,
1205
1221
  menuItemId: params.menuItemId
1206
1222
  });
1207
- oldRenderId = (_a = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _a === void 0 ? void 0 : _a._renderGroup;
1223
+ oldRenderId = (_b = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _b === void 0 ? void 0 : _b._renderGroup;
1208
1224
  if (newRenderId == oldRenderId && !(existingRego === null || existingRego === void 0 ? void 0 : existingRego.stale)) {
1209
1225
  cEntities[id] = existingRego.visual;
1210
1226
  }
@@ -1213,7 +1229,12 @@
1213
1229
  models.push(entity);
1214
1230
  }
1215
1231
  else if (displayType == bruceModels.ZoomControl.EDisplayType.Geometry) {
1216
- polygons.push(entity);
1232
+ if ((_d = (_c = entity.geometry) === null || _c === void 0 ? void 0 : _c.MultiGeometry) === null || _d === void 0 ? void 0 : _d.length) {
1233
+ multiGeometry.push(entity);
1234
+ }
1235
+ else {
1236
+ polygons.push(entity);
1237
+ }
1217
1238
  }
1218
1239
  else {
1219
1240
  points.push(entity);
@@ -1226,7 +1247,7 @@
1226
1247
  mParams = __assign(__assign({}, groupRenderParams), { entities: models });
1227
1248
  return [4 /*yield*/, Model3d.RenderGroup(mParams)];
1228
1249
  case 1:
1229
- mEntities = _b.sent();
1250
+ mEntities = _e.sent();
1230
1251
  for (i = 0; i < mParams.entities.length; i++) {
1231
1252
  entity = mParams.entities[i];
1232
1253
  id = entity.Bruce.ID;
@@ -1235,16 +1256,84 @@
1235
1256
  cEntities[id] = cEntity;
1236
1257
  }
1237
1258
  else {
1238
- polygons.push(entity);
1259
+ multiGeometry.push(entity);
1239
1260
  }
1240
1261
  }
1241
- _b.label = 2;
1262
+ _e.label = 2;
1242
1263
  case 2:
1243
- if (!(polygons.length > 0)) return [3 /*break*/, 4];
1264
+ if (!(multiGeometry.length > 0)) return [3 /*break*/, 6];
1265
+ _loop_1 = function (i) {
1266
+ var entity, pParams, zoomItem, j, subEntity, cPoly, rendered, cLines, cPoints, rootEntity, firstEntity;
1267
+ return __generator(this, function (_a) {
1268
+ switch (_a.label) {
1269
+ case 0:
1270
+ entity = multiGeometry[i];
1271
+ pParams = __assign(__assign({}, groupRenderParams), { entities: [] });
1272
+ zoomItem = pParams.zoomItems[entity.Bruce.ID];
1273
+ for (j = 0; j < entity.geometry.MultiGeometry.length; j++) {
1274
+ subEntity = __assign(__assign({}, entity), { geometry: entity.geometry.MultiGeometry[j], Bruce: __assign(__assign({}, entity.Bruce), { ID: bruceModels.ObjectUtils.UId() }) });
1275
+ pParams.zoomItems[subEntity.Bruce.ID] = zoomItem;
1276
+ pParams.entities.push(subEntity);
1277
+ }
1278
+ return [4 /*yield*/, Polygon.RenderGroup(pParams)];
1279
+ case 1:
1280
+ cPoly = _a.sent();
1281
+ Object.keys(cPoly).forEach(function (key) {
1282
+ if (cPoly[key]) {
1283
+ pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
1284
+ }
1285
+ });
1286
+ rendered = Object.values(cPoly);
1287
+ return [4 /*yield*/, Polyline.RenderGroup(pParams)];
1288
+ case 2:
1289
+ cLines = _a.sent();
1290
+ Object.keys(cLines).forEach(function (key) {
1291
+ if (cLines[key]) {
1292
+ pParams.entities = pParams.entities.filter(function (e) { return e.Bruce.ID != key; });
1293
+ }
1294
+ });
1295
+ rendered = rendered.concat(Object.values(cLines));
1296
+ return [4 /*yield*/, Point.RenderGroup(pParams)];
1297
+ case 3:
1298
+ cPoints = _a.sent();
1299
+ rendered = rendered.concat(Object.values(cPoints));
1300
+ rendered = rendered.filter(function (x) { return x != null; });
1301
+ if (rendered.length) {
1302
+ rootEntity = new Cesium.Entity({});
1303
+ params.viewer.entities.add(rootEntity);
1304
+ rootEntity._siblingGraphics = [];
1305
+ rootEntity._renderGroup = getRenderGroupId(zoomItem);
1306
+ rootEntity._siblingGraphics = rootEntity._siblingGraphics.concat(rendered);
1307
+ cEntities[entity.Bruce.ID] = rootEntity;
1308
+ firstEntity = rendered[0];
1309
+ if (firstEntity) {
1310
+ rootEntity.position = getValue(params.viewer, firstEntity.position.getValue);
1311
+ }
1312
+ }
1313
+ else {
1314
+ polygons.push(entity);
1315
+ }
1316
+ return [2 /*return*/];
1317
+ }
1318
+ });
1319
+ };
1320
+ i = 0;
1321
+ _e.label = 3;
1322
+ case 3:
1323
+ if (!(i < multiGeometry.length)) return [3 /*break*/, 6];
1324
+ return [5 /*yield**/, _loop_1(i)];
1325
+ case 4:
1326
+ _e.sent();
1327
+ _e.label = 5;
1328
+ case 5:
1329
+ i++;
1330
+ return [3 /*break*/, 3];
1331
+ case 6:
1332
+ if (!(polygons.length > 0)) return [3 /*break*/, 8];
1244
1333
  pParams = __assign(__assign({}, groupRenderParams), { entities: polygons });
1245
1334
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
1246
- case 3:
1247
- pEntities = _b.sent();
1335
+ case 7:
1336
+ pEntities = _e.sent();
1248
1337
  for (i = 0; i < pParams.entities.length; i++) {
1249
1338
  entity = pParams.entities[i];
1250
1339
  cEntity = pEntities[entity.Bruce.ID];
@@ -1255,13 +1344,13 @@
1255
1344
  polylines.push(entity);
1256
1345
  }
1257
1346
  }
1258
- _b.label = 4;
1259
- case 4:
1260
- if (!(polylines.length > 0)) return [3 /*break*/, 6];
1347
+ _e.label = 8;
1348
+ case 8:
1349
+ if (!(polylines.length > 0)) return [3 /*break*/, 10];
1261
1350
  pParams = __assign(__assign({}, groupRenderParams), { entities: polylines });
1262
1351
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
1263
- case 5:
1264
- pEntities = _b.sent();
1352
+ case 9:
1353
+ pEntities = _e.sent();
1265
1354
  for (i = 0; i < pParams.entities.length; i++) {
1266
1355
  entity = pParams.entities[i];
1267
1356
  cEntity = pEntities[entity.Bruce.ID];
@@ -1272,13 +1361,13 @@
1272
1361
  points.push(entity);
1273
1362
  }
1274
1363
  }
1275
- _b.label = 6;
1276
- case 6:
1277
- if (!(points.length > 0)) return [3 /*break*/, 8];
1364
+ _e.label = 10;
1365
+ case 10:
1366
+ if (!(points.length > 0)) return [3 /*break*/, 12];
1278
1367
  pParams = __assign(__assign({}, groupRenderParams), { entities: points });
1279
1368
  return [4 /*yield*/, Point.RenderGroup(pParams)];
1280
- case 7:
1281
- pEntities = _b.sent();
1369
+ case 11:
1370
+ pEntities = _e.sent();
1282
1371
  for (i = 0; i < pParams.entities.length; i++) {
1283
1372
  entity = pParams.entities[i];
1284
1373
  cEntity = pEntities[entity.Bruce.ID];
@@ -1286,8 +1375,8 @@
1286
1375
  cEntities[entity.Bruce.ID] = cEntity;
1287
1376
  }
1288
1377
  }
1289
- _b.label = 8;
1290
- case 8: return [2 /*return*/, cEntities];
1378
+ _e.label = 12;
1379
+ case 12: return [2 /*return*/, cEntities];
1291
1380
  }
1292
1381
  });
1293
1382
  });
@@ -1782,7 +1871,7 @@
1782
1871
  function RenderGroup(params) {
1783
1872
  var _a, _b, _c, _d;
1784
1873
  return __awaiter(this, void 0, void 0, function () {
1785
- var api, cEntities, reqBody, i, entity, zoomItem, style, tagIds, tags, mStyle, group, level, catId, lodData, _loop_1, i;
1874
+ var api, cEntities, reqBody, i, entity, zoomItem, style, tagIds, tags, mStyle, group, level, catId, lodData, _loop_2, i;
1786
1875
  return __generator(this, function (_e) {
1787
1876
  switch (_e.label) {
1788
1877
  case 0:
@@ -1842,7 +1931,7 @@
1842
1931
  })];
1843
1932
  case 7:
1844
1933
  lodData = (_e.sent()).lods;
1845
- _loop_1 = function (i) {
1934
+ _loop_2 = function (i) {
1846
1935
  var entity, zoomItem, style, tagIds, tags, lod, mStyle, cEntity;
1847
1936
  return __generator(this, function (_a) {
1848
1937
  switch (_a.label) {
@@ -1891,7 +1980,7 @@
1891
1980
  _e.label = 8;
1892
1981
  case 8:
1893
1982
  if (!(i < params.entities.length)) return [3 /*break*/, 11];
1894
- return [5 /*yield**/, _loop_1(i)];
1983
+ return [5 /*yield**/, _loop_2(i)];
1895
1984
  case 9:
1896
1985
  _e.sent();
1897
1986
  _e.label = 10;