bruce-cesium 7.2.4 → 7.2.6

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 (31) hide show
  1. package/dist/bruce-cesium.es5.js +386 -52
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +384 -50
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/internal/cesium-utils.js +32 -1
  7. package/dist/lib/internal/cesium-utils.js.map +1 -1
  8. package/dist/lib/rendering/entity-gatherer.js +170 -17
  9. package/dist/lib/rendering/entity-gatherer.js.map +1 -1
  10. package/dist/lib/rendering/menu-item-manager.js +1 -0
  11. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  12. package/dist/lib/rendering/render-managers/common/historic-utils.js +91 -24
  13. package/dist/lib/rendering/render-managers/common/historic-utils.js.map +1 -1
  14. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +1 -0
  15. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +1 -0
  17. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +61 -3
  19. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  20. package/dist/lib/rendering/texture-frame-series-animator.js +20 -3
  21. package/dist/lib/rendering/texture-frame-series-animator.js.map +1 -1
  22. package/dist/lib/rendering/tileset-styler.js +10 -1
  23. package/dist/lib/rendering/tileset-styler.js.map +1 -1
  24. package/dist/types/bruce-cesium.d.ts +1 -1
  25. package/dist/types/internal/cesium-utils.d.ts +9 -0
  26. package/dist/types/rendering/entity-gatherer.d.ts +24 -0
  27. package/dist/types/rendering/render-managers/common/historic-utils.d.ts +30 -5
  28. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +5 -0
  29. package/dist/types/rendering/texture-frame-series-animator.d.ts +1 -0
  30. package/dist/types/rendering/tileset-styler.d.ts +3 -0
  31. package/package.json +1 -1
@@ -1,6 +1,9 @@
1
1
  import { BruceApi, BruceEvent, Entity, EntityTag } from "bruce-models";
2
2
  import * as Cesium from "cesium";
3
+ import { CesiumViewMonitor } from "../viewer/cesium-view-monitor";
3
4
  export declare class EntityGatherer {
5
+ static readonly MIN_ORDER_QUEUE = 500;
6
+ static readonly REORDER_MOVE_METRES = 250;
4
7
  private disposed;
5
8
  private api;
6
9
  private viewer;
@@ -13,6 +16,11 @@ export declare class EntityGatherer {
13
16
  private lastDateTimeMax;
14
17
  private lastFoundDateTimes;
15
18
  private eIdQueue;
19
+ private eIdQueued;
20
+ private positionOf;
21
+ private priorityCount;
22
+ private lastOrderFocus;
23
+ private monitor;
16
24
  private allEIds;
17
25
  private runningTick;
18
26
  private entityDataOverrides;
@@ -30,6 +38,22 @@ export declare class EntityGatherer {
30
38
  Init(historic: boolean, expandSources: boolean): void;
31
39
  Empty(): void;
32
40
  ReQueueAll(): void;
41
+ /**
42
+ * Supplies a lookup from Entity ID to world position, letting the queue resolve what the camera
43
+ * is nearest first. Sources that cannot answer should not call this, and are served in order.
44
+ */
45
+ SetPositionSource(positionOf: (entityId: string) => Cesium.Cartesian3 | null): void;
46
+ /**
47
+ * Supplies the view monitor, so the order follows the ground the camera is aimed at and prefers
48
+ * what is on screen. Without one the ordering falls back to distance from the camera itself.
49
+ */
50
+ SetViewMonitor(monitor: CesiumViewMonitor.Monitor): void;
51
+ /**
52
+ * Re-bands the pending queue so the nearest Entities are requested first.
53
+ */
54
+ private orderQueueByCamera;
55
+ private static boundsChanged;
56
+ private bandIds;
33
57
  Queue(entityIds: string[], topOfQueue?: boolean): void;
34
58
  Dispose(): void;
35
59
  private checkRange;
@@ -1,5 +1,6 @@
1
1
  import * as Cesium from "cesium";
2
- import { BruceApi, Entity, EntityHistoricData, IDictionary } from "bruce-models";
2
+ import { Bounds, BruceApi, Entity, EntityHistoricData, IDictionary } from "bruce-models";
3
+ import { CesiumViewMonitor } from "../../../viewer/cesium-view-monitor";
3
4
  /**
4
5
  * How often a historic refresh is worth running, and which Entities it should ask about first.
5
6
  *
@@ -16,17 +17,40 @@ export declare namespace HistoricFetchOrder {
16
17
  * Returns how long to wait between historic refreshes for a set of this size.
17
18
  */
18
19
  function IntervalFor(entityCount: number, minMs?: number, maxMs?: number): number;
20
+ const DEFAULT_BANDS: number[];
19
21
  /**
20
- * Returns the Entities grouped into bands by distance from the camera, nearest band first.
21
- *
22
- * Bands rather than a true sort, so a small camera move does not reshuffle the whole queue and
23
- * restart it. What the user is looking at resolves first either way.
22
+ * Where the user is actually looking, which is not the same as where the camera is.
23
+ */
24
+ interface IViewFocus {
25
+ origin: Cesium.Cartesian3;
26
+ bounds?: Bounds.IReqBounds;
27
+ }
28
+ /**
29
+ * Resolves what to order by from the view monitor, falling back to the camera itself.
30
+ */
31
+ function FocusFrom(params: {
32
+ viewer: Cesium.Viewer;
33
+ monitor?: CesiumViewMonitor.Monitor;
34
+ }): IViewFocus | null;
35
+ /**
36
+ * Returns the Entities grouped nearest first, on screen ahead of off screen.
24
37
  */
25
38
  function ByCameraDistance(params: {
26
39
  viewer: Cesium.Viewer;
27
40
  entities: Entity.IEntity[];
41
+ monitor?: CesiumViewMonitor.Monitor;
28
42
  bands?: number[];
29
43
  }): Entity.IEntity[][];
44
+ /**
45
+ * Bands anything that can name its own world position, on the same bounds as the Entity form.
46
+ */
47
+ function ByCameraDistanceOf<T>(params: {
48
+ focus: IViewFocus | null;
49
+ items: T[];
50
+ posOf: (item: T) => Cesium.Cartesian3 | null;
51
+ bands?: number[];
52
+ }): T[][];
53
+ function InBounds(pos: Cesium.Cartesian3, bounds: Bounds.IReqBounds): boolean;
30
54
  }
31
55
  /**
32
56
  * Decides what slice of history is worth fetching for the clock as it is currently moving.
@@ -132,6 +156,7 @@ export declare class HistoricGatherer {
132
156
  private disposed;
133
157
  constructor(params: {
134
158
  viewer: Cesium.Viewer;
159
+ monitor?: CesiumViewMonitor.Monitor;
135
160
  getApi: () => BruceApi.Api;
136
161
  getAttrKey: () => string;
137
162
  sample?: number;
@@ -4,6 +4,7 @@ import { TilesetRenderEngine } from "../../tileset-render-engine";
4
4
  import { VisualsRegister } from "../../visuals-register";
5
5
  import { RenderManager } from "../render-manager";
6
6
  import { TilesetArbRenderManager } from "./tileset-arb-render-manager";
7
+ import { CesiumViewMonitor } from "../../../viewer/cesium-view-monitor";
7
8
  export declare namespace TilesetEntitiesRenderManager {
8
9
  class Manager implements RenderManager.IManager, RenderManager.IHandoffCapableManager, RenderManager.IHandoffReceiver {
9
10
  private initCounter;
@@ -32,12 +33,14 @@ export declare namespace TilesetEntitiesRenderManager {
32
33
  private featurePropCache;
33
34
  private featurePropsChecked;
34
35
  private initQueue;
36
+ private monitor;
35
37
  constructor(params: {
36
38
  viewer: Cesium.Viewer;
37
39
  register: VisualsRegister.Register;
38
40
  getters: ApiGetters;
39
41
  item: MenuItem.Item.IEntitiesTileset;
40
42
  initQueue?: TilesetArbRenderManager.IInitQueue;
43
+ monitor?: CesiumViewMonitor.Monitor;
41
44
  });
42
45
  Init(params?: {
43
46
  item: MenuItem.Item.IEntitiesTileset;
@@ -69,6 +72,8 @@ export declare namespace TilesetEntitiesRenderManager {
69
72
  PrepareHandoff(): RenderManager.IHandoffPayload | null;
70
73
  AdoptHandoff(payload: RenderManager.IHandoffPayload): void;
71
74
  private queueHandoffRestyle;
75
+ private static readNumber;
76
+ private readBakedPos;
72
77
  private mapTilesetFeature;
73
78
  ReRender(params: {
74
79
  entityIds?: string[];
@@ -377,6 +377,7 @@ export declare namespace TextureFrameSeriesAnimator {
377
377
  private nearestUncachedFrame;
378
378
  private pumpFetchQueue;
379
379
  private fetchAndTint;
380
+ private shouldPresent;
380
381
  protected composeTiles(tiles: ITileEntry[], idx: number, buffer: ArrayBuffer, spanStart: number): Promise<{
381
382
  pixels: Uint8ClampedArray;
382
383
  width: number;
@@ -1,6 +1,7 @@
1
1
  import { BruceApi, BruceEvent, Entity, Style } from "bruce-models";
2
2
  import * as Cesium from "cesium";
3
3
  import { VisualsRegister } from "./visuals-register";
4
+ import { CesiumViewMonitor } from "../viewer/cesium-view-monitor";
4
5
  /**
5
6
  * Returns if the outline metadata is different.
6
7
  * @param rego
@@ -31,6 +32,7 @@ export declare class TilesetStyler {
31
32
  private historic;
32
33
  private applyStyles;
33
34
  private entityGatherer;
35
+ private monitor;
34
36
  private reRenderState;
35
37
  private shouldUpdateRegoStates;
36
38
  private styledEntityIds;
@@ -54,6 +56,7 @@ export declare class TilesetStyler {
54
56
  scenario?: number | string;
55
57
  historic?: boolean;
56
58
  applyStyles?: boolean;
59
+ monitor?: CesiumViewMonitor.Monitor;
57
60
  }): void;
58
61
  /**
59
62
  * Updates style mapping and fallback style.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bruce-cesium",
3
- "version": "7.2.4",
3
+ "version": "7.2.6",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "dist/bruce-cesium.umd.js",