bruce-cesium 2.8.8 → 2.9.0

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, Primitive, Cesium3DTileFeature, Cartesian2, CallbackProperty, Rectangle, SceneMode, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, SceneTransforms, OrthographicFrustum, EasingFunction, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumInspector, defined, Cesium3DTileset, Matrix4, Matrix3, IonResource, Ion, EllipsoidGeodesic, sampleTerrainMostDetailed, Model, PolygonPipeline, ColorMaterialProperty, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, BoundingSphere } from 'cesium';
3
+ import { Cartographic, JulianDate, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, HeightReference, DistanceDisplayCondition, NearFarScalar, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, SceneMode, Cesium3DTileStyle, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, KmlDataSource, OrthographicFrustum, EasingFunction, EllipsoidTerrainProvider, CesiumInspector, defined, SceneTransforms, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, PolygonPipeline, EllipsoidGeodesic, sampleTerrainMostDetailed, Cesium3DTileset, Model, ScreenSpaceEventHandler, ScreenSpaceEventType, ColorMaterialProperty, Matrix3, Matrix4, GeometryInstance, IonResource, Ion, BoundingSphere } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -1939,6 +1939,34 @@ function getSizeOfPolygonEntity(entity) {
1939
1939
  }
1940
1940
  return length;
1941
1941
  }
1942
+ var _billboardCache = new LRUCache(100);
1943
+ var POINT_BILLBOARD_PADDING = 1;
1944
+ var createCircleBillboard = function (size, colorCss) {
1945
+ var key = size + "-" + colorCss;
1946
+ var cacheData = _billboardCache.Get(key);
1947
+ if ((cacheData === null || cacheData === void 0 ? void 0 : cacheData.canvas) instanceof HTMLCanvasElement) {
1948
+ return cacheData;
1949
+ }
1950
+ // Slight padding to avoid corners clipping.
1951
+ var canvasSize = size + (POINT_BILLBOARD_PADDING * 4);
1952
+ var canvas = document.createElement("canvas");
1953
+ canvas.width = canvasSize;
1954
+ canvas.height = canvasSize;
1955
+ var context = canvas.getContext("2d");
1956
+ context.beginPath();
1957
+ context.arc(canvasSize / 2, canvasSize / 2, size / 2, 0, 2 * Math.PI, false);
1958
+ context.fillStyle = colorCss;
1959
+ context.fill();
1960
+ var data = {
1961
+ canvas: canvas,
1962
+ colorCss: colorCss,
1963
+ size: size,
1964
+ height: canvasSize,
1965
+ width: canvasSize
1966
+ };
1967
+ _billboardCache.Set(key, data);
1968
+ return data;
1969
+ };
1942
1970
  var EntityRenderEngine;
1943
1971
  (function (EntityRenderEngine) {
1944
1972
  function Render(params) {
@@ -2199,7 +2227,7 @@ var EntityRenderEngine;
2199
2227
  (function (Point) {
2200
2228
  function Render(params) {
2201
2229
  return __awaiter(this, void 0, void 0, function () {
2202
- 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;
2230
+ 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;
2203
2231
  return __generator(this, function (_a) {
2204
2232
  switch (_a.label) {
2205
2233
  case 0:
@@ -2297,8 +2325,7 @@ var EntityRenderEngine;
2297
2325
  heightReference: getHeightRef(style),
2298
2326
  scale: iconScale,
2299
2327
  disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined,
2300
- distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance),
2301
- height: _fileHeightCache[iconUrl_1]
2328
+ distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance)
2302
2329
  // Would be great once we have a setting for this.
2303
2330
  // translucencyByDistance: getTranslucencyByDistance(params.minDistance, params.maxDistance),
2304
2331
  },
@@ -2310,6 +2337,7 @@ var EntityRenderEngine;
2310
2337
  }),
2311
2338
  show: true
2312
2339
  });
2340
+ cEntity.billboard._billboardSize = _fileHeightCache[iconUrl_1];
2313
2341
  }
2314
2342
  }
2315
2343
  _a.label = 12;
@@ -2389,11 +2417,22 @@ var EntityRenderEngine;
2389
2417
  return [2 /*return*/, null];
2390
2418
  }
2391
2419
  heightRef = getHeightRef(style);
2420
+ circleBillboard = createCircleBillboard(size, cColor.toCssColorString());
2392
2421
  cEntity = new Entity({
2393
- point: {
2394
- pixelSize: size,
2395
- color: cColor,
2396
- heightReference: getHeightRef(style),
2422
+ // point: {
2423
+ // pixelSize: size,
2424
+ // color: cColor,
2425
+ // heightReference: getHeightRef(style),
2426
+ // distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance)
2427
+ // },
2428
+ // We are generating a billboard instead of using the point.
2429
+ // This is because points were behaving strangely where they would appear oblong shapes.
2430
+ // This occurred consistently when rendering many icons and points at the same time.
2431
+ billboard: {
2432
+ height: circleBillboard.height,
2433
+ width: circleBillboard.width,
2434
+ image: circleBillboard.canvas,
2435
+ heightReference: heightRef,
2397
2436
  distanceDisplayCondition: getDisplayCondition(params.minDistance, params.maxDistance)
2398
2437
  },
2399
2438
  position: EntityUtils.GetPos({
@@ -2404,6 +2443,7 @@ var EntityRenderEngine;
2404
2443
  }),
2405
2444
  show: true
2406
2445
  });
2446
+ cEntity.billboard._billboardSize = Math.ceil(circleBillboard.height / 2);
2407
2447
  }
2408
2448
  if (cEntity) {
2409
2449
  cEntity._siblingGraphics = siblings;
@@ -3900,7 +3940,7 @@ var EntityLabel;
3900
3940
  }
3901
3941
  else if (visual.billboard) {
3902
3942
  heightRef = getValue$1(this.viewer, visual.billboard.heightReference);
3903
- height = getValue$1(this.viewer, visual.billboard.height);
3943
+ height = visual.billboard._billboardSize;
3904
3944
  if (height) {
3905
3945
  scale = EnsureNumber(getValue$1(this.viewer, visual.billboard.scale), 1);
3906
3946
  pixelOffset.y = -(height * scale);
@@ -9971,11 +10011,8 @@ var RelationsRenderManager;
9971
10011
  * @param relation
9972
10012
  */
9973
10013
  Manager.prototype.shouldRenderRelation = function (relation) {
9974
- var _a, _b, _c;
9975
- if (((_a = this.item.relationTypeIds) === null || _a === void 0 ? void 0 : _a.length) && !this.item.relationTypeIds.includes(relation["Relation.Type.ID"])) {
9976
- return false;
9977
- }
9978
- var renderedIds = (_c = (_b = this.item) === null || _b === void 0 ? void 0 : _b.BruceEntity) === null || _c === void 0 ? void 0 : _c.EntityIds;
10014
+ var _a, _b;
10015
+ var renderedIds = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.BruceEntity) === null || _b === void 0 ? void 0 : _b.EntityIds;
9979
10016
  if (!renderedIds) {
9980
10017
  return false;
9981
10018
  }
@@ -16005,9 +16042,13 @@ function backgroundRendering(viewer) {
16005
16042
  // We check in case something else is also requesting renders.
16006
16043
  var lastRenderTime = viewer.scene.lastRenderTime;
16007
16044
  if (!lastRenderTime || JulianDate.secondsDifference(JulianDate.now(), lastRenderTime) > 3) {
16008
- viewer.scene.requestRender();
16045
+ // Check if window is active/in focus.
16046
+ // TODO: Should render the moment it is in focus as well.
16047
+ if (document.hasFocus()) {
16048
+ viewer.scene.requestRender();
16049
+ }
16009
16050
  }
16010
- }, 3500);
16051
+ }, 1500);
16011
16052
  }
16012
16053
  var ViewerUtils;
16013
16054
  (function (ViewerUtils) {
@@ -16161,7 +16202,7 @@ var ViewerUtils;
16161
16202
  ViewerUtils.CreateWidgets = CreateWidgets;
16162
16203
  })(ViewerUtils || (ViewerUtils = {}));
16163
16204
 
16164
- var VERSION$1 = "2.8.8";
16205
+ var VERSION$1 = "2.9.0";
16165
16206
 
16166
16207
  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 };
16167
16208
  //# sourceMappingURL=bruce-cesium.es5.js.map