cesium-multi-target-framework 0.1.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.
Files changed (41) hide show
  1. package/README.md +474 -0
  2. package/dist/assets/renderWorker-118e8f3b.js +1 -0
  3. package/dist/cesium-multi-target-framework.js +4605 -0
  4. package/dist/cesium-multi-target-framework.umd.cjs +101 -0
  5. package/dist/cluster/QuadCluster.d.ts +66 -0
  6. package/dist/cluster/clusterClient.d.ts +44 -0
  7. package/dist/cluster/clusterWorker.d.ts +1 -0
  8. package/dist/config/types.d.ts +266 -0
  9. package/dist/core/EventEmitter.d.ts +9 -0
  10. package/dist/core/MultiTargetFramework.d.ts +184 -0
  11. package/dist/core/MultiTargetScene.d.ts +224 -0
  12. package/dist/data/types.d.ts +67 -0
  13. package/dist/events/bus.d.ts +336 -0
  14. package/dist/index.d.ts +22 -0
  15. package/dist/render/AirGroundReferenceRenderer.d.ts +20 -0
  16. package/dist/render/InstancedGltfBatch.d.ts +37 -0
  17. package/dist/render/InstancedSymbolRenderer.d.ts +65 -0
  18. package/dist/render/LowModelInstancedRenderer.d.ts +39 -0
  19. package/dist/render/ModelPoolRenderer.d.ts +43 -0
  20. package/dist/render/PointCloudRenderer.d.ts +135 -0
  21. package/dist/render/SelectionOverlayRenderer.d.ts +37 -0
  22. package/dist/render/targetVisualMetrics.d.ts +9 -0
  23. package/dist/site/SiteLayer.d.ts +43 -0
  24. package/dist/site/SiteLowModelRenderer.d.ts +12 -0
  25. package/dist/site/SiteSpatialIndex.d.ts +10 -0
  26. package/dist/site/types.d.ts +72 -0
  27. package/dist/track/TrackHoverPicker.d.ts +26 -0
  28. package/dist/track/TrackManager.d.ts +42 -0
  29. package/dist/track/TrackRenderer.d.ts +29 -0
  30. package/dist/track/types.d.ts +27 -0
  31. package/dist/worker/protocol.d.ts +182 -0
  32. package/dist/worker/renderWorker.d.ts +1 -0
  33. package/doc//345/244/232/347/233/256/346/240/207/344/274/230/345/214/226/344/270/216/351/242/204/346/265/213/346/270/262/346/237/223/350/257/264/346/230/216.md +186 -0
  34. package/doc//345/244/232/347/273/204/344/273/266/344/272/213/344/273/266/346/226/271/346/241/210.md +410 -0
  35. package/doc//345/257/271/345/244/226/346/216/245/345/217/243/350/257/264/346/230/216.md +519 -0
  36. package/doc//345/267/245/344/275/234/350/256/241/345/210/222.md +59 -0
  37. package/doc//346/270/262/346/237/223/344/270/232/345/212/241/351/200/273/350/276/221.md +202 -0
  38. package/doc//347/253/231/347/202/271/346/270/262/346/237/223/344/270/216/345/217/263/351/224/256/350/217/234/345/215/225/345/256/236/347/216/260/350/257/264/346/230/216.md +49 -0
  39. package/doc//350/247/206/345/217/243/351/251/261/345/212/250/346/225/260/346/215/256/346/265/201/347/250/213/344/277/256/346/224/271/350/256/241/345/210/222.md +69 -0
  40. package/doc//351/241/271/347/233/256/350/257/264/346/230/216/344/271/246.md +729 -0
  41. package/package.json +51 -0
@@ -0,0 +1,67 @@
1
+ export interface TrackPoint {
2
+ lon: number;
3
+ lat: number;
4
+ height: number;
5
+ time: number;
6
+ heading?: number;
7
+ speed?: number;
8
+ source?: string;
9
+ }
10
+ export interface TargetData {
11
+ id: string;
12
+ type: string;
13
+ lon: number;
14
+ lat: number;
15
+ height: number;
16
+ speedH: number;
17
+ speedV: number;
18
+ heading: number;
19
+ /** 目标渲染颜色,标准格式为 #RRGGBB 或 #RRGGBBAA。 */
20
+ renderColor?: string;
21
+ /** 是否打开目标动画效果。 */
22
+ openAnimate?: boolean;
23
+ /** 动画类型,当前内置支持 "glow" 和 "发光"。 */
24
+ animateType?: string;
25
+ /** 动画颜色,不传时沿用 renderColor 或类型默认色。 */
26
+ animateColor?: string;
27
+ nationality?: string;
28
+ customInfo?: Record<string, unknown>;
29
+ track?: TrackPoint[];
30
+ secrecy?: number;
31
+ extra?: Record<string, unknown>;
32
+ }
33
+ export type StandardTargetData = TargetData;
34
+ export interface IncrementalPayload {
35
+ upserts?: TargetData[];
36
+ removes?: string[];
37
+ }
38
+ export interface PackedTargetData {
39
+ replacePending?: boolean;
40
+ /** 首包/结构变化时提供;后续仅坐标更新可省略,沿用 worker 内已有 id 顺序 */
41
+ ids?: string[];
42
+ types?: string[] | string;
43
+ lon: Float64Array;
44
+ lat: Float64Array;
45
+ height?: Float32Array;
46
+ speedH?: Float32Array;
47
+ speedV?: Float32Array;
48
+ heading?: Float32Array;
49
+ secrecy?: Int16Array;
50
+ /** 每个目标的 0xRRGGBB 渲染颜色;不传则沿用 worker 内已有颜色或类型默认色。 */
51
+ renderColor?: Uint32Array;
52
+ /** 0=无动画,1=发光。 */
53
+ animate?: Uint8Array;
54
+ /** 每个目标的 0xRRGGBB 动画颜色。 */
55
+ animateColor?: Uint32Array;
56
+ removes?: string[];
57
+ }
58
+ export interface PackedDiffResult {
59
+ added?: PackedTargetData;
60
+ updated?: PackedTargetData;
61
+ removed: string[];
62
+ }
63
+ export interface DiffResult {
64
+ added: TargetData[];
65
+ updated: TargetData[];
66
+ removed: string[];
67
+ }
@@ -0,0 +1,336 @@
1
+ import { EventBus, RegisterOptions } from 'web-event-bus';
2
+ import { Cartesian2 } from 'cesium';
3
+ import { ContextMenuContext, ContextMenuItemRegistration, LocateTargetOptions, MultiTargetFramework, TargetIdInput, TargetStyleOptions } from '../core/MultiTargetFramework';
4
+ import { SceneEvents } from '../core/MultiTargetScene';
5
+ import { IncrementalPayload, StandardTargetData } from '../data/types';
6
+ import { LabelConfig } from '../config/types';
7
+ import { SiteData, SiteLayerEvents } from '../site/types';
8
+ import { SiteLayer } from '../site/SiteLayer';
9
+ import { TrackManagerEvents, TrackRecord } from '../track/types';
10
+
11
+ export declare const MTF_EVENT_NAMES: {
12
+ readonly scene: {
13
+ readonly perf: "mtf.scene.perf";
14
+ readonly dirty: "mtf.scene.dirty";
15
+ readonly packedDirty: "mtf.scene.packedDirty";
16
+ readonly pick: "mtf.scene.pick";
17
+ readonly hover: "mtf.scene.hover";
18
+ readonly selection: "mtf.scene.selection";
19
+ readonly contextmenu: "mtf.scene.contextmenu";
20
+ };
21
+ readonly track: {
22
+ readonly hover: "mtf.track.hover";
23
+ };
24
+ readonly site: {
25
+ readonly contextmenu: "mtf.site.contextmenu";
26
+ readonly pick: "mtf.site.pick";
27
+ readonly hover: "mtf.site.hover";
28
+ };
29
+ };
30
+ export declare const MTF_ACTION_NAMES: {
31
+ readonly framework: {
32
+ readonly addTarget: "mtf.framework.addTarget";
33
+ readonly updateTarget: "mtf.framework.updateTarget";
34
+ readonly setTargetData: "mtf.framework.setTargetData";
35
+ readonly upsertTargetData: "mtf.framework.upsertTargetData";
36
+ readonly removeTargetData: "mtf.framework.removeTargetData";
37
+ readonly applyTargetIncremental: "mtf.framework.applyTargetIncremental";
38
+ readonly setTargetColor: "mtf.framework.setTargetColor";
39
+ readonly setTargetGlow: "mtf.framework.setTargetGlow";
40
+ readonly hideTarget: "mtf.framework.hideTarget";
41
+ readonly showTarget: "mtf.framework.showTarget";
42
+ readonly disappearTarget: "mtf.framework.disappearTarget";
43
+ readonly appearTarget: "mtf.framework.appearTarget";
44
+ readonly setNameplateConfig: "mtf.framework.setNameplateConfig";
45
+ readonly selectTarget: "mtf.framework.selectTarget";
46
+ readonly selectTargets: "mtf.framework.selectTargets";
47
+ readonly unselectTarget: "mtf.framework.unselectTarget";
48
+ readonly clearSelection: "mtf.framework.clearSelection";
49
+ readonly boxTarget: "mtf.framework.boxTarget";
50
+ readonly unboxTarget: "mtf.framework.unboxTarget";
51
+ readonly locateTarget: "mtf.framework.locateTarget";
52
+ readonly registerContextMenuItem: "mtf.framework.registerContextMenuItem";
53
+ readonly showContextMenu: "mtf.framework.showContextMenu";
54
+ readonly closeContextMenu: "mtf.framework.closeContextMenu";
55
+ readonly destroy: "mtf.framework.destroy";
56
+ };
57
+ readonly tracks: {
58
+ readonly setTracks: "mtf.tracks.setTracks";
59
+ readonly getTracks: "mtf.tracks.getTracks";
60
+ readonly showTracks: "mtf.tracks.showTracks";
61
+ readonly hideTracks: "mtf.tracks.hideTracks";
62
+ readonly removeTracks: "mtf.tracks.removeTracks";
63
+ readonly clearTracks: "mtf.tracks.clearTracks";
64
+ };
65
+ readonly site: {
66
+ readonly setData: "mtf.site.setData";
67
+ readonly clear: "mtf.site.clear";
68
+ readonly pickAt: "mtf.site.pickAt";
69
+ readonly destroy: "mtf.site.destroy";
70
+ };
71
+ };
72
+ export interface FrameworkBusEventMap {
73
+ [MTF_EVENT_NAMES.scene.perf]: SceneEvents["perf"];
74
+ [MTF_EVENT_NAMES.scene.dirty]: SceneEvents["dirty"];
75
+ [MTF_EVENT_NAMES.scene.packedDirty]: SceneEvents["packedDirty"];
76
+ [MTF_EVENT_NAMES.scene.pick]: SceneEvents["pick"];
77
+ [MTF_EVENT_NAMES.scene.hover]: SceneEvents["hover"];
78
+ [MTF_EVENT_NAMES.scene.selection]: SceneEvents["selection"];
79
+ [MTF_EVENT_NAMES.scene.contextmenu]: SceneEvents["contextmenu"];
80
+ [MTF_EVENT_NAMES.track.hover]: TrackManagerEvents["hover"];
81
+ [MTF_EVENT_NAMES.site.contextmenu]: SiteLayerEvents["contextmenu"];
82
+ [MTF_EVENT_NAMES.site.pick]: SiteLayerEvents["pick"];
83
+ [MTF_EVENT_NAMES.site.hover]: SiteLayerEvents["hover"];
84
+ }
85
+ export interface FrameworkBusActionMap {
86
+ [MTF_ACTION_NAMES.framework.addTarget]: {
87
+ params: {
88
+ target: StandardTargetData;
89
+ };
90
+ result: StandardTargetData;
91
+ };
92
+ [MTF_ACTION_NAMES.framework.updateTarget]: {
93
+ params: {
94
+ target: StandardTargetData;
95
+ };
96
+ result: StandardTargetData;
97
+ };
98
+ [MTF_ACTION_NAMES.framework.setTargetData]: {
99
+ params: {
100
+ targets: StandardTargetData[];
101
+ };
102
+ result: void;
103
+ };
104
+ [MTF_ACTION_NAMES.framework.upsertTargetData]: {
105
+ params: {
106
+ targets: StandardTargetData[];
107
+ };
108
+ result: void;
109
+ };
110
+ [MTF_ACTION_NAMES.framework.removeTargetData]: {
111
+ params: {
112
+ ids: string[];
113
+ };
114
+ result: void;
115
+ };
116
+ [MTF_ACTION_NAMES.framework.applyTargetIncremental]: {
117
+ params: {
118
+ payload: IncrementalPayload;
119
+ };
120
+ result: void;
121
+ };
122
+ [MTF_ACTION_NAMES.framework.setTargetColor]: {
123
+ params: {
124
+ id: TargetIdInput;
125
+ color: string;
126
+ options?: TargetStyleOptions;
127
+ };
128
+ result: void;
129
+ };
130
+ [MTF_ACTION_NAMES.framework.setTargetGlow]: {
131
+ params: {
132
+ id: TargetIdInput;
133
+ enabled: boolean;
134
+ color?: string;
135
+ options?: TargetStyleOptions;
136
+ };
137
+ result: void;
138
+ };
139
+ [MTF_ACTION_NAMES.framework.hideTarget]: {
140
+ params: {
141
+ id: TargetIdInput;
142
+ options?: TargetStyleOptions;
143
+ };
144
+ result: void;
145
+ };
146
+ [MTF_ACTION_NAMES.framework.showTarget]: {
147
+ params: {
148
+ id: TargetIdInput;
149
+ options?: TargetStyleOptions;
150
+ };
151
+ result: void;
152
+ };
153
+ [MTF_ACTION_NAMES.framework.disappearTarget]: {
154
+ params: {
155
+ id: TargetIdInput;
156
+ options?: TargetStyleOptions;
157
+ };
158
+ result: void;
159
+ };
160
+ [MTF_ACTION_NAMES.framework.appearTarget]: {
161
+ params: {
162
+ id: TargetIdInput;
163
+ options?: TargetStyleOptions;
164
+ };
165
+ result: void;
166
+ };
167
+ [MTF_ACTION_NAMES.framework.setNameplateConfig]: {
168
+ params: {
169
+ config: LabelConfig;
170
+ };
171
+ result: void;
172
+ };
173
+ [MTF_ACTION_NAMES.framework.selectTarget]: {
174
+ params: {
175
+ id: string;
176
+ options?: TargetStyleOptions;
177
+ };
178
+ result: Awaited<ReturnType<MultiTargetFramework["selectTarget"]>>;
179
+ };
180
+ [MTF_ACTION_NAMES.framework.selectTargets]: {
181
+ params: {
182
+ ids: readonly string[];
183
+ options?: TargetStyleOptions;
184
+ };
185
+ result: Awaited<ReturnType<MultiTargetFramework["selectTargets"]>>;
186
+ };
187
+ [MTF_ACTION_NAMES.framework.unselectTarget]: {
188
+ params: {
189
+ id: string;
190
+ };
191
+ result: void;
192
+ };
193
+ [MTF_ACTION_NAMES.framework.clearSelection]: {
194
+ params: undefined;
195
+ result: void;
196
+ };
197
+ [MTF_ACTION_NAMES.framework.boxTarget]: {
198
+ params: {
199
+ id: TargetIdInput;
200
+ enabled?: boolean;
201
+ options?: TargetStyleOptions;
202
+ };
203
+ result: void;
204
+ };
205
+ [MTF_ACTION_NAMES.framework.unboxTarget]: {
206
+ params: {
207
+ id: TargetIdInput;
208
+ options?: TargetStyleOptions;
209
+ };
210
+ result: void;
211
+ };
212
+ [MTF_ACTION_NAMES.framework.locateTarget]: {
213
+ params: {
214
+ id: string;
215
+ options?: LocateTargetOptions;
216
+ };
217
+ result: Awaited<ReturnType<MultiTargetFramework["locateTarget"]>>;
218
+ };
219
+ [MTF_ACTION_NAMES.framework.registerContextMenuItem]: {
220
+ params: {
221
+ item: ContextMenuItemRegistration;
222
+ };
223
+ result: () => void;
224
+ };
225
+ [MTF_ACTION_NAMES.framework.showContextMenu]: {
226
+ params: {
227
+ context: ContextMenuContext;
228
+ };
229
+ result: Awaited<ReturnType<MultiTargetFramework["showContextMenu"]>>;
230
+ };
231
+ [MTF_ACTION_NAMES.framework.closeContextMenu]: {
232
+ params: undefined;
233
+ result: void;
234
+ };
235
+ [MTF_ACTION_NAMES.framework.destroy]: {
236
+ params: undefined;
237
+ result: void;
238
+ };
239
+ [MTF_ACTION_NAMES.tracks.setTracks]: {
240
+ params: {
241
+ tracks: readonly TrackRecord[];
242
+ };
243
+ result: void;
244
+ };
245
+ [MTF_ACTION_NAMES.tracks.getTracks]: {
246
+ params: {
247
+ targetIds?: readonly string[];
248
+ } | undefined;
249
+ result: TrackRecord[];
250
+ };
251
+ [MTF_ACTION_NAMES.tracks.showTracks]: {
252
+ params: {
253
+ targetIds: readonly string[];
254
+ };
255
+ result: void;
256
+ };
257
+ [MTF_ACTION_NAMES.tracks.hideTracks]: {
258
+ params: {
259
+ targetIds: readonly string[];
260
+ };
261
+ result: void;
262
+ };
263
+ [MTF_ACTION_NAMES.tracks.removeTracks]: {
264
+ params: {
265
+ targetIds: readonly string[];
266
+ };
267
+ result: void;
268
+ };
269
+ [MTF_ACTION_NAMES.tracks.clearTracks]: {
270
+ params: undefined;
271
+ result: void;
272
+ };
273
+ [MTF_ACTION_NAMES.site.setData]: {
274
+ params: {
275
+ sites: SiteData[];
276
+ };
277
+ result: void;
278
+ };
279
+ [MTF_ACTION_NAMES.site.clear]: {
280
+ params: undefined;
281
+ result: void;
282
+ };
283
+ [MTF_ACTION_NAMES.site.pickAt]: {
284
+ params: {
285
+ position: Cartesian2;
286
+ thresholdPx?: number;
287
+ };
288
+ result: SiteData | null;
289
+ };
290
+ [MTF_ACTION_NAMES.site.destroy]: {
291
+ params: undefined;
292
+ result: void;
293
+ };
294
+ }
295
+ export type FrameworkEventName = keyof FrameworkBusEventMap;
296
+ export type FrameworkEventPayload<K extends FrameworkEventName> = FrameworkBusEventMap[K];
297
+ export type FrameworkEventListener<K extends FrameworkEventName> = (payload: FrameworkBusEventMap[K]) => void;
298
+ export type FrameworkBusActionName = keyof FrameworkBusActionMap;
299
+ export type FrameworkBusActionParams<K extends FrameworkBusActionName> = FrameworkBusActionMap[K]["params"];
300
+ export type FrameworkBusActionResult<K extends FrameworkBusActionName> = FrameworkBusActionMap[K]["result"];
301
+ export interface FrameworkEventBus extends Omit<EventBus, "emit" | "on" | "off" | "register" | "invoke"> {
302
+ emit<K extends FrameworkEventName>(action: K, params: FrameworkBusEventMap[K]): void;
303
+ emit(action: string, params?: unknown): void;
304
+ on<K extends FrameworkEventName>(action: K, listener: FrameworkEventListener<K>): () => void;
305
+ on(action: string, listener: (params?: unknown) => void): () => void;
306
+ off<K extends FrameworkEventName>(action: K, listener: FrameworkEventListener<K>): void;
307
+ off(action: string, listener: (params?: unknown) => void): void;
308
+ register<K extends FrameworkBusActionName>(action: K, handler: (params: FrameworkBusActionParams<K>) => FrameworkBusActionResult<K> | Promise<FrameworkBusActionResult<K>>, options?: RegisterOptions): void;
309
+ register(action: string, handler: (params?: unknown) => unknown | Promise<unknown>, options?: RegisterOptions): void;
310
+ invoke<K extends FrameworkBusActionName>(action: K, params: FrameworkBusActionParams<K>): Promise<FrameworkBusActionResult<K>>;
311
+ invoke<T = unknown>(action: string, params?: unknown): Promise<T>;
312
+ }
313
+ export interface FrameworkBusBinding {
314
+ readonly active: boolean;
315
+ readonly owner: string;
316
+ dispose(): void;
317
+ }
318
+ export interface BindFrameworkEventBusOptions {
319
+ bus?: FrameworkEventBus;
320
+ owner?: string;
321
+ registerActions?: boolean;
322
+ bridgeEvents?: boolean;
323
+ replaceExisting?: boolean;
324
+ }
325
+ export interface BindSiteLayerEventBusOptions {
326
+ bus?: FrameworkEventBus;
327
+ owner?: string;
328
+ registerActions?: boolean;
329
+ bridgeEvents?: boolean;
330
+ replaceExisting?: boolean;
331
+ }
332
+ export declare function getFrameworkEventBus(): FrameworkEventBus;
333
+ export declare function tryGetFrameworkEventBus(): FrameworkEventBus | null;
334
+ export declare function createFrameworkEventBus(): FrameworkEventBus;
335
+ export declare function bindFrameworkEventBus(framework: MultiTargetFramework, options?: BindFrameworkEventBusOptions): FrameworkBusBinding;
336
+ export declare function bindSiteLayerEventBus(siteLayer: SiteLayer, options?: BindSiteLayerEventBusOptions): FrameworkBusBinding;
@@ -0,0 +1,22 @@
1
+ export declare const VERSION = "0.2.0";
2
+ export * from 'cesium';
3
+ export { MultiTargetScene } from './core/MultiTargetScene';
4
+ export type { PickedNodeLike, SceneContextMenuPayload, SceneEvents, SceneNodeStats, ScenePerfEvent, TickPerfEvent, WrappedScene, ResolvedConfig, } from './core/MultiTargetScene';
5
+ export { createMultiTargetFramework, MultiTargetFramework } from './core/MultiTargetFramework';
6
+ export type { ContextMenuContext, ContextMenuGroundTarget, ContextMenuItemRegistration, ContextMenuSiteTarget, ContextMenuTarget, ContextMenuTargetKind, ContextMenuTargetTarget, LocateTargetOptions, MultiTargetFrameworkApi, MultiTargetFrameworkOptions, MultiTargetTypeConfig, TargetIdInput, TargetStyleOptions, } from './core/MultiTargetFramework';
7
+ export { EventEmitter } from './core/EventEmitter';
8
+ export { bindFrameworkEventBus, bindSiteLayerEventBus, createFrameworkEventBus, getFrameworkEventBus, MTF_ACTION_NAMES, MTF_EVENT_NAMES, tryGetFrameworkEventBus, } from './events/bus';
9
+ export type { BindFrameworkEventBusOptions, BindSiteLayerEventBusOptions, FrameworkBusActionMap, FrameworkBusActionName, FrameworkBusActionParams, FrameworkBusActionResult, FrameworkBusBinding, FrameworkBusEventMap, FrameworkEventBus, FrameworkEventListener, FrameworkEventName, FrameworkEventPayload, } from './events/bus';
10
+ export { TrackManager } from './track/TrackManager';
11
+ export type { TrackManagerApi, TrackManagerEvents, TrackHoverInfo, TrackRecord } from './track/types';
12
+ export { SiteLayer } from './site/SiteLayer';
13
+ export type { RenderedTargetFrame } from './render/ModelPoolRenderer';
14
+ export type { TargetSnapshot, TargetStylePatch } from './worker/protocol';
15
+ export type { SiteContextMenuPayload, SiteCategory, SiteData, SiteLayerEvents, SiteLayerOptions, SiteRenderStats, ResolvedSiteLayerOptions, ResolvedSiteTypeConfig, SiteLayerContext, SiteTypeConfig, SiteViewBounds, } from './site/types';
16
+ export type { TargetData, StandardTargetData, TrackPoint, IncrementalPayload, PackedTargetData, PackedDiffResult, DiffResult, } from './data/types';
17
+ export type { SceneConfig, ModelAssetConfig, NodeTypeConfig, LodConfig, PoolConfig, MergeConfig, PickConfig, CullConfig, HorizonCullConfig, LabelConfig, LabelFieldConfig, LabelFieldSource, LabelStyleConfig, LabelTypeConfig, NameplateContext, ResolvedLabelConfig, FrameConfig, DataPipelineConfig, AdaptiveConfig, QualityTier, AnimatedPoolConfig, TargetDomain, } from './config/types';
18
+ export { DEFAULT_ANIMATED_POOL, DEFAULT_LOD, DEFAULT_POOL, DEFAULT_SCENE, TARGET_DOMAINS } from './config/types';
19
+ export { createClusterWorkerClient } from './cluster/clusterClient';
20
+ export type { ClusterWorkerClient, ClusterJobResult } from './cluster/clusterClient';
21
+ export { createQuadClusterer, clusterProgressive, lonLatToLocalPlane, } from './cluster/QuadCluster';
22
+ export type { QuadClusterer, ProgressiveClusterResult, ProgressiveClusterOptions, LocalPlane, LevelStat, } from './cluster/QuadCluster';
@@ -0,0 +1,20 @@
1
+ import { Cartesian3, Scene } from 'cesium';
2
+
3
+ export interface AirGroundReferenceTarget {
4
+ id: string;
5
+ position: Cartesian3;
6
+ visualScale: number;
7
+ }
8
+ export declare class AirGroundReferenceRenderer {
9
+ private readonly scene;
10
+ private readonly lineCollection;
11
+ private readonly pointCollection;
12
+ private readonly pool;
13
+ constructor(scene: Scene);
14
+ setTargets(targets: AirGroundReferenceTarget[]): void;
15
+ clear(): void;
16
+ destroy(): void;
17
+ private ensurePool;
18
+ private createSlot;
19
+ private updateSlot;
20
+ }
@@ -0,0 +1,37 @@
1
+ import { Cartesian3, Scene } from 'cesium';
2
+
3
+ /**
4
+ * InstancedGltfBatch
5
+ * ------------------
6
+ * 把一个**静态** glTF(忽略动画/蒙皮)合并成一份几何 + 贴图,按实例 modelMatrix 做 GPU
7
+ * 实例化绘制(自定义 DrawCommand + instanceDivisor)。作为 Cesium Primitive 加入
8
+ * scene.primitives,命令在场景 FBO 内执行 → 与地形/3DTiles 原生正确遮挡、移动不穿模。
9
+ * 一个 glTF URL 一个 batch;每实例一个 mat4(已相对 RTC 中心)。
10
+ */
11
+ export declare class InstancedGltfBatch {
12
+ readonly url: string;
13
+ private readonly scene;
14
+ private readonly capacity;
15
+ private readonly center;
16
+ private instMatrices;
17
+ private count;
18
+ private dirty;
19
+ ready: boolean;
20
+ show: boolean;
21
+ private groups;
22
+ private segments;
23
+ private built;
24
+ constructor(scene: Scene, url: string, capacity?: number);
25
+ /** matrices: Float32Array(count*16) 列主序,平移已相对 center。 */
26
+ setInstances(matrices: Float32Array, count: number, center: Cartesian3): void;
27
+ setVisible(v: boolean): void;
28
+ private load;
29
+ update(frameState: any): void;
30
+ private _mm?;
31
+ private _cols;
32
+ private columnView;
33
+ private build;
34
+ private makeTexture;
35
+ isDestroyed(): boolean;
36
+ destroy(): boolean;
37
+ }
@@ -0,0 +1,65 @@
1
+ import { Cartesian3, Scene } from 'cesium';
2
+ import { RenderPacket } from '../worker/protocol';
3
+ import { PointCloudRenderTypeStyle } from './PointCloudRenderer';
4
+ import * as Cesium from "cesium";
5
+ export interface InstancedSymbolRendererOptions {
6
+ typeStyles: PointCloudRenderTypeStyle[];
7
+ capacity?: number;
8
+ pixelSize?: number;
9
+ }
10
+ /**
11
+ * 原生实例化"地表定向符号"渲染器(Cesium 自定义 Primitive)。
12
+ * 消费 RenderPacket,仅渲染 点档(lodKind 0) + 视野内 + 单目标(count===1) 的条目,
13
+ * 躺地表切平面、按航向定向、恒定像素;命令在场景 FBO 内执行 → 与地形/3DTiles/原生几何
14
+ * 正确遮挡、移动不穿模。merged 簇与低/高模仍由 PointCloudRenderer / ModelPoolRenderer 处理。
15
+ */
16
+ export declare class InstancedSymbolRenderer {
17
+ private readonly scene;
18
+ private readonly capacity;
19
+ private readonly pixelSize;
20
+ private readonly iconCount;
21
+ private readonly headingOffsets;
22
+ private readonly center;
23
+ private readonly pos;
24
+ private readonly col;
25
+ private readonly ico;
26
+ private readonly ids;
27
+ private count;
28
+ private dirty;
29
+ private readonly idIndex;
30
+ private readonly headingById;
31
+ private cmd;
32
+ private posBuf;
33
+ private colBuf;
34
+ private icoBuf;
35
+ private texture;
36
+ private iconImages;
37
+ private iconReady;
38
+ show: boolean;
39
+ constructor(scene: Scene, options: InstancedSymbolRendererOptions);
40
+ setVisible(v: boolean): void;
41
+ /** 通用实例入口(站点等静态对象用)。color 为 [r,g,b,a] 0~1,可选。 */
42
+ setInstances(items: ReadonlyArray<{
43
+ id: string;
44
+ lon: number;
45
+ lat: number;
46
+ height?: number;
47
+ heading?: number;
48
+ color?: [number, number, number, number];
49
+ iconIndex?: number;
50
+ }>): void;
51
+ /** 每包重建实例(worker 已做裁剪/合并,packet 即当前应渲染集)。 */
52
+ setPacket(packet: RenderPacket): void;
53
+ getTargetFrame(id: string, result?: Cesium.Cartesian3): {
54
+ position: Cartesian3;
55
+ heading: number;
56
+ } | undefined;
57
+ /** Cesium 渲染管线每帧回调(通过 scene.primitives.add 自动调用)。 */
58
+ update(frameState: any): void;
59
+ private buildAtlas;
60
+ private build;
61
+ isDestroyed(): boolean;
62
+ destroy(): boolean;
63
+ private renderHeadingOf;
64
+ private clearSlotsFrom;
65
+ }
@@ -0,0 +1,39 @@
1
+ import { Cartesian3, Scene } from 'cesium';
2
+ import { PointCloudRenderModelStyle } from './PointCloudRenderer';
3
+
4
+ export interface LowModelInstanceCandidate {
5
+ id: string;
6
+ url: string;
7
+ modelKey: string;
8
+ modelStyle: PointCloudRenderModelStyle;
9
+ position: Cartesian3;
10
+ heading: number;
11
+ smoothMove: boolean;
12
+ moveDurationMs: number;
13
+ }
14
+ /**
15
+ * 低模渲染器:按模型 URL 分组到 InstancedGltfBatch 做 **GPU 实例化**(静态网格、不播动画)。
16
+ * 目标低模(ModelPoolRenderer)与站点低模(SiteLowModelRenderer)共用本类,故两者一并获得实例化。
17
+ * 公开 API 与运动平滑保持不变。
18
+ */
19
+ export declare class LowModelInstancedRenderer {
20
+ private readonly scene;
21
+ private readonly fadeMs;
22
+ private readonly renderIds;
23
+ private readonly states;
24
+ private readonly batches;
25
+ private readonly scratch;
26
+ private readonly center;
27
+ constructor(scene: Scene, fadeMs: number);
28
+ activeTargetIds(): string[];
29
+ setCandidates(candidates: LowModelInstanceCandidate[]): string[];
30
+ getTargetFrame(id: string, result?: Cartesian3): {
31
+ position: Cartesian3;
32
+ heading: number;
33
+ } | undefined;
34
+ update(dtSec: number): void;
35
+ clear(): void;
36
+ suspend(): void;
37
+ destroy(): void;
38
+ private applyCandidate;
39
+ }
@@ -0,0 +1,43 @@
1
+ import { Cartesian3, Viewer } from 'cesium';
2
+ import { RenderPacket } from '../worker/protocol';
3
+ import { PointCloudRenderTypeStyle } from './PointCloudRenderer';
4
+
5
+ export interface RenderedTargetFrame {
6
+ position: Cartesian3;
7
+ heading: number;
8
+ }
9
+ export declare class ModelPoolRenderer {
10
+ private readonly viewer;
11
+ private readonly styles;
12
+ private readonly lowCapacity;
13
+ private readonly highCapacity;
14
+ private readonly fadeMs;
15
+ private readonly lowModels;
16
+ private readonly airReferences;
17
+ private readonly renderIds;
18
+ private readonly states;
19
+ private readonly retiring;
20
+ private readonly scene;
21
+ private animationKeepAliveElapsedSec;
22
+ private lastLowRenderCount;
23
+ private lastHighRenderCount;
24
+ constructor(viewer: Viewer, styles: PointCloudRenderTypeStyle[], lowCapacity: number, highCapacity: number, _dynamicLowCapacity: number, fadeMs: number);
25
+ activeTargetIds(): string[];
26
+ renderStats(): {
27
+ low: number;
28
+ high: number;
29
+ };
30
+ getTargetFrame(id: string, result?: Cartesian3): RenderedTargetFrame | undefined;
31
+ setPacket(packet: RenderPacket): string[];
32
+ update(dtSec: number): void;
33
+ clear(): void;
34
+ suspend(): void;
35
+ destroy(): void;
36
+ private applyCandidate;
37
+ private loadModel;
38
+ private removeState;
39
+ private retireStateModel;
40
+ private ensureAnimationClock;
41
+ private ensureModelAnimations;
42
+ private updateAirReferences;
43
+ }