bruce-cesium 7.0.0 → 7.0.2

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 (21) hide show
  1. package/dist/bruce-cesium.es5.js +108 -49
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +106 -47
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/rendering/entity-render-engine-polygon.js +39 -28
  7. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -1
  8. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +13 -1
  9. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -1
  10. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +20 -8
  11. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  12. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +20 -8
  13. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  14. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +13 -1
  15. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  16. package/dist/types/bruce-cesium.d.ts +1 -1
  17. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +2 -0
  18. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +2 -0
  19. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +2 -0
  20. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +2 -0
  21. package/package.json +2 -2
@@ -9661,6 +9661,14 @@
9661
9661
  // Type IDs that we'll allow to be rendered when receiving Entities.
9662
9662
  // This might be exactly the Menu Item Type ID because of local data sources.
9663
9663
  this.allowedTypeIDs = [];
9664
+ /**
9665
+ * Our default path.
9666
+ * We render each entity individually.
9667
+ * @param entities
9668
+ * @param force
9669
+ * @returns
9670
+ */
9671
+ this.renderAsIndividualsChain = Promise.resolve();
9664
9672
  const { viewer, apiGetter, monitor, item, register: visualsManager, sharedGetters, onSeriesDiscovered } = params;
9665
9673
  this.viewer = viewer;
9666
9674
  this.sharedGetters = sharedGetters;
@@ -10593,14 +10601,18 @@
10593
10601
  }
10594
10602
  this.viewer.scene.requestRender();
10595
10603
  }
10596
- /**
10597
- * Our default path.
10598
- * We render each entity individually.
10599
- * @param entities
10600
- * @param force
10601
- * @returns
10602
- */
10603
- async renderAsIndividuals(entities, force = false) {
10604
+ renderAsIndividuals(entities, force = false) {
10605
+ // Waiting for prior call to finish resolving.
10606
+ // This avoids race conditions against two sets of overlapping Entities.
10607
+ const next = this.renderAsIndividualsChain
10608
+ .then(() => this.doRenderAsIndividuals(entities, force))
10609
+ .catch((e) => {
10610
+ console.error("EntitiesRenderManager.renderAsIndividuals failed:", e);
10611
+ });
10612
+ this.renderAsIndividualsChain = next;
10613
+ return next;
10614
+ }
10615
+ async doRenderAsIndividuals(entities, force = false) {
10604
10616
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
10605
10617
  // When live we just want to show the latest pos.
10606
10618
  // When not live, the user might scroll the timeline and want to see it a fluid animation between points in time.
@@ -10954,6 +10966,14 @@
10954
10966
  // Many things are not supported when this is enabled.
10955
10967
  this.useGeojson = false;
10956
10968
  this.reRenderState = new EntityReRenderMaintainState();
10969
+ /**
10970
+ * Our default path.
10971
+ * We render each entity individually.
10972
+ * @param entities
10973
+ * @param force
10974
+ * @returns
10975
+ */
10976
+ this.renderAsIndividualsChain = Promise.resolve();
10957
10977
  const { viewer, apiGetter, monitor, item, register: visualsManager } = params;
10958
10978
  this.viewer = viewer;
10959
10979
  this.apiGetter = apiGetter;
@@ -11577,14 +11597,18 @@
11577
11597
  }
11578
11598
  this.viewer.scene.requestRender();
11579
11599
  }
11580
- /**
11581
- * Our default path.
11582
- * We render each entity individually.
11583
- * @param entities
11584
- * @param force
11585
- * @returns
11586
- */
11587
- async renderAsIndividuals(entities, force = false) {
11600
+ renderAsIndividuals(entities, force = false) {
11601
+ // Waiting for prior call to finish resolving.
11602
+ // This avoids race conditions against two sets of overlapping Entities.
11603
+ const next = this.renderAsIndividualsChain
11604
+ .then(() => this.doRenderAsIndividuals(entities, force))
11605
+ .catch((e) => {
11606
+ console.error("EntitiesLoadedRenderManager.renderAsIndividuals failed:", e);
11607
+ });
11608
+ this.renderAsIndividualsChain = next;
11609
+ return next;
11610
+ }
11611
+ async doRenderAsIndividuals(entities, force = false) {
11588
11612
  const { updated, entities: cEntities } = await exports.EntityRenderEngine.Render({
11589
11613
  viewer: this.viewer,
11590
11614
  apiGetter: this.apiGetter,
@@ -12220,6 +12244,7 @@
12220
12244
  this.getterSub = null;
12221
12245
  this.disposed = false;
12222
12246
  this.reRenderState = new EntityReRenderMaintainState();
12247
+ this.renderEntityChain = Promise.resolve();
12223
12248
  const { viewer, apiGetter, monitor, item, register: visualsManager } = params;
12224
12249
  this.viewer = viewer;
12225
12250
  this.apiGetter = apiGetter;
@@ -12342,7 +12367,18 @@
12342
12367
  this.onGetterUpdate(entityId, true);
12343
12368
  }
12344
12369
  }
12345
- async renderEntity(entity, force = false) {
12370
+ renderEntity(entity, force = false) {
12371
+ // Waiting for prior call to finish resolving.
12372
+ // This avoids race conditions against two sets of overlapping Entities.
12373
+ const next = this.renderEntityChain
12374
+ .then(() => this.doRenderEntity(entity, force))
12375
+ .catch((e) => {
12376
+ console.error("EntityRenderManager.renderEntity failed:", e);
12377
+ });
12378
+ this.renderEntityChain = next;
12379
+ return next;
12380
+ }
12381
+ async doRenderEntity(entity, force = false) {
12346
12382
  try {
12347
12383
  if (this.disposed || this.viewer.isDestroyed()) {
12348
12384
  return;
@@ -16778,6 +16814,7 @@
16778
16814
  this.reRenderState = new EntityReRenderMaintainState();
16779
16815
  this.zoomControl = [];
16780
16816
  this.queryLoadId = 0;
16817
+ this.renderDataLabEntitiesChain = Promise.resolve();
16781
16818
  const { viewer, item, apiGetter, monitor, visualsRegister } = params;
16782
16819
  this.viewer = viewer;
16783
16820
  this.item = item;
@@ -17116,7 +17153,18 @@
17116
17153
  }
17117
17154
  return Array.from(entityMap.values());
17118
17155
  }
17119
- async renderDataLabEntities(entities, force = false) {
17156
+ renderDataLabEntities(entities, force = false) {
17157
+ // Waiting for prior call to finish resolving.
17158
+ // This avoids race conditions against two sets of overlapping Entities.
17159
+ const next = this.renderDataLabEntitiesChain
17160
+ .then(() => this.doRenderDataLabEntities(entities, force))
17161
+ .catch((e) => {
17162
+ console.error("EntitiesDatalabRenderManager.renderDataLabEntities failed:", e);
17163
+ });
17164
+ this.renderDataLabEntitiesChain = next;
17165
+ return next;
17166
+ }
17167
+ async doRenderDataLabEntities(entities, force = false) {
17120
17168
  var _a, _b, _c;
17121
17169
  if (this.disposed || this.viewer.isDestroyed() || !(entities === null || entities === void 0 ? void 0 : entities.length)) {
17122
17170
  return;
@@ -36974,8 +37022,9 @@
36974
37022
  const TEXTURE_FRAME_SERIES_ANIMATOR_KEY = "TextureFrameSeriesAnimator.Animator";
36975
37023
  (function (EntityRenderEnginePolygon) {
36976
37024
  async function Render(params) {
36977
- var _a, _b;
37025
+ var _a, _b, _c;
36978
37026
  const entity = params.entity;
37027
+ const style = params.style;
36979
37028
  const pRings = BModels.Entity.GetValue({
36980
37029
  entity: entity,
36981
37030
  path: ["Bruce", "VectorGeometry", "Polygon"]
@@ -36983,7 +37032,6 @@
36983
37032
  if (pRings == null || !Array.isArray(pRings) || pRings.length <= 0) {
36984
37033
  return null;
36985
37034
  }
36986
- const style = params.style;
36987
37035
  const fillType = style.fillType || BModels.Style.EPolygonFillType.Color;
36988
37036
  const fillColorTrace = style.fillColor ? BModels.Calculator.TraceGetColor(style.fillColor, entity, params.tags) : { value: null, effective: null };
36989
37037
  const bFillColor = fillColorTrace.value;
@@ -36992,15 +37040,20 @@
36992
37040
  let textureTraceEffective = null;
36993
37041
  let frameArchive = null;
36994
37042
  if (fillType === BModels.Style.EPolygonFillType.Texture) {
36995
- const resolved = await resolveTexturedFill({
36996
- api: params.api,
36997
- style,
36998
- entity,
36999
- tags: params.tags
37000
- });
37001
- textureDataUri = resolved.dataUri;
37002
- textureTraceEffective = resolved.effective;
37003
- frameArchive = resolved.frameArchive || null;
37043
+ try {
37044
+ const resolved = await resolveTexturedFill({
37045
+ api: params.api,
37046
+ style,
37047
+ entity,
37048
+ tags: params.tags
37049
+ });
37050
+ textureDataUri = resolved.dataUri;
37051
+ textureTraceEffective = resolved.effective;
37052
+ frameArchive = resolved.frameArchive || null;
37053
+ }
37054
+ catch (e) {
37055
+ console.error(`Polygon.Render: failed to resolve textured fill for entity ${((_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID) || "<NONE>"}:`, e);
37056
+ }
37004
37057
  }
37005
37058
  const hasFill = fillType === BModels.Style.EPolygonFillType.Texture
37006
37059
  ? Boolean(textureDataUri || frameArchive || cFillColor.alpha > 0)
@@ -37198,7 +37251,7 @@
37198
37251
  }
37199
37252
  }
37200
37253
  let borderPosses = posses.map(x => x.clone ? x.clone() : { ...x });
37201
- let cEntityBorder = (_b = (_a = params.rendered) === null || _a === void 0 ? void 0 : _a._siblingGraphics) === null || _b === void 0 ? void 0 : _b[0];
37254
+ let cEntityBorder = (_c = (_b = params.rendered) === null || _b === void 0 ? void 0 : _b._siblingGraphics) === null || _c === void 0 ? void 0 : _c[0];
37202
37255
  cEntity._siblingGraphics = [];
37203
37256
  if (!cEntityBorder || ((!cEntityBorder.polyline && units == "px") ||
37204
37257
  (!cEntityBorder.corridor && units == "m"))) {
@@ -37339,7 +37392,7 @@
37339
37392
  }
37340
37393
  EntityRenderEnginePolygon.Render = Render;
37341
37394
  async function RenderGroup(params) {
37342
- var _a, _b, _c;
37395
+ var _a, _b, _c, _d;
37343
37396
  const api = params.apiGetter.getApi();
37344
37397
  const cEntities = new Map();
37345
37398
  // Gathering tags in case styling needs it.
@@ -37383,21 +37436,27 @@
37383
37436
  }
37384
37437
  }
37385
37438
  const pStyle = (_b = style === null || style === void 0 ? void 0 : style.polygonStyle) !== null && _b !== void 0 ? _b : {};
37386
- const cEntity = await Render({
37387
- entity: entity,
37388
- style: pStyle,
37389
- tags: tags,
37390
- viewer: params.viewer,
37391
- api,
37392
- maxDistance: zoomItem.MaxZoom,
37393
- minDistance: zoomItem.MinZoom,
37394
- // Temporarily disabling re-using graphics for polygons as they have some bugs, and
37395
- // they don't support any animation yet.
37396
- // rendered: null
37397
- rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID),
37398
- menuItemId: params.menuItemId,
37399
- onSeriesDiscovered: params.onSeriesDiscovered
37400
- });
37439
+ let cEntity = null;
37440
+ try {
37441
+ cEntity = await Render({
37442
+ entity: entity,
37443
+ style: pStyle,
37444
+ tags: tags,
37445
+ viewer: params.viewer,
37446
+ api,
37447
+ maxDistance: zoomItem.MaxZoom,
37448
+ minDistance: zoomItem.MinZoom,
37449
+ // Temporarily disabling re-using graphics for polygons as they have some bugs, and
37450
+ // they don't support any animation yet.
37451
+ // rendered: null
37452
+ rendered: (_c = params.rendered) === null || _c === void 0 ? void 0 : _c.get(entity.Bruce.ID),
37453
+ menuItemId: params.menuItemId,
37454
+ onSeriesDiscovered: params.onSeriesDiscovered
37455
+ });
37456
+ }
37457
+ catch (e) {
37458
+ console.error(`Polygon.RenderGroup: failed to render entity ${((_d = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _d === void 0 ? void 0 : _d.ID) || "<NONE>"}:`, e);
37459
+ }
37401
37460
  if (cEntity) {
37402
37461
  const name = await getName$3(api, entity);
37403
37462
  cEntity.name = name;
@@ -39003,7 +39062,7 @@
39003
39062
  StyleUtils.ApplyTypeStyle = ApplyTypeStyle;
39004
39063
  })(exports.StyleUtils || (exports.StyleUtils = {}));
39005
39064
 
39006
- const VERSION = "7.0.0";
39065
+ const VERSION = "7.0.2";
39007
39066
  /**
39008
39067
  * Updates the environment instance used by bruce-cesium to one specified.
39009
39068
  * This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.