bruce-cesium 7.0.2 → 7.0.3
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.
- package/dist/bruce-cesium.es5.js +1370 -243
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +1368 -241
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/internal/cesium-show-gate.js +100 -0
- package/dist/lib/internal/cesium-show-gate.js.map +1 -0
- package/dist/lib/internal/cesium-utils.js +207 -1
- package/dist/lib/internal/cesium-utils.js.map +1 -1
- package/dist/lib/internal/js-utils.js +25 -1
- package/dist/lib/internal/js-utils.js.map +1 -1
- package/dist/lib/rendering/cesium-animated-in-out.js +66 -7
- package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-model3d.js +17 -8
- package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-point.js +46 -12
- package/dist/lib/rendering/entity-render-engine-point.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-polygon.js +107 -35
- package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-polyline.js +27 -8
- package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine.js +86 -14
- package/dist/lib/rendering/entity-render-engine.js.map +1 -1
- package/dist/lib/rendering/menu-item-manager.js +30 -2
- package/dist/lib/rendering/menu-item-manager.js.map +1 -1
- package/dist/lib/rendering/relation-render-engine.js +2 -1
- package/dist/lib/rendering/relation-render-engine.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-label.js +10 -2
- package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +45 -3
- package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +26 -15
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +50 -3
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +3 -2
- package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/other/relations-render-manager.js +3 -2
- package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/render-manager.js +67 -3
- package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +2 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +2 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +2 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +4 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
- package/dist/lib/rendering/texture-frame-series-animator.js +7 -0
- package/dist/lib/rendering/texture-frame-series-animator.js.map +1 -1
- package/dist/lib/rendering/tileset-render-engine.js +18 -0
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
- package/dist/lib/rendering/visual-register-culler.js +191 -97
- package/dist/lib/rendering/visual-register-culler.js.map +1 -1
- package/dist/lib/rendering/visuals-register.js +263 -25
- package/dist/lib/rendering/visuals-register.js.map +1 -1
- package/dist/lib/utils/cesium-entity-styler.js +7 -3
- package/dist/lib/utils/cesium-entity-styler.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/dist/types/internal/cesium-show-gate.d.ts +29 -0
- package/dist/types/internal/cesium-utils.d.ts +63 -0
- package/dist/types/internal/js-utils.d.ts +10 -0
- package/dist/types/rendering/cesium-animated-in-out.d.ts +5 -0
- package/dist/types/rendering/entity-render-engine-model3d.d.ts +2 -0
- package/dist/types/rendering/entity-render-engine-point.d.ts +2 -0
- package/dist/types/rendering/entity-render-engine-polygon.d.ts +2 -0
- package/dist/types/rendering/entity-render-engine-polyline.d.ts +2 -0
- package/dist/types/rendering/entity-render-engine.d.ts +17 -1
- package/dist/types/rendering/menu-item-manager.d.ts +6 -0
- package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +11 -0
- package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +12 -0
- package/dist/types/rendering/render-managers/render-manager.d.ts +33 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +3 -0
- package/dist/types/rendering/texture-frame-series-animator.d.ts +5 -0
- package/dist/types/rendering/tileset-render-engine.d.ts +14 -0
- package/dist/types/rendering/visual-register-culler.d.ts +7 -0
- package/dist/types/rendering/visuals-register.d.ts +65 -1
- package/dist/types/utils/cesium-entity-styler.d.ts +1 -0
- package/package.json +1 -1
|
@@ -2,6 +2,69 @@ import { Color } from "bruce-models";
|
|
|
2
2
|
import * as Cesium from "cesium";
|
|
3
3
|
export declare function OnNextCRender(viewer: Cesium.Viewer, callback: () => void): void;
|
|
4
4
|
export declare function GetCValue<T>(viewer: Cesium.Viewer, obj: Cesium.Property | any): T;
|
|
5
|
+
export declare function MarkCCollectionOwned(collection: Cesium.EntityCollection): void;
|
|
6
|
+
export declare function IsCCollectionOwned(collection: Cesium.EntityCollection): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Runs a bulk collection mutation with every given collection's events suspended, so Cesium raises one
|
|
9
|
+
* collectionChanged per collection for the whole pass instead of one per entity.
|
|
10
|
+
*
|
|
11
|
+
* Takes a set of collections rather than assuming `viewer.entities`, because managed visuals live in their menu
|
|
12
|
+
* item's own data source: suspending the wrong collection silently does nothing.
|
|
13
|
+
* @param collections Duplicates and empty entries are ignored.
|
|
14
|
+
* @param run
|
|
15
|
+
*/
|
|
16
|
+
export declare function WithSuspendedCCollections<T>(collections: Iterable<Cesium.EntityCollection>, run: () => T): T;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the collection a graphic belongs to, falling back to the viewer's own when it has never been added.
|
|
19
|
+
* @param viewer
|
|
20
|
+
* @param entity
|
|
21
|
+
*/
|
|
22
|
+
export declare function GetCEntityCollection(viewer: Cesium.Viewer, entity: any): Cesium.EntityCollection;
|
|
23
|
+
/**
|
|
24
|
+
* Returns whether a graphic is currently in the scene, looking in whichever collection owns it.
|
|
25
|
+
* @param viewer
|
|
26
|
+
* @param entity
|
|
27
|
+
*/
|
|
28
|
+
export declare function IsCEntityInScene(viewer: Cesium.Viewer, entity: any): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Removes a graphic from whichever collection owns it. Returns whether it removed anything.
|
|
31
|
+
* @param viewer
|
|
32
|
+
* @param entity
|
|
33
|
+
*/
|
|
34
|
+
export declare function RemoveCEntityFromScene(viewer: Cesium.Viewer, entity: any): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Adds a graphic back into whichever collection owns it, or the viewer's if it has no owner yet.
|
|
37
|
+
* @param viewer
|
|
38
|
+
* @param entity
|
|
39
|
+
*/
|
|
40
|
+
export declare function AddCEntityToScene(viewer: Cesium.Viewer, entity: any, fallbackCollection?: Cesium.EntityCollection): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Returns whether toggling `show` on these graphics is safe, rather than having to add/remove them from the
|
|
43
|
+
* entity collection to hide them.
|
|
44
|
+
*
|
|
45
|
+
* Toggling show is far cheaper than re-adding the graphic to the viewer however a Cesium bug means we can't always use it.
|
|
46
|
+
* See: https://github.com/CesiumGS/cesium/issues/9370
|
|
47
|
+
* @param parts The graphic and any sibling graphics, eg. from EntityUtils.GatherEntity.
|
|
48
|
+
*/
|
|
49
|
+
export declare function CanToggleShowSafely(parts: any[]): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Returns if two resolved Cesium property values are equal, using the value's own equals() when it has one.
|
|
52
|
+
* @param a
|
|
53
|
+
* @param b
|
|
54
|
+
*/
|
|
55
|
+
export declare function AreCValuesEqual(a: any, b: any): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Wraps a value in a ConstantProperty and assigns it to a graphic's property, but only when the resolved
|
|
58
|
+
* value actually differs. Returns whether it assigned.
|
|
59
|
+
* @param params
|
|
60
|
+
*/
|
|
61
|
+
export declare function SetCPropIfChanged<T>(params: {
|
|
62
|
+
viewer: Cesium.Viewer;
|
|
63
|
+
graphic: any;
|
|
64
|
+
property: string;
|
|
65
|
+
value: T;
|
|
66
|
+
compare?: (oldValue: T, newValue: T) => boolean;
|
|
67
|
+
}): boolean;
|
|
5
68
|
export declare function ColorToCColor(color: Color.IColor): Cesium.Color;
|
|
6
69
|
/**
|
|
7
70
|
* Removes duplicate points in a row and returns a new array.
|
|
@@ -6,3 +6,13 @@
|
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
8
|
export declare function EnsureNumber(value: any, defaultNum?: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* Returns an entity's own name when it is good enough to use as-is, or null when it has to be resolved properly.
|
|
11
|
+
* @param entity
|
|
12
|
+
*/
|
|
13
|
+
export declare function GetUsableEntityName(entity: any): string;
|
|
14
|
+
/**
|
|
15
|
+
* Returns whether a name is a real one rather than empty or a placeholder.
|
|
16
|
+
* @param name
|
|
17
|
+
*/
|
|
18
|
+
export declare function IsUsableEntityName(name: any): boolean;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import * as Cesium from "cesium";
|
|
2
2
|
export declare namespace CesiumAnimatedInOut {
|
|
3
|
+
/**
|
|
4
|
+
* Runs any removals already queued for this viewer immediately, instead of waiting for the next render.
|
|
5
|
+
* For teardown paths that need the scene emptied synchronously.
|
|
6
|
+
*/
|
|
7
|
+
function FlushPendingRemovals(viewer: Cesium.Viewer): void;
|
|
3
8
|
/**
|
|
4
9
|
* Animates an Entity out of the scene.
|
|
5
10
|
* Removes it from the scene at the end of the animation.
|
|
@@ -23,12 +23,14 @@ export declare namespace EntityRenderEngineModel3d {
|
|
|
23
23
|
maxDistance?: number;
|
|
24
24
|
minDistance?: number;
|
|
25
25
|
rendered?: EntityRenderEngine.ICesiumEntityExt;
|
|
26
|
+
offline?: boolean;
|
|
26
27
|
fullStyle?: Style.IEntitySettings;
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Params for rendering a group of 3D model entities.
|
|
30
31
|
*/
|
|
31
32
|
interface IGroupParams {
|
|
33
|
+
offline?: boolean;
|
|
32
34
|
rendered?: Map<string, EntityRenderEngine.ICesiumEntityExt>;
|
|
33
35
|
apiGetter: BruceApi.IGetter;
|
|
34
36
|
menuItemId: string;
|
|
@@ -23,12 +23,14 @@ export declare namespace EntityRenderEnginePoint {
|
|
|
23
23
|
maxDistance?: number;
|
|
24
24
|
minDistance?: number;
|
|
25
25
|
rendered?: EntityRenderEngine.ICesiumEntityExt;
|
|
26
|
+
offline?: boolean;
|
|
26
27
|
fullStyle?: Style.IEntitySettings;
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Params for rendering a group of point Entities.
|
|
30
31
|
*/
|
|
31
32
|
interface IGroupParams {
|
|
33
|
+
offline?: boolean;
|
|
32
34
|
rendered?: Map<string, EntityRenderEngine.ICesiumEntityExt>;
|
|
33
35
|
apiGetter: BruceApi.IGetter;
|
|
34
36
|
menuItemId: string;
|
|
@@ -6,6 +6,7 @@ import { ISeriesSegment } from "../internal/series-segment";
|
|
|
6
6
|
export declare namespace EntityRenderEnginePolygon {
|
|
7
7
|
interface IParams {
|
|
8
8
|
rendered?: EntityRenderEngine.ICesiumEntityExt;
|
|
9
|
+
offline?: boolean;
|
|
9
10
|
api?: BruceApi.Api;
|
|
10
11
|
style: Style.IPolygonSettings;
|
|
11
12
|
entity: Entity.IEntity;
|
|
@@ -17,6 +18,7 @@ export declare namespace EntityRenderEnginePolygon {
|
|
|
17
18
|
onSeriesDiscovered?: (segment: ISeriesSegment) => void;
|
|
18
19
|
}
|
|
19
20
|
interface IGroupParams {
|
|
21
|
+
offline?: boolean;
|
|
20
22
|
apiGetter: BruceApi.IGetter;
|
|
21
23
|
menuItemId: string;
|
|
22
24
|
onSeriesDiscovered?: (segment: ISeriesSegment) => void;
|
|
@@ -11,6 +11,7 @@ export declare namespace EntityRenderEnginePolyline {
|
|
|
11
11
|
*/
|
|
12
12
|
interface IParams {
|
|
13
13
|
rendered?: EntityRenderEngine.ICesiumEntityExt;
|
|
14
|
+
offline?: boolean;
|
|
14
15
|
style: Style.IPolylineSettings;
|
|
15
16
|
entity: Entity.IEntity;
|
|
16
17
|
tags: EntityTag.ITag[];
|
|
@@ -22,6 +23,7 @@ export declare namespace EntityRenderEnginePolyline {
|
|
|
22
23
|
* Params for rendering a group of polyline Entities.
|
|
23
24
|
*/
|
|
24
25
|
interface IGroupParams {
|
|
26
|
+
offline?: boolean;
|
|
25
27
|
apiGetter: BruceApi.IGetter;
|
|
26
28
|
menuItemId: string;
|
|
27
29
|
entities: Entity.IEntity[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Cesium from "cesium";
|
|
2
2
|
import { Entity, BruceApi, ZoomControl, IDictionary, EntityHistoricData } from "bruce-models";
|
|
3
|
+
import { RenderManager } from "./render-managers/render-manager";
|
|
3
4
|
import { VisualsRegister } from "./visuals-register";
|
|
4
5
|
import { EntityRenderEnginePoint } from "./entity-render-engine-point";
|
|
5
6
|
import { EntityRenderEngineModel3d } from "./entity-render-engine-model3d";
|
|
@@ -36,11 +37,24 @@ export declare namespace StyleEffective {
|
|
|
36
37
|
function MatchesFilter(effective: string | null | undefined, filter: string | null | undefined): boolean;
|
|
37
38
|
}
|
|
38
39
|
export declare namespace EntityRenderEngine {
|
|
40
|
+
/**
|
|
41
|
+
* Identifies the zoom band a graphic was last rendered for, covering everything in that band which
|
|
42
|
+
* changes how the entity is drawn. Used to decide whether a re-render is needed at all.
|
|
43
|
+
*
|
|
44
|
+
* Deliberately NOT the reuse key: most of a band's identity is plain graphics properties that can be
|
|
45
|
+
* patched onto the existing graphic, so see GetGraphicShapeId for that decision.
|
|
46
|
+
*/
|
|
39
47
|
function GetRenderGroupId(zoomItem: ZoomControl.IItem): string;
|
|
48
|
+
/**
|
|
49
|
+
* Identifies the kind of Cesium graphic a zoom item + entity resolves to, ignoring anything that is merely a property on it.
|
|
50
|
+
*/
|
|
51
|
+
function GetGraphicShapeId(zoomItem: ZoomControl.IItem, entity: Entity.IEntity): string;
|
|
40
52
|
interface ICesiumEntityExt extends Cesium.Entity {
|
|
41
53
|
_siblingGraphics?: Cesium.Entity[];
|
|
42
54
|
_parentEntity?: Cesium.Entity;
|
|
43
55
|
_renderGroup?: string;
|
|
56
|
+
_graphicShape?: string;
|
|
57
|
+
_bandCheck?: RenderManager.IBandCheck;
|
|
44
58
|
_noEdit?: boolean;
|
|
45
59
|
_noSelect?: boolean;
|
|
46
60
|
styleId?: number;
|
|
@@ -81,6 +95,7 @@ export declare namespace EntityRenderEngine {
|
|
|
81
95
|
entitiesHistoric?: IDictionary<EntityHistoricData.IData[]>;
|
|
82
96
|
entityHistoricDrawTrack?: boolean;
|
|
83
97
|
force?: boolean;
|
|
98
|
+
offline?: boolean;
|
|
84
99
|
optimizeGeometry?: boolean;
|
|
85
100
|
optimizeMinPoints?: number;
|
|
86
101
|
optimizeTolerance?: number;
|
|
@@ -131,7 +146,8 @@ export declare namespace EntityRenderEngine {
|
|
|
131
146
|
* @param max
|
|
132
147
|
* @param meterSize size of "thing" in meters, eg polyline is 0.5 meters width. If size is provided we can potentially cull it earlier.
|
|
133
148
|
* @param isPolygon
|
|
149
|
+
* @param fitMeterSize overall extent of the "thing" in meters, eg a parcel's bounding-box diagonal. If provided we keep it visible far enough out to actually fit on screen.
|
|
134
150
|
* @returns
|
|
135
151
|
*/
|
|
136
|
-
function GetDisplayCondition(min: number, max: number, meterSize?: number, isPolygon?: boolean): Cesium.DistanceDisplayCondition;
|
|
152
|
+
function GetDisplayCondition(min: number, max: number, meterSize?: number, isPolygon?: boolean, fitMeterSize?: number): Cesium.DistanceDisplayCondition;
|
|
137
153
|
}
|
|
@@ -91,6 +91,12 @@ export declare namespace MenuItemManager {
|
|
|
91
91
|
private isHandoffCapable;
|
|
92
92
|
private computeHandoffKey;
|
|
93
93
|
private tryClaimHandoffPayload;
|
|
94
|
+
/**
|
|
95
|
+
* Moves any series segments recorded for one menu item over to another, for a claimed hand-off.
|
|
96
|
+
* The adopting manager may legitimately skip re-rendering (nothing to restyle), and segments are only
|
|
97
|
+
* ever reported from inside a render, so without this the claiming item would end up with none.
|
|
98
|
+
*/
|
|
99
|
+
private transferSeriesSegments;
|
|
94
100
|
FlushPendingHandoffs(): void;
|
|
95
101
|
GetEnabledItemIds(): string[];
|
|
96
102
|
GetEnabledItem(id: string): IRenderedItem;
|
|
@@ -40,6 +40,12 @@ export declare namespace DataLabRenderManager {
|
|
|
40
40
|
private attachGetter;
|
|
41
41
|
private unsetGetter;
|
|
42
42
|
private setEntityCheckQueue;
|
|
43
|
+
/**
|
|
44
|
+
* Narrows a camera-driven check to the entities whose zoom band could actually have changed, so a pan or
|
|
45
|
+
* zoom stops re-requesting the whole rendered set. See RenderManager.CouldBandHaveChanged.
|
|
46
|
+
* @param ids
|
|
47
|
+
*/
|
|
48
|
+
private filterPossibleBandChanges;
|
|
43
49
|
private preventCurrentCheckApiRefresh;
|
|
44
50
|
Dispose(): void;
|
|
45
51
|
private doDispose;
|
|
@@ -61,6 +67,11 @@ export declare namespace DataLabRenderManager {
|
|
|
61
67
|
private doRenderDataLabEntities;
|
|
62
68
|
get HandoffKey(): string | null;
|
|
63
69
|
static GetHandoffKey(item: MenuItem.Item.IDataLab): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Everything about this menu item that changes how its entities are drawn, as a comparable string.
|
|
72
|
+
* The hand-off key is only the query id, so this is what catches a styling difference between two items sharing that query.
|
|
73
|
+
*/
|
|
74
|
+
static GetRenderSignature(item: MenuItem.Item.IDataLab): string;
|
|
64
75
|
PrepareHandoff(): RenderManager.IHandoffPayload | null;
|
|
65
76
|
AdoptHandoff(payload: RenderManager.IHandoffPayload): void;
|
|
66
77
|
}
|
|
@@ -80,6 +80,11 @@ export declare namespace EntitiesRenderManager {
|
|
|
80
80
|
zoomControl?: ZoomControl.IItem[];
|
|
81
81
|
queueRerender?: boolean;
|
|
82
82
|
}): void;
|
|
83
|
+
/**
|
|
84
|
+
* Narrows a camera-driven check to the entities whose zoom band could actually have changed.
|
|
85
|
+
* @param ids
|
|
86
|
+
*/
|
|
87
|
+
private filterPossibleBandChanges;
|
|
83
88
|
private doEntityCheck;
|
|
84
89
|
private distributeForRender;
|
|
85
90
|
private renderEntities;
|
|
@@ -102,6 +107,13 @@ export declare namespace EntitiesRenderManager {
|
|
|
102
107
|
private doRenderAsIndividuals;
|
|
103
108
|
get HandoffKey(): string | null;
|
|
104
109
|
static GetHandoffKey(item: MenuItem.Item.IEntities): string | null;
|
|
110
|
+
/**
|
|
111
|
+
* Everything about a menu item that changes how its entities are drawn, as a comparable string.
|
|
112
|
+
* Two items with the same signature produce identical graphics, so a hand-off between them needs no
|
|
113
|
+
* re-render (and so no re-fetch of entity data the hand-off just avoided requesting).
|
|
114
|
+
* A false mismatch only costs the optimization, so key ordering inside an inline Style is not normalized.
|
|
115
|
+
*/
|
|
116
|
+
static GetRenderSignature(item: MenuItem.Item.IEntities): string;
|
|
105
117
|
PrepareHandoff(): RenderManager.IHandoffPayload | null;
|
|
106
118
|
AdoptHandoff(payload: RenderManager.IHandoffPayload): void;
|
|
107
119
|
}
|
|
@@ -46,15 +46,48 @@ export declare namespace RenderManager {
|
|
|
46
46
|
*/
|
|
47
47
|
AdoptHandoff(payload: IHandoffPayload): void;
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* What a zoom-item resolution measured, so a later pass can tell whether the answer could have changed
|
|
51
|
+
* without redoing it. See IBandCheck on a rendered graphic.
|
|
52
|
+
*/
|
|
53
|
+
interface IZoomItemResolution {
|
|
54
|
+
distance?: number;
|
|
55
|
+
cameraPos?: Cesium.Cartesian3;
|
|
56
|
+
}
|
|
49
57
|
function DetermineZoomItem(params: {
|
|
50
58
|
viewer: Cesium.Viewer;
|
|
51
59
|
entity: Entity.IEntity;
|
|
52
60
|
zoomControl: ZoomControl.IItem[];
|
|
61
|
+
out?: IZoomItemResolution;
|
|
53
62
|
}): ZoomControl.IItem;
|
|
63
|
+
/**
|
|
64
|
+
* Returns whether an entity could have moved into a different zoom band since its graphic was rendered,
|
|
65
|
+
* given where the camera is now.
|
|
66
|
+
*
|
|
67
|
+
* Answers true whenever it cannot prove otherwise, so a caller may safely skip only on a false.
|
|
68
|
+
*/
|
|
69
|
+
function CouldBandHaveChanged(params: {
|
|
70
|
+
viewer: Cesium.Viewer;
|
|
71
|
+
bandCheck: IBandCheck;
|
|
72
|
+
}): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* What a graphic's zoom band was resolved from, recorded so a camera move can be tested against it
|
|
75
|
+
* without re-measuring the entity (which would need its geometry, ie. another fetch).
|
|
76
|
+
*/
|
|
77
|
+
interface IBandCheck extends IZoomItemResolution {
|
|
78
|
+
min?: number;
|
|
79
|
+
max?: number;
|
|
80
|
+
}
|
|
54
81
|
function GetZoomControlFromDistance(params: {
|
|
55
82
|
zoomControl: ZoomControl.IItem[];
|
|
56
83
|
distance: number;
|
|
57
84
|
}): ZoomControl.IItem;
|
|
85
|
+
/**
|
|
86
|
+
* Everything in a zoom control that changes how an entity is drawn, as a comparable string.
|
|
87
|
+
* Used to tell whether two menu items would produce identical graphics (see a manager's GetRenderSignature).
|
|
88
|
+
* A false mismatch only costs an optimization, so key ordering inside an inline Style is not normalized.
|
|
89
|
+
*/
|
|
90
|
+
function GetZoomControlSignature(zoomControl: ZoomControl.IItem[]): string;
|
|
58
91
|
function GetZoomMinMax(params: {
|
|
59
92
|
zoomControl: ZoomControl.IItem[];
|
|
60
93
|
}): number[];
|
package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ApiGetters, MenuItem } from "bruce-models";
|
|
|
2
2
|
import { RenderManager } from "../render-manager";
|
|
3
3
|
import * as Cesium from "cesium";
|
|
4
4
|
import { TilesetArbRenderManager } from "./tileset-arb-render-manager";
|
|
5
|
+
import { VisualsRegister } from "../../visuals-register";
|
|
5
6
|
export declare namespace TilesetPointcloudRenderManager {
|
|
6
7
|
class Manager implements RenderManager.IManager, RenderManager.IHandoffCapableManager, RenderManager.IHandoffReceiver {
|
|
7
8
|
private viewer;
|
|
@@ -12,11 +13,13 @@ export declare namespace TilesetPointcloudRenderManager {
|
|
|
12
13
|
private cTileset;
|
|
13
14
|
get Tileset(): Cesium.Cesium3DTileset;
|
|
14
15
|
private initQueue;
|
|
16
|
+
private visualsManager;
|
|
15
17
|
constructor(params: {
|
|
16
18
|
viewer: Cesium.Viewer;
|
|
17
19
|
getters: ApiGetters;
|
|
18
20
|
item: MenuItem.Item.IPointcloud;
|
|
19
21
|
initQueue?: TilesetArbRenderManager.IInitQueue;
|
|
22
|
+
register?: VisualsRegister.Register;
|
|
20
23
|
});
|
|
21
24
|
Init(): void;
|
|
22
25
|
private onCTilesetLoad;
|
|
@@ -71,6 +71,11 @@ export declare namespace TextureFrameSeriesAnimator {
|
|
|
71
71
|
* lets a caller re-rendering the same entity tell whether an existing instance is already correct, without reaching into private state.
|
|
72
72
|
*/
|
|
73
73
|
GetArchiveUrl(): string;
|
|
74
|
+
/**
|
|
75
|
+
* The property this instance presents frames through, for a caller that needs to rebuild the entity's
|
|
76
|
+
* material (eg: re-tinting for opacity/selection) without detaching the animation.
|
|
77
|
+
*/
|
|
78
|
+
GetImageProperty(): Cesium.CallbackProperty;
|
|
74
79
|
private onClockTick;
|
|
75
80
|
private findFrameIndex;
|
|
76
81
|
private swapToFrame;
|
|
@@ -54,7 +54,19 @@ export declare namespace TilesetRenderEngine {
|
|
|
54
54
|
_bruceSettings?: ISettingsParams;
|
|
55
55
|
_bruceDateRange?: IDateRange;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Just enough of the visuals register to hand a tileset over, declared structurally so this engine does not have
|
|
59
|
+
* to import the register (which imports back into the rendering engines).
|
|
60
|
+
*/
|
|
61
|
+
interface ITilesetSink {
|
|
62
|
+
AddTileset(params: {
|
|
63
|
+
tileset: Cesium.Cesium3DTileset;
|
|
64
|
+
menuItemId?: string;
|
|
65
|
+
}): void;
|
|
66
|
+
}
|
|
57
67
|
interface IParams {
|
|
68
|
+
register?: ITilesetSink;
|
|
69
|
+
menuItemId?: string;
|
|
58
70
|
loadUrl?: string;
|
|
59
71
|
accountId: string;
|
|
60
72
|
apiGetter: BruceApi.IGetter;
|
|
@@ -93,6 +105,8 @@ export declare namespace TilesetRenderEngine {
|
|
|
93
105
|
loadUrl?: string;
|
|
94
106
|
viaCdn?: boolean;
|
|
95
107
|
noMemoryLimit?: boolean;
|
|
108
|
+
register?: ITilesetSink;
|
|
109
|
+
menuItemId?: string;
|
|
96
110
|
backFaceCulling?: boolean;
|
|
97
111
|
}): Promise<Cesium.Cesium3DTileset>;
|
|
98
112
|
class Styler extends TilesetStyler {
|
|
@@ -13,6 +13,13 @@ export declare namespace VisualRegisterCuller {
|
|
|
13
13
|
function Monitor(params: {
|
|
14
14
|
register: VisualsRegister.Register;
|
|
15
15
|
}): (params: IMonitorDispose) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Runs the tileset visibility pass immediately, rather than waiting for the next cull cycle.
|
|
18
|
+
* Exposed so the behaviour is directly assertable, and for a caller that needs it applied now.
|
|
19
|
+
* @param register
|
|
20
|
+
*/
|
|
21
|
+
function CullTilesets(register: VisualsRegister.Register): void;
|
|
22
|
+
function IsCullingIgnored(viewer: Cesium.Viewer, rego: VisualsRegister.IVisualRego): boolean;
|
|
16
23
|
function IsCulled(viewer: Cesium.Viewer, rego: VisualsRegister.IVisualRego, visual: VisualsRegister.Visual): any;
|
|
17
24
|
function MarkShouldRecheck(viewer: Cesium.Viewer): void;
|
|
18
25
|
}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { ApiGetters, BruceEvent, Cartes, Entity, EntityRelation, IDictionary, MenuItem, ProjectViewBookmark } from "bruce-models";
|
|
2
2
|
import * as Cesium from "cesium";
|
|
3
|
+
import { IShowGate } from "../internal/cesium-show-gate";
|
|
3
4
|
/**
|
|
4
5
|
* Manages a registry of all Bruce visuals being rendered by menu items.
|
|
5
6
|
*/
|
|
6
7
|
export declare namespace VisualsRegister {
|
|
7
8
|
type Visual = Cesium.Entity | Cesium.Primitive | Cesium.Cesium3DTileFeature;
|
|
9
|
+
/**
|
|
10
|
+
* A Cesium tileset the register knows about, tracked separately from regos.
|
|
11
|
+
*/
|
|
12
|
+
interface ITilesetRego {
|
|
13
|
+
tileset: Cesium.Cesium3DTileset;
|
|
14
|
+
menuItemId?: string;
|
|
15
|
+
gate?: IShowGate;
|
|
16
|
+
culled?: boolean;
|
|
17
|
+
}
|
|
8
18
|
interface IVisualRego {
|
|
9
19
|
canEdit: boolean;
|
|
10
20
|
entityId: string;
|
|
@@ -101,6 +111,33 @@ export declare namespace VisualsRegister {
|
|
|
101
111
|
viewer: Cesium.Viewer;
|
|
102
112
|
apiGetters?: ApiGetters;
|
|
103
113
|
});
|
|
114
|
+
private menuItemSources;
|
|
115
|
+
private sourceOrderDirty;
|
|
116
|
+
/**
|
|
117
|
+
* Returns the collection a menu item's visuals belong in, creating its data source on first use.
|
|
118
|
+
* Returns null when there is nothing to key off, leaving the caller on the viewer's own collection.
|
|
119
|
+
* @param menuItemId
|
|
120
|
+
*/
|
|
121
|
+
private ensureMenuItemCollection;
|
|
122
|
+
/**
|
|
123
|
+
* Notes the highest zIndex seen for a menu item, since that is what its data source has to sort by.
|
|
124
|
+
* zIndex orders geometry within a data source but not between them, so a whole layer stacks by the
|
|
125
|
+
* highest value anything in it asked for.
|
|
126
|
+
* @param menuItemId
|
|
127
|
+
* @param visual
|
|
128
|
+
*/
|
|
129
|
+
private trackSourceZIndex;
|
|
130
|
+
/**
|
|
131
|
+
* Re-stacks the menu item data sources so a higher zIndex sits above a lower one.
|
|
132
|
+
*/
|
|
133
|
+
private applySourceOrder;
|
|
134
|
+
/**
|
|
135
|
+
* Drops a menu item's data source once nothing is registered under it any more.
|
|
136
|
+
* @param menuItemId
|
|
137
|
+
*/
|
|
138
|
+
private releaseMenuItemCollection;
|
|
139
|
+
/** Every collection a bulk pass over this register's visuals could mutate. */
|
|
140
|
+
private allSceneCollections;
|
|
104
141
|
private indexMenuItemEntity;
|
|
105
142
|
private unindexMenuItemEntityIfAbsent;
|
|
106
143
|
private markLazyExclusion;
|
|
@@ -412,9 +449,36 @@ export declare namespace VisualsRegister {
|
|
|
412
449
|
}): {
|
|
413
450
|
regos: IVisualRego[];
|
|
414
451
|
};
|
|
452
|
+
private tilesets;
|
|
453
|
+
/**
|
|
454
|
+
* Registers a tileset so the register can decide when it is worth drawing.
|
|
455
|
+
* @param params
|
|
456
|
+
*/
|
|
457
|
+
AddTileset(params: {
|
|
458
|
+
tileset: Cesium.Cesium3DTileset;
|
|
459
|
+
menuItemId?: string;
|
|
460
|
+
}): void;
|
|
461
|
+
/**
|
|
462
|
+
* Stops tracking a tileset and hands its show flag back to its owner.
|
|
463
|
+
* @param tileset
|
|
464
|
+
*/
|
|
465
|
+
RemoveTileset(tileset: Cesium.Cesium3DTileset): void;
|
|
466
|
+
/**
|
|
467
|
+
* Stops tracking every tileset belonging to a menu item.
|
|
468
|
+
* @param menuItemId
|
|
469
|
+
*/
|
|
470
|
+
RemoveTilesetsByMenuItem(menuItemId: string): void;
|
|
471
|
+
/**
|
|
472
|
+
* Every tileset currently tracked.
|
|
473
|
+
*/
|
|
474
|
+
GetTilesets(): ITilesetRego[];
|
|
415
475
|
/**
|
|
416
|
-
*
|
|
476
|
+
* Suppresses or restores a tileset.
|
|
477
|
+
* Returns whether its effective visibility changed, so a caller can skip requesting a render when nothing did.
|
|
478
|
+
* @param tileset
|
|
479
|
+
* @param culled
|
|
417
480
|
*/
|
|
481
|
+
SetTilesetCulled(tileset: Cesium.Cesium3DTileset, culled: boolean): boolean;
|
|
418
482
|
GetEntityIds(): string[];
|
|
419
483
|
/**
|
|
420
484
|
* Marks regos corresponding to given entity ids as stale.
|