bruce-cesium 2.8.0 → 2.8.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, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, DelayQueue, BatchedDataGetter, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera, AbstractApi, EntityAttachment, EntityAttachmentType, EntityAttribute } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, JulianDate, Color, HeightReference, Cartesian3, DistanceDisplayCondition, NearFarScalar, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Math as Math$1, Transforms, ColorBlendMode, Cartesian2, CallbackProperty, Rectangle, Primitive, Cesium3DTileFeature, SceneMode, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, OrthographicFrustum, EasingFunction, Cesium3DTileset, Matrix4, Matrix3, IonResource, Ion, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, PolygonPipeline, CesiumInspector, defined, ColorMaterialProperty, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, EllipsoidGeodesic, sampleTerrainMostDetailed, Model, BoundingSphere } from 'cesium';
3
+ import { Cartographic, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, JulianDate, SceneMode, HeightReference, DistanceDisplayCondition, NearFarScalar, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Cesium3DTileColorBlendMode, HeadingPitchRange, Cesium3DTileStyle, KmlDataSource, createOsmBuildings, Cesium3DTileset, Matrix4, Matrix3, IonResource, Ion, OrthographicFrustum, EasingFunction, EllipsoidTerrainProvider, CesiumInspector, defined, ColorMaterialProperty, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, Model, PolygonPipeline, BoundingSphere } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -4249,20 +4249,33 @@ var VisualsRegister;
4249
4249
  /**
4250
4250
  * Locates a visual corresponding to a given entity id.
4251
4251
  * If no menu item id is provided, then it will pick the "best" one.
4252
- * @param entityId
4253
- * @param menuItemId
4252
+ * @param params
4254
4253
  * @returns
4255
4254
  */
4256
4255
  Register.prototype.GetRego = function (params) {
4257
- var entityId = params.entityId, menuItemId = params.menuItemId;
4258
- var entityRegos = this.rego[entityId];
4259
- if (!entityRegos) {
4260
- return [];
4256
+ var entityId = params.entityId, menuItemId = params.menuItemId, relation = params.relation;
4257
+ if (relation) {
4258
+ var relationKey_1 = RelationRenderEngine.GetRenderGroupId(relation);
4259
+ for (var entityId_1 in this.rego) {
4260
+ var entityRegos = this.rego[entityId_1];
4261
+ if (entityRegos) {
4262
+ var rego = entityRegos.find(function (r) { return r.relation && RelationRenderEngine.GetRenderGroupId(r.relation) == relationKey_1; });
4263
+ if (rego) {
4264
+ return rego;
4265
+ }
4266
+ }
4267
+ }
4261
4268
  }
4262
- if (menuItemId) {
4263
- return entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
4269
+ else {
4270
+ var entityRegos = this.rego[entityId];
4271
+ if (!entityRegos) {
4272
+ return [];
4273
+ }
4274
+ if (menuItemId) {
4275
+ return entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
4276
+ }
4277
+ return entityRegos.find(function (x) { return x.best; });
4264
4278
  }
4265
- return entityRegos.find(function (x) { return x.best; });
4266
4279
  };
4267
4280
  /**
4268
4281
  * Returns regos matching given criteria.
@@ -4275,8 +4288,8 @@ var VisualsRegister;
4275
4288
  // Currently this was made by merging two functions.
4276
4289
  var entityId = params.entityId, menuItemId = params.menuItemId;
4277
4290
  if (entityId) {
4278
- var entityId_1 = params.entityId;
4279
- var entityRegos = this.rego[entityId_1];
4291
+ var entityId_2 = params.entityId;
4292
+ var entityRegos = this.rego[entityId_2];
4280
4293
  if (!entityRegos) {
4281
4294
  return [];
4282
4295
  }
@@ -4285,8 +4298,8 @@ var VisualsRegister;
4285
4298
  else if (menuItemId) {
4286
4299
  var menuItemId_1 = params.menuItemId;
4287
4300
  var visuals = [];
4288
- for (var entityId_2 in this.rego) {
4289
- var entityRegos = this.rego[entityId_2];
4301
+ for (var entityId_3 in this.rego) {
4302
+ var entityRegos = this.rego[entityId_3];
4290
4303
  if (entityRegos) {
4291
4304
  var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId_1; });
4292
4305
  if (rego) {
@@ -4315,8 +4328,8 @@ var VisualsRegister;
4315
4328
  // TODO: refactor.
4316
4329
  // Currently this was made by merging two functions.
4317
4330
  if (menuItemId && !entityId) {
4318
- for (var entityId_3 in this.rego) {
4319
- var entityRegos = this.rego[entityId_3];
4331
+ for (var entityId_4 in this.rego) {
4332
+ var entityRegos = this.rego[entityId_4];
4320
4333
  if (entityRegos) {
4321
4334
  var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
4322
4335
  if (!rego) {
@@ -4328,9 +4341,9 @@ var VisualsRegister;
4328
4341
  continue;
4329
4342
  }
4330
4343
  removeEntity(this.viewer, rego.visual);
4331
- var doesInclude = this.rego[entityId_3].find(function (r) { return r.menuItemId === menuItemId; });
4344
+ var doesInclude = this.rego[entityId_4].find(function (r) { return r.menuItemId === menuItemId; });
4332
4345
  if (doesInclude) {
4333
- this.rego[entityId_3] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
4346
+ this.rego[entityId_4] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
4334
4347
  }
4335
4348
  (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({
4336
4349
  type: EVisualUpdateType.Remove,
@@ -4338,7 +4351,7 @@ var VisualsRegister;
4338
4351
  rego: rego
4339
4352
  });
4340
4353
  if (doesInclude) {
4341
- updateEntity(this.viewer, entityId_3, this);
4354
+ updateEntity(this.viewer, entityId_4, this);
4342
4355
  }
4343
4356
  }
4344
4357
  }
@@ -4374,23 +4387,23 @@ var VisualsRegister;
4374
4387
  }
4375
4388
  }
4376
4389
  else if (relation) {
4377
- var relationKey_1 = RelationRenderEngine.GetRenderGroupId(relation);
4378
- for (var entityId_4 in this.rego) {
4379
- var entityRegos = this.rego[entityId_4];
4390
+ var relationKey_2 = RelationRenderEngine.GetRenderGroupId(relation);
4391
+ for (var entityId_5 in this.rego) {
4392
+ var entityRegos = this.rego[entityId_5];
4380
4393
  if (entityRegos) {
4381
- var rego = entityRegos.find(function (r) { return r.relation && RelationRenderEngine.GetRenderGroupId(r.relation) == relationKey_1; });
4394
+ var rego = entityRegos.find(function (r) { return r.relation && RelationRenderEngine.GetRenderGroupId(r.relation) == relationKey_2; });
4382
4395
  if (!rego) {
4383
4396
  continue;
4384
4397
  }
4385
4398
  removeEntity(this.viewer, rego.visual);
4386
- this.rego[entityId_4] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
4399
+ this.rego[entityId_5] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
4387
4400
  (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger({
4388
4401
  type: EVisualUpdateType.Remove,
4389
4402
  entityId: rego.entityId,
4390
4403
  rego: rego
4391
4404
  });
4392
4405
  if (doUpdate && menuItemId) {
4393
- updateEntity(this.viewer, entityId_4, this);
4406
+ updateEntity(this.viewer, entityId_5, this);
4394
4407
  }
4395
4408
  }
4396
4409
  }
@@ -9133,6 +9146,9 @@ var RelationsRenderManager;
9133
9146
  // If true, this menu item is disposed and should not be used.
9134
9147
  // Any rendering will be ignored.
9135
9148
  this.disposed = false;
9149
+ // Record of the currently drawn entity IDs.
9150
+ // This is to avoid re-queueing already drawn entities when Init is called multiple times.
9151
+ this.drawnIds = [];
9136
9152
  var apiGetter = params.apiGetter, item = params.item, register = params.register, viewer = params.viewer;
9137
9153
  this.apiGetter = apiGetter;
9138
9154
  this.item = item;
@@ -9153,6 +9169,7 @@ var RelationsRenderManager;
9153
9169
  * @returns
9154
9170
  */
9155
9171
  Manager.prototype.Init = function (params) {
9172
+ var _this = this;
9156
9173
  var _a;
9157
9174
  if (this.disposed) {
9158
9175
  return;
@@ -9165,8 +9182,6 @@ var RelationsRenderManager;
9165
9182
  var regos = this.register.GetRegos({
9166
9183
  menuItemId: this.item.id
9167
9184
  });
9168
- var drawnIds = [];
9169
- var toDrawIds = [];
9170
9185
  var entityIds = (_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.EntityIds;
9171
9186
  if (!(entityIds === null || entityIds === void 0 ? void 0 : entityIds.length)) {
9172
9187
  entityIds = [];
@@ -9181,26 +9196,12 @@ var RelationsRenderManager;
9181
9196
  requestRender: false
9182
9197
  });
9183
9198
  }
9184
- else {
9185
- drawnIds.push(rego.entityId);
9186
- if (rego.relation) {
9187
- drawnIds.push(rego.relation["Principal.Entity.ID"]);
9188
- }
9189
- }
9190
9199
  }
9191
9200
  this.viewer.scene.requestRender();
9192
- var _loop_1 = function (i) {
9193
- if (!drawnIds.find(function (x) { return x == entityIds[i]; })) {
9194
- toDrawIds.push(entityIds[i]);
9195
- }
9196
- };
9197
- // We'll call a re-render on entity ids that are not drawn.
9198
- for (var i = 0; i < entityIds.length; i++) {
9199
- _loop_1(i);
9200
- }
9201
9201
  this.renderEntityIds({
9202
- entityIds: toDrawIds
9202
+ entityIds: entityIds.filter(function (x) { return !_this.drawnIds.includes(x); })
9203
9203
  });
9204
+ this.drawnIds = [].concat(entityIds);
9204
9205
  };
9205
9206
  Manager.prototype.Dispose = function () {
9206
9207
  if (this.disposed) {
@@ -9213,18 +9214,25 @@ var RelationsRenderManager;
9213
9214
  };
9214
9215
  /**
9215
9216
  * Re-renders specific entity relationships.
9216
- * @TODO: This should re-render all relationships when entityIds=null.
9217
9217
  * @param params
9218
9218
  */
9219
9219
  Manager.prototype.ReRender = function (params) {
9220
9220
  return __awaiter(this, void 0, void 0, function () {
9221
9221
  var entityIds, force;
9222
+ var _this = this;
9222
9223
  return __generator(this, function (_a) {
9223
9224
  entityIds = params.entityIds, force = params.force;
9224
- if (entityIds == null) ;
9225
+ if (entityIds == null) {
9226
+ this.renderEntityIds({
9227
+ entityIds: this.drawnIds
9228
+ });
9229
+ }
9225
9230
  else {
9226
9231
  this.renderEntityIds({
9227
- dataEntityIds: entityIds
9232
+ // TODO: This is a guess and not a proper check.
9233
+ // We need to record rendered relationships and check against them rather than the ID stored as the ID can be a child or parent.
9234
+ dataEntityIds: entityIds.filter(function (x) { return !_this.drawnIds.includes(x); }),
9235
+ entityIds: entityIds.filter(function (x) { return _this.drawnIds.includes(x); })
9228
9236
  });
9229
9237
  }
9230
9238
  return [2 /*return*/];
@@ -9301,7 +9309,7 @@ var RelationsRenderManager;
9301
9309
  }
9302
9310
  }).then(function (data) {
9303
9311
  var relations = data.relations;
9304
- var _loop_2 = function (j) {
9312
+ var _loop_1 = function (j) {
9305
9313
  var relation = relations[j];
9306
9314
  var key = RelationRenderEngine.GetRenderGroupId(relation);
9307
9315
  if (!drawn.find(function (x) { return x == key; })) {
@@ -9314,7 +9322,7 @@ var RelationsRenderManager;
9314
9322
  }
9315
9323
  };
9316
9324
  for (var j = 0; j < relations.length; j++) {
9317
- _loop_2(j);
9325
+ _loop_1(j);
9318
9326
  }
9319
9327
  onResolve();
9320
9328
  }).catch(function (e) {
@@ -9396,7 +9404,7 @@ var RelationsRenderManager;
9396
9404
  cEntity = cEntities[key];
9397
9405
  if (cEntity && this.shouldRenderRelation(relation)) {
9398
9406
  visual = (_a = this.register.GetRego({
9399
- entityId: key,
9407
+ relation: relation,
9400
9408
  menuItemId: this.item.id
9401
9409
  })) === null || _a === void 0 ? void 0 : _a.visual;
9402
9410
  if (!visual || visual != cEntity) {
@@ -15481,7 +15489,7 @@ var ViewerUtils;
15481
15489
  ViewerUtils.CreateWidgets = CreateWidgets;
15482
15490
  })(ViewerUtils || (ViewerUtils = {}));
15483
15491
 
15484
- var VERSION$1 = "2.8.0";
15492
+ var VERSION$1 = "2.8.1";
15485
15493
 
15486
15494
  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, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, Draw3dPolygon, Draw3dPolyline };
15487
15495
  //# sourceMappingURL=bruce-cesium.es5.js.map