gl-draw 0.17.11 → 0.18.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.
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
- import { Box3 } from 'three';
1
+ import { AmbientLight } from 'three';
2
2
  import { BufferGeometry } from 'three';
3
3
  import { BufferGeometryEventMap } from 'three';
4
- import { BufferGeometryLoader } from 'three';
5
4
  import { Camera } from 'three';
6
5
  import { Color } from 'three';
7
6
  import { ColorRepresentation } from 'three';
8
7
  import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer.js';
9
8
  import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer.js';
9
+ import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
10
10
  import { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
11
+ import { CSS3DSprite } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
11
12
  import { DataTexture } from 'three';
12
13
  import { default as default_2 } from 'stats-gl';
13
14
  import { DirectionalLight } from 'three';
@@ -19,11 +20,12 @@ import { ExtrudeGeometryOptions as ExtrudeGeometryOptions_2 } from 'three';
19
20
  import { geoEquirectangular } from 'd3-geo';
20
21
  import { geoMercator } from 'd3-geo';
21
22
  import { GeoProjection } from 'd3-geo';
23
+ import { Group } from 'three';
22
24
  import { HemisphereLight } from 'three';
25
+ import { InstancedMesh } from 'three';
23
26
  import { Intersection } from 'three';
24
27
  import { Layers } from 'three';
25
28
  import { LineMaterial as Line2Material } from 'three/examples/jsm/lines/LineMaterial.js';
26
- import { LineMaterialParameters } from 'three/examples/jsm/lines/LineMaterial.js';
27
29
  import { LineSegmentsGeometry } from 'three/examples/jsm/lines/LineSegmentsGeometry.js';
28
30
  import { LoadingManager } from 'three';
29
31
  import { Material } from 'three';
@@ -34,6 +36,7 @@ import { MeshStandardMaterial } from 'three';
34
36
  import { NormalBufferAttributes } from 'three';
35
37
  import { Object3D } from 'three';
36
38
  import { Object3DEventMap } from 'three';
39
+ import { Object3DJSON } from 'three';
37
40
  import { OrthographicCamera } from 'three';
38
41
  import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass.js';
39
42
  import { PerspectiveCamera } from 'three';
@@ -89,6 +92,13 @@ declare const ACTION: Readonly<{
89
92
 
90
93
  declare type ACTION = number;
91
94
 
95
+ export declare class AmbientLightObject extends BaseObject<AmbientLight> {
96
+ objectType: string;
97
+ constructor(lightOrColor?: AmbientLight | string | number, intensity?: number);
98
+ }
99
+
100
+ declare function analyzeSceneJsonSize(sceneJson: any): void;
101
+
92
102
  declare function applyTextureColorSpace({ node, material, texture, }: ColorCorrectionOptions): void;
93
103
 
94
104
  declare interface Asset extends AssetOptions {
@@ -104,29 +114,95 @@ declare interface AssetOptions {
104
114
  responseType?: string;
105
115
  }
106
116
 
107
- export declare class BaseObject extends UseMaterial {
117
+ declare class AttributesWorker {
118
+ options: Options_15 & {
119
+ cacheVersion: string;
120
+ dbName: string;
121
+ maxCacheSize: number;
122
+ };
123
+ pool: WorkerPool;
124
+ cacheManager: CacheManager;
125
+ constructor(options?: Options_15);
126
+ geoGeometry(type: 'extrudePolygon', options: GeoGeometryOptions & {
127
+ mesaage: ExtrudePolygonMessage;
128
+ }): Promise<BufferGeometry>;
129
+ geoGeometry(type: 'conicPolygon', options: GeoGeometryOptions & {
130
+ mesaage: ConicPolygonMessage;
131
+ }): Promise<BufferGeometry>;
132
+ geoGeometry(type: 'conicLine', options: GeoGeometryOptions & {
133
+ mesaage: ConicLineMessage;
134
+ }): Promise<BufferGeometry>;
135
+ geoGeometry(type: 'line', options: GeoGeometryOptions & {
136
+ mesaage: LineMessage;
137
+ }): Promise<BufferGeometry>;
138
+ getCachedGeometry(options: Pick<GeoGeometryOptions, 'cacheKey'>): Promise<ReturnType<typeof _default_2> | null>;
139
+ saveCache(): Promise<void>;
140
+ /**
141
+ * 批量保存待更新的元数据
142
+ */
143
+ flushMetadata(): Promise<void>;
144
+ /**
145
+ * 获取缓存统计信息
146
+ */
147
+ getCacheStats(): Promise<{
148
+ total: number;
149
+ maxSize: number;
150
+ usage: number;
151
+ items: {
152
+ key: IDBValidKey;
153
+ metadata: CacheMetadata;
154
+ }[];
155
+ }>;
156
+ /**
157
+ * 手动清空所有缓存
158
+ */
159
+ clearCache(): Promise<void>;
160
+ /**
161
+ * 检查存储配额使用情况
162
+ */
163
+ checkStorageQuota(): Promise<{
164
+ usage: number;
165
+ quota: number;
166
+ percentUsed: number;
167
+ } | null>;
168
+ flattenCoordinates(coordinatesArr: number[][][], metaArray?: number[][], _globalMeta?: number[], useFloat64Array?: boolean): {
169
+ flat: Float64Array | Float32Array;
170
+ lengths: number[];
171
+ metaLength: number;
172
+ };
173
+ dispose(): void;
174
+ }
175
+
176
+ export declare class BaseObject<T extends Object3D = Object3D> extends UseMaterial {
108
177
  key: string;
109
- keyType?: string;
110
- keyUId?: string;
111
- keyName?: string;
178
+ get name(): string;
179
+ set name(v: string);
112
180
  objectType: string;
113
- objectOptions?: Record<string, any>;
181
+ options: any;
182
+ private _keyType;
183
+ get keyType(): string;
184
+ set keyType(v: string);
185
+ uuid: string;
114
186
  pencil: Pencil;
115
187
  lead: Lead;
116
188
  mList: MList;
117
- object3d: Object3D;
189
+ object3d: T;
118
190
  userData: Record<string, any>;
119
191
  isPrefab: boolean;
120
192
  isInstantiate: boolean;
121
193
  isBloom: boolean;
122
194
  isBaseObject: boolean;
195
+ constructor(object3d: T);
123
196
  get parent(): BaseObject | null;
124
- get children(): BaseObject[];
197
+ get children(): BaseObject<Object3D<Object3DEventMap>>[];
125
198
  get position(): Vector3;
126
199
  get rotation(): Euler;
127
200
  get scale(): Vector3;
128
- lookAt(vector: Vector3 | [number, number, number]): void;
129
- add(...object: Object3D[]): void;
201
+ lookAt(vector: Vector3): void;
202
+ lookAt(x: number, y: number, z: number): void;
203
+ draw<C extends new (...args: any[]) => BaseObject>(ClassRef: C, ...args: ConstructorParameters<C>): Promise<InstanceType<C>>;
204
+ drawPrefab<C extends new (...args: any[]) => BaseObject>(ClassRef: C, ...args: ConstructorParameters<C>): Promise<InstanceType<C>>;
205
+ add(...objects: (Object3D | BaseObject)[]): void;
130
206
  remove(...object: Object3D[]): void;
131
207
  get visible(): boolean;
132
208
  /**
@@ -147,13 +223,6 @@ export declare class BaseObject extends UseMaterial {
147
223
  * 递归启用 layers(只有自己 visible=true 时才 enable 并继续递归)
148
224
  */
149
225
  protected _enableLayersRecursive(): void;
150
- createGroup(): this;
151
- createMesh(...args: ConstructorParameters<typeof Mesh>): this;
152
- createPoints(...args: ConstructorParameters<typeof Points>): this;
153
- createCSS2DObject(dom: HTMLElement): this;
154
- createCSS3DObject(dom: HTMLElement): this;
155
- createCSS3DSprite(dom: HTMLElement): this;
156
- createSprite(material: SpriteMaterial): this;
157
226
  attach(...args: BaseObject[]): this;
158
227
  getSize(): {
159
228
  min: Vector3;
@@ -164,10 +233,7 @@ export declare class BaseObject extends UseMaterial {
164
233
  setTop(onTop: number): void;
165
234
  traverse(fn: (o: BaseObject) => void): void;
166
235
  instantiate(ops?: {
167
- key?: string;
168
- uId?: string;
169
236
  target?: BaseObject;
170
- create?: ((...args: any[]) => any) | boolean;
171
237
  recursive?: boolean;
172
238
  instancedAttr?: {
173
239
  position: Vector3 | number[] | [number, number, number];
@@ -176,10 +242,14 @@ export declare class BaseObject extends UseMaterial {
176
242
  cloneMaterial?: boolean;
177
243
  }): Promise<this>;
178
244
  erase(): void;
245
+ setKey(ops: {
246
+ keyType?: string;
247
+ uuid?: string;
248
+ syncParentUuid?: boolean;
249
+ }): void;
179
250
  handleMaterialChange(mat: Material | null): void;
180
251
  enableBloom(traverse?: boolean): void;
181
252
  disableBloom(traverse?: boolean): void;
182
- disposeTrack: boolean;
183
253
  private isDispose;
184
254
  dispose(): void;
185
255
  }
@@ -201,11 +271,11 @@ declare class CacheManager {
201
271
  /**
202
272
  * 添加缓存到内存队列
203
273
  */
204
- addToCache(cacheKey: string, cacheVersion: string, data: any): void;
274
+ addToCache(cacheKey: string, data: any): void;
205
275
  /**
206
276
  * 记录待更新的缓存元数据(非阻塞)
207
277
  */
208
- recordMetadataUpdate(cacheKey: string, size: number): void;
278
+ recordMetadataUpdate(cacheKey: string, size?: number): void;
209
279
  /**
210
280
  * 批量保存待更新的元数据
211
281
  */
@@ -217,7 +287,7 @@ declare class CacheManager {
217
287
  /**
218
288
  * 从缓存中获取数据
219
289
  */
220
- get<T = any>(cacheKey: string, cacheVersion?: string): Promise<T | undefined>;
290
+ get<T = any>(cacheKey: string): Promise<T | undefined>;
221
291
  /**
222
292
  * 保存内存缓存到 IndexedDB
223
293
  */
@@ -261,7 +331,6 @@ declare interface CacheManagerOptions {
261
331
  declare interface CacheMetadata {
262
332
  lastAccessed: number;
263
333
  accessCount: number;
264
- size: number;
265
334
  }
266
335
 
267
336
  declare class CameraControls extends EventDispatcher {
@@ -1314,21 +1383,21 @@ declare class CollisionManager {
1314
1383
  * 添加标签到碰撞检测系统
1315
1384
  * @param node Node 实例
1316
1385
  */
1317
- add(node: Node_2, options?: {
1386
+ add(node: NodeObject, options?: {
1318
1387
  priority?: number;
1319
1388
  }): void;
1320
1389
  /**
1321
1390
  * 移除标签
1322
1391
  */
1323
- remove(node: Node_2): void;
1392
+ remove(node: NodeObject): void;
1324
1393
  /**
1325
1394
  * 更新标签优先级
1326
1395
  */
1327
- setPriority(node: Node_2, priority: number): void;
1396
+ setPriority(node: NodeObject, priority: number): void;
1328
1397
  /**
1329
1398
  * 批量添加标签
1330
1399
  */
1331
- addBatch(nodes: Node_2[], priorityFn?: (node: Node_2, index: number) => number): void;
1400
+ addBatch(nodes: NodeObject[], priorityFn?: (node: NodeObject, index: number) => number): void;
1332
1401
  /**
1333
1402
  * 启用/禁用碰撞检测
1334
1403
  */
@@ -1424,7 +1493,7 @@ declare class Composer {
1424
1493
  setPremultiplieAlpha(premultiplieAlpha: boolean): void;
1425
1494
  addSSAOPass(params: SSAOParams): void;
1426
1495
  addBloomPass(params: BloomParams): void;
1427
- bloomSelection: Set<BaseObject>;
1496
+ bloomSelection: Set<BaseObject<Object3D<Object3DEventMap>>>;
1428
1497
  bloomLayer: Layers;
1429
1498
  bloomMaterials: Record<string, Material | Material[]>;
1430
1499
  bloomVisible: Record<string, boolean>;
@@ -1453,30 +1522,20 @@ declare interface ComposerParams {
1453
1522
  premultiplieAlpha: boolean;
1454
1523
  }
1455
1524
 
1456
- declare interface ConicLineOptions extends GetCoordinatesArrOptions {
1457
- meta?: number[][];
1525
+ declare interface ConicLineMessage {
1526
+ projection?: 'cesium' | 'sphere';
1458
1527
  useGroups?: 0 | 1 | 2;
1459
- projection?: any;
1460
- splitPolygons?: number;
1461
- line2?: boolean;
1462
1528
  useRTC?: boolean;
1463
1529
  }
1464
1530
 
1465
- export declare class ConicPolygon extends BaseObject {
1466
- options: Parameters_2;
1467
- constructor(options: Parameters_2);
1468
- create(): void;
1469
- }
1470
-
1471
- declare interface ConicPolygonOptions extends GetCoordinatesArrOptions {
1472
- meta?: number[][];
1531
+ declare interface ConicPolygonMessage {
1473
1532
  useGroups?: 0 | 1 | 2;
1474
1533
  hasTop?: boolean;
1475
1534
  topFirst?: boolean;
1476
1535
  hasBottom?: boolean;
1477
1536
  hasSide?: boolean;
1478
1537
  curvatureResolution?: number;
1479
- projection?: ProjectionOptions | 'cesium' | 'sphere';
1538
+ projection?: 'cesium' | 'sphere';
1480
1539
  bbox?: number[];
1481
1540
  splitPolygons?: number;
1482
1541
  }
@@ -1498,6 +1557,23 @@ declare interface ControlsParams {
1498
1557
  domElement: HTMLElement;
1499
1558
  }
1500
1559
 
1560
+ export declare class CSS2DObjectObject extends BaseObject<CSS2DObject> {
1561
+ objectType: string;
1562
+ constructor(domOrObject?: HTMLElement | CSS2DObject);
1563
+ }
1564
+
1565
+ export declare class CSS3DObjectObject extends BaseObject<CSS3DObject> {
1566
+ objectType: string;
1567
+ constructor(domOrObject?: HTMLElement | CSS3DObject);
1568
+ }
1569
+
1570
+ export declare class CSS3DSpriteObject extends BaseObject<CSS3DSprite> {
1571
+ objectType: string;
1572
+ constructor(domOrSprite?: HTMLElement | CSS3DSprite);
1573
+ }
1574
+
1575
+ declare type CSSObject = CSS2DObject | CSS3DObject | CSS3DSprite;
1576
+
1501
1577
  declare class CSSRendererController {
1502
1578
  css2Drenderer?: CSS2DRenderer;
1503
1579
  css3Drenderer?: CSS3DRenderer;
@@ -1537,6 +1613,13 @@ declare const _default: (composer: EffectComposer) => ShaderPass;
1537
1613
 
1538
1614
  declare const _default_2: (attributes: any) => BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>;
1539
1615
 
1616
+ export declare class DirectionalLightObject extends BaseObject<DirectionalLight> {
1617
+ objectType: string;
1618
+ constructor(lightOrColor?: DirectionalLight | string | number, intensity?: number);
1619
+ render(): void;
1620
+ dispose(): void;
1621
+ }
1622
+
1540
1623
  declare interface DispatcherEvent {
1541
1624
  type: string;
1542
1625
  [key: string]: any;
@@ -1551,6 +1634,11 @@ declare const DOLLY_DIRECTION: {
1551
1634
  declare type DOLLY_DIRECTION =
1552
1635
  (typeof DOLLY_DIRECTION)[keyof typeof DOLLY_DIRECTION];
1553
1636
 
1637
+ declare interface DrawOptions {
1638
+ target?: BaseObject | string | null;
1639
+ prefab?: boolean;
1640
+ }
1641
+
1554
1642
  export declare const effect: {
1555
1643
  Scan: typeof ScanEffect;
1556
1644
  Scan2: typeof ScanEffect_2;
@@ -1560,10 +1648,11 @@ export declare const effect: {
1560
1648
  * Cesium 风格的 WGS84 椭球体地球
1561
1649
  * 使用与 Cesium 相同的坐标系和 WGS84 椭球体参数
1562
1650
  */
1563
- export declare class Ellipsoid extends BaseObject {
1651
+ export declare class EllipsoidObject extends MeshObject {
1652
+ objectType: string;
1564
1653
  options: EllipsoidOptions;
1565
1654
  constructor(options?: EllipsoidOptions);
1566
- create(): Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material, Object3DEventMap>;
1655
+ create(): void;
1567
1656
  }
1568
1657
 
1569
1658
  declare interface EllipsoidOptions {
@@ -1660,26 +1749,47 @@ declare interface ExtrudeGeometryOptions extends ExtrudeGeometryOptions_2 {
1660
1749
  hasSide?: boolean;
1661
1750
  }
1662
1751
 
1663
- export declare class ExtrudePolygon extends BaseObject {
1664
- options: Omit<Options_18, 'depth'> & {
1665
- depth: number | number[];
1666
- };
1667
- constructor(options: Options_18);
1752
+ declare interface ExtrudePolygonMessage {
1753
+ bbox?: number[];
1754
+ projection?: ProjectionOptions;
1755
+ useGroups?: 0 | 1 | 2;
1756
+ hasTop?: boolean;
1757
+ hasBottom?: boolean;
1758
+ hasSide?: boolean;
1759
+ splitPolygons?: number;
1760
+ topSegments?: number;
1761
+ }
1762
+
1763
+ export declare class ExtrudePolygonObject extends MeshObject {
1764
+ objectType: string;
1765
+ options: ExtrudePolygonObjectOptions;
1766
+ constructor(options: ExtrudePolygonObjectOptions);
1668
1767
  create(): Promise<void>;
1669
- addGeometries(geometries: BufferGeometry[]): void;
1670
- setTextureAnisotropic(texture: Texture, maxAnisotropy?: number): void;
1768
+ private createWithWorker;
1769
+ private createLocal;
1671
1770
  }
1672
1771
 
1673
- declare interface ExtrudePolygonOptions extends GetCoordinatesArrOptions {
1674
- meta?: number[][];
1675
- bbox?: number[];
1676
- projection?: ProjectionOptions;
1772
+ export declare interface ExtrudePolygonObjectOptions {
1773
+ material?: Material | Material[];
1774
+ geometry?: BufferGeometry;
1775
+ coordinatesArr?: number[][][];
1776
+ metaArray?: number[][];
1777
+ globalMeta?: number[];
1778
+ useWorker?: boolean;
1677
1779
  useGroups?: 0 | 1 | 2;
1678
1780
  hasTop?: boolean;
1679
1781
  hasBottom?: boolean;
1680
1782
  hasSide?: boolean;
1783
+ bbox?: number[];
1784
+ projection?: ProjectionOptions | 'cesium' | 'sphere';
1681
1785
  splitPolygons?: number;
1682
1786
  topSegments?: number;
1787
+ cacheKey?: string;
1788
+ userData?: Record<string, any>;
1789
+ curvatureResolution?: number;
1790
+ topFirst?: boolean;
1791
+ useFloat64Array?: boolean;
1792
+ onCacheMiss?: (options: Partial<ExtrudePolygonObjectOptions>) => Partial<ExtrudePolygonObjectOptions> | Promise<Partial<ExtrudePolygonObjectOptions>>;
1683
1793
  }
1684
1794
 
1685
1795
  declare interface FitToOptions {
@@ -1693,6 +1803,7 @@ declare interface FitToOptions {
1693
1803
  declare interface GeoGeometryOptions extends Options_15 {
1694
1804
  coordinatesArr: number[][][];
1695
1805
  metaArray?: number[][];
1806
+ globalMeta?: number[];
1696
1807
  cacheKey?: string;
1697
1808
  userData?: Record<string, any>;
1698
1809
  useFloat64Array?: boolean;
@@ -1701,15 +1812,9 @@ declare interface GeoGeometryOptions extends Options_15 {
1701
1812
 
1702
1813
  declare function geoWinkel3(): GeoProjection;
1703
1814
 
1704
- declare interface GetCoordinatesArrOptions {
1705
- coordinates?: Float64Array | Float32Array;
1706
- lengths?: number[];
1707
- dimension?: number;
1708
- metaLength?: number;
1709
- }
1710
-
1711
- export declare class Group extends BaseObject {
1712
- create(): void;
1815
+ export declare class GroupObject extends BaseObject<Group> {
1816
+ objectType: string;
1817
+ constructor(group?: Group<Object3DEventMap>);
1713
1818
  render(): void;
1714
1819
  }
1715
1820
 
@@ -1728,9 +1833,17 @@ declare class HelperController {
1728
1833
  dispose(): void;
1729
1834
  }
1730
1835
 
1731
- declare function isPlainObject(o: any): boolean;
1836
+ export declare class HemisphereLightObject extends BaseObject<HemisphereLight> {
1837
+ objectType: string;
1838
+ constructor(skyColorOrLight?: HemisphereLight | string | number, groundColor?: string | number, intensity?: number);
1839
+ }
1840
+
1841
+ export declare class InstancedMeshObject<G extends BufferGeometry = BufferGeometry, M extends Material | Material[] = Material | Material[]> extends BaseObject<InstancedMesh<G, M>> {
1842
+ objectType: string;
1843
+ constructor(geometryOrInstancedMesh?: G | InstancedMesh<G, M>, material?: M, count?: number);
1844
+ }
1732
1845
 
1733
- declare type KeyOf<T extends object> = Extract<keyof T, string>;
1846
+ declare function isPlainObject(o: any): boolean;
1734
1847
 
1735
1848
  declare const KNOWN_ASSET_TYPES: {
1736
1849
  readonly images: readonly ["png", "jpg", "jpeg", "ico", "webp", "avif"];
@@ -1742,72 +1855,70 @@ declare const KNOWN_ASSET_TYPES: {
1742
1855
  readonly lottie: readonly ["lottie.json"];
1743
1856
  };
1744
1857
 
1745
- export declare class Lead<T extends ObjectFactoryMap = any> extends Pick_2 {
1746
- objMap: Map<Object3D<Object3DEventMap>, BaseObject>;
1747
- objects: Map<string, BaseObject>;
1748
- objectsPm: Map<BaseObject, Promise<void>>;
1749
- objectWrapChindIdMap: Map<BaseObject, number>;
1858
+ export declare class Lead extends Pick_2 {
1859
+ objMap: Map<Object3D<Object3DEventMap>, BaseObject<Object3D<Object3DEventMap>>>;
1860
+ objects: Map<string, BaseObject<Object3D<Object3DEventMap>>>;
1861
+ objectsPm: Map<BaseObject<Object3D<Object3DEventMap>>, Promise<void>>;
1862
+ objectWrapChindIdMap: Map<BaseObject<Object3D<Object3DEventMap>>, number>;
1750
1863
  scene: BaseObject;
1751
1864
  mList: MList;
1752
1865
  group: BaseObject;
1753
1866
  prefabGroup: BaseObject;
1754
- private objectNamesToFactories;
1755
1867
  get objectsPromise(): MapIterator<Promise<void>>;
1756
1868
  constructor(pencil: Pencil, ops: {
1757
1869
  scene: Scene;
1758
1870
  mList: MList;
1759
1871
  });
1760
- createBaseObject(object3d: Object3D, opsO?: {
1761
- key?: string;
1762
- name?: string;
1763
- target?: BaseObject | null;
1764
- mList?: boolean;
1765
- }): BaseObject;
1766
- init<K extends ObjectFactoryMap>(objectFactories: K): Lead<K>;
1767
- getObject<Y extends KeyOf<T>>(nameOrigin: Y, options?: {
1872
+ /* Excluded from this release type: register */
1873
+ /**
1874
+ * 内部初始化核心对象 (Scene, Camera 等)
1875
+ * 模拟 add 的部分逻辑,但不走完整的 spawn 流程
1876
+ */
1877
+ private _initCoreObject;
1878
+ draw<C extends new (...args: any[]) => BaseObject>(ClassRef: C, ...args: ConstructorParameters<C>): Promise<InstanceType<C>>;
1879
+ draw<C extends new (...args: any[]) => BaseObject>(options: DrawOptions, ClassRef: C, ...args: ConstructorParameters<C>): Promise<InstanceType<C>>;
1880
+ /**
1881
+ * 将原生 Object3D 包装为 BaseObject (Wrapper Pattern)
1882
+ * 如果已存在包装器,则返回现有实例
1883
+ */
1884
+ wrap(object3d: Object3D): BaseObject;
1885
+ /**
1886
+ * 统一的添加入口
1887
+ * 替代原有的 addBaseObject 私有方法,公开给 spawn 使用
1888
+ */
1889
+ add<T extends BaseObject = BaseObject>(baseObject: T, target?: BaseObject | string | null): Promise<T>;
1890
+ private _addLogic;
1891
+ getObject<T extends BaseObject = BaseObject>(nameOrigin: string, options?: {
1768
1892
  key: string;
1769
- }): InstanceType<T[Y]> | undefined;
1770
- getAllObject<Y extends KeyOf<T>>(nameOrigin: Y, options?: {
1893
+ }): T | undefined;
1894
+ getAllObject<T extends BaseObject = BaseObject>(nameOrigin: string, options?: {
1771
1895
  key: string;
1772
- }): InstanceType<T[Y]>[];
1773
- draw<Y extends KeyOf<T>, U extends KeyOf<T> | `${KeyOf<T>}#${string}` | BaseObject | null>(nameOrigin: Y, options?: ConstructorParameters<T[Y]>[0] extends undefined ? {
1774
- keyType?: string;
1775
- key?: string;
1776
- uId?: string;
1777
- target?: U;
1778
- onTop?: number;
1779
- create?: ((...args: any[]) => any) | boolean;
1780
- prefab?: boolean;
1781
- } : ConstructorParameters<T[Y]>[0] & {
1896
+ }): T[];
1897
+ /**
1898
+ * 更新对象的 Key
1899
+ * 通常用于重命名
1900
+ */
1901
+ updateBaseObjectKey(baseObject: BaseObject, ops?: {
1782
1902
  keyType?: string;
1783
- key?: string;
1784
- uId?: string;
1785
- target?: U;
1786
- onTop?: number;
1787
- create?: ((...args: any[]) => any) | boolean;
1788
- prefab?: boolean;
1789
- }, target?: U): Promise<InstanceType<T[Y]>>;
1790
- private setBaseObjectKey;
1791
- updateBaseObjectKey(baseObject: BaseObject, ops: {
1792
- type?: string;
1793
- key?: string;
1794
- uId?: string;
1795
- }): string;
1796
- private addBaseObject;
1797
- erase(...args: (KeyOf<T> | `${KeyOf<T>}#${string}` | InstanceType<T[keyof T]>)[]): void;
1798
- eraseWithoutMaterial(...args: (KeyOf<T> | `${KeyOf<T>}#${string}` | InstanceType<T[keyof T]>)[]): void;
1903
+ uuid?: string;
1904
+ }): string | undefined;
1905
+ erase(...args: (string | BaseObject)[]): void;
1906
+ eraseWithoutMaterial(...args: (string | BaseObject)[]): void;
1799
1907
  private handleErase;
1800
1908
  update(delta: number, elapsed: number): void;
1801
1909
  setSize(width: number, height: number): void;
1802
1910
  eraseAll(): void;
1911
+ private _serializer;
1912
+ exportScene(...args: Parameters<SceneSerializer['exportScene']>): string;
1913
+ restoreScene(...args: Parameters<SceneSerializer['restoreScene']>): Promise<void>;
1803
1914
  dispose(): void;
1804
1915
  }
1805
1916
 
1806
1917
  declare class LeadPages extends OrigonPages<Lead> {
1807
1918
  options: Options_13;
1808
- get lead(): Lead<any>;
1919
+ get lead(): Lead;
1809
1920
  constructor(options: Options_13);
1810
- addLead(scene: Scene, mList: MList, index?: number): Lead<any>;
1921
+ addLead(scene: Scene, mList: MList, index?: number): Lead;
1811
1922
  removePage(index: number): void;
1812
1923
  setPageActive(index: number): void;
1813
1924
  setSize(width: number, height: number): void;
@@ -1817,33 +1928,24 @@ declare type LeadParams = {};
1817
1928
 
1818
1929
  declare type LeadParams_2 = {};
1819
1930
 
1820
- export declare class Light extends BaseObject {
1821
- options: LightOptions;
1822
- directionalLight?: DirectionalLight;
1823
- spotLight?: SpotLight;
1824
- pointLight?: PointLight;
1825
- hemisphereLight?: HemisphereLight;
1826
- rectAreaLight?: RectAreaLight;
1827
- rectAreaLightUniformsLibInit: boolean;
1828
- constructor(options: LightOptions);
1829
- create(): void;
1830
- render(): void;
1831
- dispose(): void;
1832
- }
1931
+ export { Line2Material }
1833
1932
 
1834
- declare interface LightOptions {
1835
- type: 'AmbientLight' | 'DirectionalLight' | 'PointLight' | 'SpotLight' | 'RectAreaLight' | 'HemisphereLight';
1836
- [key: string]: any;
1933
+ declare interface LineMessage {
1934
+ projection?: ProjectionOptions;
1935
+ useGroups?: 0 | 1 | 2;
1936
+ splitPolygons?: number;
1837
1937
  }
1838
1938
 
1839
- export declare class Line extends BaseObject {
1840
- options: Options_19;
1841
- constructor(options?: Partial<Options_19>);
1939
+ export declare class LineObject extends MeshObject<MeshLineGeometry | BufferGeometry, MeshLineMaterial> {
1940
+ objectType: string;
1941
+ options: LineObjectOptions;
1942
+ constructor(options?: Partial<LineObjectOptions>);
1842
1943
  get material(): MeshLineMaterial;
1843
1944
  create(): Promise<void>;
1945
+ private createWithWorker;
1946
+ private createLocal;
1844
1947
  setGeometry(nodes: PointsInput_2, setPointWidth?: (p: number) => any, useRTC?: boolean, rtcCenter?: Vector3): void;
1845
1948
  createMaterial(materialOptions: Omit<MeshLineMaterialParameters, 'resolution'>): MeshLineMaterial;
1846
- addGeometries(geometries: BufferGeometry[]): void;
1847
1949
  resize(w: number, h: number): void;
1848
1950
  handleMaterialChange(mat: MeshLineMaterial | null): void;
1849
1951
  animate({ duration, delay, repeat, lineLoop, onRepeat, onUpdate, onComplete, startShow, }?: {
@@ -1861,22 +1963,23 @@ export declare class Line extends BaseObject {
1861
1963
  update(): void;
1862
1964
  }
1863
1965
 
1864
- export declare class Line2 extends BaseObject {
1865
- options: Options_20;
1866
- constructor(options?: Partial<Options_20>);
1867
- get material(): Line2Material;
1868
- create(): Promise<void>;
1869
- createMaterial(materialOptions: LineMaterialParameters): Line2Material;
1870
- }
1871
-
1872
- export { Line2Material }
1873
-
1874
- declare interface LineOptions extends GetCoordinatesArrOptions {
1875
- meta?: number[][];
1876
- projection?: ProjectionOptions;
1877
- useGroups?: 0 | 1 | 2;
1966
+ declare interface LineObjectOptions {
1967
+ geometry?: BufferGeometry;
1968
+ material?: MeshLineMaterial;
1969
+ coordinatesArr?: number[][][];
1970
+ metaArray?: number[][];
1971
+ globalMeta?: number[];
1972
+ useWorker?: boolean;
1973
+ projection?: ProjectionOptions | 'cesium' | 'sphere';
1878
1974
  splitPolygons?: number;
1879
- line2?: boolean;
1975
+ useGroups?: 0 | 1 | 2;
1976
+ setPointWidth?: (p: number) => any;
1977
+ lineWidthArr?: number[];
1978
+ cacheKey?: string;
1979
+ userData?: Record<string, any>;
1980
+ useFloat64Array?: boolean;
1981
+ useRTC?: boolean;
1982
+ onCacheMiss?: (options: Partial<LineObjectOptions>) => Partial<LineObjectOptions> | Promise<Partial<LineObjectOptions>>;
1880
1983
  }
1881
1984
 
1882
1985
  export { LineSegmentsGeometry }
@@ -1907,7 +2010,7 @@ declare class Loader {
1907
2010
  getAsset(src: `${string}.${TypeGzipJSON}`): any;
1908
2011
  getAsset(src: `${string}.${TypeEXR}`): DataTexture;
1909
2012
  getAsset(src: string): Texture;
1910
- getAssetType(src: string): "json" | "gltf" | "exr" | "images" | "media" | "gzipJson" | "lottie" | undefined;
2013
+ getAssetType(src: string): "images" | "json" | "gltf" | "exr" | "media" | "gzipJson" | "lottie" | undefined;
1911
2014
  getLoader(type: string, options?: AssetOptions): any;
1912
2015
  add(src: string | string[], options?: AssetOptions): void;
1913
2016
  getSrcByAsset(asset: Texture | Object3D | any, assets?: Map<string, any>): string | undefined;
@@ -2009,6 +2112,11 @@ export declare class MeshLineMaterial extends ShaderMaterial {
2009
2112
  * @param objectMatrixWorld 物体的世界矩阵(可选,用于支持缩放和旋转)
2010
2113
  */
2011
2114
  updateRTC(center: Vector3, cameraMatrixWorld: Matrix4, objectMatrixWorld?: Matrix4): void;
2115
+ /**
2116
+ * 从 Three.js 原生解析好的 ShaderMaterial 中还原出 MeshLineMaterial
2117
+ * 用于反序列化场景
2118
+ */
2119
+ static fromParsedShaderMaterial(shaderMat: ShaderMaterial): MeshLineMaterial;
2012
2120
  }
2013
2121
 
2014
2122
  declare interface MeshLineMaterialParameters extends ShaderMaterialParameters {
@@ -2072,11 +2180,17 @@ declare interface MeshLineMaterialParameters extends ShaderMaterialParameters {
2072
2180
 
2073
2181
  export declare function MeshLineRaycast(this: Mesh<BufferGeometry, MeshLineMaterial>, raycaster: Raycaster, intersects: Intersection[]): void;
2074
2182
 
2183
+ export declare class MeshObject<G extends BufferGeometry = BufferGeometry, M extends Material | Material[] = Material | Material[]> extends BaseObject<Mesh<G, M>> {
2184
+ objectType: string;
2185
+ constructor(geometryOrMesh?: G | Mesh<G, M>, material?: M);
2186
+ }
2187
+
2075
2188
  declare class MList {
2076
2189
  pencil: Pencil;
2077
2190
  private materials;
2078
2191
  fixBaseObjects: Map<string, BaseObject>;
2079
2192
  private materialBaseObjectMap;
2193
+ private static _emptyGeometry;
2080
2194
  constructor(pencil: Pencil);
2081
2195
  add(key: string, material: Material): void;
2082
2196
  get(key: string): Material | undefined;
@@ -2097,7 +2211,7 @@ declare class MList {
2097
2211
  private material2array;
2098
2212
  addBaseObjectMap(object: BaseObject): void;
2099
2213
  rmBaseObjectMap(object: BaseObject, targetMaterial?: Material | Material[], disposeMaterial?: boolean): void;
2100
- getBaseObjectMap(material: Material): Set<BaseObject>;
2214
+ getBaseObjectMap(material: Material): Set<BaseObject<Object3D<Object3DEventMap>>>;
2101
2215
  syncChangeMaterial(oldMaterial: Material, material: Material): void;
2102
2216
  dispose(): void;
2103
2217
  }
@@ -2158,7 +2272,7 @@ declare type multiTouchAction =
2158
2272
  | typeof ACTION.TOUCH_OFFSET
2159
2273
  | typeof ACTION.NONE;
2160
2274
 
2161
- declare class Node_2 extends BaseObject {
2275
+ export declare class NodeObject extends BaseObject<CSSObject> {
2162
2276
  objectType: string;
2163
2277
  options: Options_7;
2164
2278
  pickObject?: Sprite;
@@ -2167,7 +2281,6 @@ declare class Node_2 extends BaseObject {
2167
2281
  private static sharedObserver?;
2168
2282
  private static observerMap;
2169
2283
  constructor(options: Options_7);
2170
- create(): void;
2171
2284
  /**
2172
2285
  * 启用碰撞检测跟踪
2173
2286
  * @param priority 优先级,数值越大越优先显示,默认 0
@@ -2185,13 +2298,6 @@ declare class Node_2 extends BaseObject {
2185
2298
  onPointerEvent(type: PickFunctionsItem['type'], cb: PickFunctionsItem['cb']): void;
2186
2299
  dispose(): void;
2187
2300
  }
2188
- export { Node_2 as Node }
2189
-
2190
- declare type ObjectFactory<T extends BaseObject = BaseObject> = new (...args: any[]) => T;
2191
-
2192
- declare type ObjectFactoryMap = {
2193
- [key: string]: ObjectFactory;
2194
- };
2195
2301
 
2196
2302
  declare interface Options {
2197
2303
  color: string | number;
@@ -2261,39 +2367,15 @@ declare interface Options_16 {
2261
2367
  exclude?: Mesh[];
2262
2368
  }
2263
2369
 
2264
- declare interface Options_17 extends Omit<Parameters_3, 'polygonGeoJson' | 'endHeight'> {
2265
- coordinate: number[][];
2266
- height?: number;
2267
- }
2268
-
2269
- declare interface Options_18 {
2270
- points?: Vector2[];
2271
- pointsArr?: Vector2[][];
2272
- material: Material | Material[];
2273
- geometry?: BufferGeometry;
2274
- geometryArr?: BufferGeometry[];
2275
- depth?: number | number[];
2276
- useGroups?: 0 | 1 | 2;
2277
- split?: number;
2278
- box3?: Box3 | Box3[];
2279
- hasTop?: boolean;
2280
- hasBottom?: boolean;
2281
- hasSide?: boolean;
2282
- }
2283
-
2284
- declare interface Options_19 {
2285
- nodes?: PointsInput_2;
2286
- nodesArr?: PointsInput_2[];
2287
- geometry?: BufferGeometry;
2288
- geometryArr?: BufferGeometry[];
2289
- material?: MeshLineMaterial;
2290
- key?: string;
2291
- useGroups?: 0 | 1 | 2;
2292
- setPointWidth?: (p: number) => any;
2293
- lineWidthArr?: number[];
2294
- materialParameters?: Omit<MeshLineMaterialParameters, 'resolution'>;
2295
- useRTC?: boolean;
2296
- rtcCenter?: Vector3;
2370
+ declare interface Options_17 {
2371
+ maxDepth?: number;
2372
+ percentDepth?: boolean;
2373
+ innerRadius?: number;
2374
+ outRadius?: number;
2375
+ data: number[];
2376
+ colors: string[];
2377
+ activeIndex?: number;
2378
+ material?: MeshBasicMaterial | MeshStandardMaterial;
2297
2379
  }
2298
2380
 
2299
2381
  declare interface Options_2 {
@@ -2318,30 +2400,7 @@ declare interface Options_2 {
2318
2400
  css3DRenderer?: boolean;
2319
2401
  css3DRendererParams?: Partial<CSSRendererParams>;
2320
2402
  WebGPUTHREE?: any;
2321
- }
2322
-
2323
- declare interface Options_20 {
2324
- nodes?: PointsInput_2;
2325
- nodesArr?: PointsInput_2[];
2326
- geometry?: BufferGeometry;
2327
- geometryArr?: BufferGeometry[];
2328
- material?: Line2Material;
2329
- key?: string;
2330
- useGroups?: 0 | 1 | 2;
2331
- setPointWidth?: (p: number) => any;
2332
- lineWidthArr?: number[];
2333
- materialParameters?: LineMaterialParameters;
2334
- }
2335
-
2336
- declare interface Options_21 {
2337
- maxDepth?: number;
2338
- percentDepth?: boolean;
2339
- innerRadius?: number;
2340
- outRadius?: number;
2341
- data: number[];
2342
- colors: string[];
2343
- activeIndex?: number;
2344
- material?: MeshBasicMaterial | MeshStandardMaterial;
2403
+ attributesWorkerVersion?: string;
2345
2404
  }
2346
2405
 
2347
2406
  declare interface Options_3 {
@@ -2410,29 +2469,6 @@ declare class Pages {
2410
2469
  getMinDisabledLayer(): number | null;
2411
2470
  }
2412
2471
 
2413
- declare interface Parameters_2 extends Omit<Options_17, 'coordinate'> {
2414
- geometry?: BufferGeometry;
2415
- material?: Material | Material[];
2416
- coordinate?: number[][];
2417
- coordinateArr?: number[][][];
2418
- useGroups?: 0 | 1 | 2;
2419
- }
2420
-
2421
- declare type Parameters_3 = {
2422
- polygonGeoJson: PolygonCoords;
2423
- startHeight?: number;
2424
- endHeight?: number;
2425
- hasSide?: boolean;
2426
- hasTop?: boolean;
2427
- topFirst?: boolean;
2428
- hasBottom?: boolean;
2429
- includeSides?: boolean;
2430
- curvatureResolution?: number;
2431
- projection?: any; // 'cesium' | 'sphere' | D3 projection function | null
2432
- bbox?: number[];
2433
- resetCenter?: boolean;
2434
- };
2435
-
2436
2472
  declare class Pencil {
2437
2473
  options: Omit<DeepRequiredOptions, 'controls' | 'loader' | 'css2DRendererParams' | 'css3DRendererParams'> & Pick<Options_2, 'controls' | 'loader'> & {
2438
2474
  css2DRendererParams: CSSRendererParams;
@@ -2454,7 +2490,8 @@ declare class Pencil {
2454
2490
  raycaster: Raycaster;
2455
2491
  private maxBackufferArea;
2456
2492
  installPlugins: Map<string, any>;
2457
- getPlugin(name: 'worker'): Wk;
2493
+ attributesWorker: AttributesWorker;
2494
+ getPlugin(name: string): any;
2458
2495
  get renderer(): WebGLRenderer;
2459
2496
  get maxAnisotropy(): number;
2460
2497
  get controls(): CameraControls;
@@ -2463,9 +2500,9 @@ declare class Pencil {
2463
2500
  get cameraPositon(): Vector3;
2464
2501
  get cameraTarget(): Vector3;
2465
2502
  get camera(): PerspectiveCamera;
2466
- get scene(): Scene<Object3DEventMap>;
2503
+ get scene(): Scene;
2467
2504
  get loader(): Loader;
2468
- get lead(): Lead<any>;
2505
+ get lead(): Lead;
2469
2506
  get mList(): MList;
2470
2507
  event: EventEmitter;
2471
2508
  timer: Timer;
@@ -2539,6 +2576,7 @@ declare class Pencil {
2539
2576
  viewportMargin?: number;
2540
2577
  };
2541
2578
  };
2579
+ attributesWorkerVersion: string;
2542
2580
  };
2543
2581
  private TweenRaf;
2544
2582
  private tweenUpdateRaf;
@@ -2653,11 +2691,12 @@ export declare type PickFunctionsItem = {
2653
2691
  }) => void;
2654
2692
  };
2655
2693
 
2656
- export declare class Pie extends BaseObject {
2657
- options: Required<Omit<Options_21, 'material'>> & {
2694
+ export declare class PieObject extends GroupObject {
2695
+ objectType: string;
2696
+ options: Required<Omit<Options_17, 'material'>> & {
2658
2697
  material?: MeshBasicMaterial | MeshStandardMaterial;
2659
2698
  };
2660
- constructor(options: Options_21);
2699
+ constructor(options: Options_17);
2661
2700
  create(): Promise<void>;
2662
2701
  createGeometry(depth: number, angle: number): ExtrudeGeometry;
2663
2702
  handlePick(e: MouseEvent, scale?: number): any;
@@ -2687,11 +2726,19 @@ declare interface PointerInput {
2687
2726
  mouseButton: MOUSE_BUTTON | null;
2688
2727
  }
2689
2728
 
2729
+ export declare class PointLightObject extends BaseObject<PointLight> {
2730
+ objectType: string;
2731
+ constructor(lightOrColor?: PointLight | string | number, intensity?: number, distance?: number, decay?: number);
2732
+ }
2733
+
2690
2734
  declare type PointsInput = Vector3[] | Vector2[] | number[][] | number[];
2691
2735
 
2692
2736
  declare type PointsInput_2 = Vector3[] | Vector2[] | number[][] | number[];
2693
2737
 
2694
- declare type PolygonCoords = number[][][];
2738
+ export declare class PointsObject<G extends BufferGeometry = BufferGeometry, M extends Material | Material[] = Material | Material[]> extends BaseObject<Points<G, M>> {
2739
+ objectType: string;
2740
+ constructor(geometryOrPoints?: G | Points<G, M>, material?: M);
2741
+ }
2695
2742
 
2696
2743
  declare const projectionObj: {
2697
2744
  mercator: typeof geoMercator;
@@ -2708,6 +2755,12 @@ declare type ProjectionOptions = {
2708
2755
  rotate?: [number, number];
2709
2756
  };
2710
2757
 
2758
+ export declare class RectAreaLightObject extends BaseObject<RectAreaLight> {
2759
+ objectType: string;
2760
+ static rectAreaLightUniformsLibInit: boolean;
2761
+ constructor(colorOrLight?: RectAreaLight | string | number, intensity?: number, width?: number, height?: number);
2762
+ }
2763
+
2711
2764
  declare type Ref = {
2712
2765
  value: number;
2713
2766
  };
@@ -2749,7 +2802,7 @@ export declare class ResourceTracker {
2749
2802
  resources: Set<Resource>;
2750
2803
  disposeMaterial: boolean;
2751
2804
  disposeVideo: boolean;
2752
- track(resource: Resource | Resource[]): Material | Object3D<Object3DEventMap> | Texture<unknown> | BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap> | BaseObject | HTMLVideoElement | Resource[];
2805
+ track(resource: Resource | Resource[]): Object3D<Object3DEventMap> | Material | Texture<unknown> | BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap> | BaseObject<Object3D<Object3DEventMap>> | HTMLVideoElement | Resource[];
2753
2806
  dispose(): void;
2754
2807
  }
2755
2808
 
@@ -2784,11 +2837,36 @@ declare class ScanEffect_2 {
2784
2837
  stop(): void;
2785
2838
  }
2786
2839
 
2840
+ /**
2841
+ * 场景 JSON 引用回溯工具
2842
+ * 从 sceneJson 中构建 uuid -> 可读路径 的映射表
2843
+ * 供分析、去重日志等场景共用
2844
+ */
2845
+ declare class SceneJsonRefTracer {
2846
+ /** object uuid / geometry uuid -> 对象路径 */
2847
+ readonly uuidToObject: Map<string, string>;
2848
+ /** material uuid -> 使用它的对象路径 */
2849
+ readonly uuidToMaterial: Map<string, string>;
2850
+ /** texture uuid -> 使用它的材质描述 */
2851
+ readonly uuidToTexture: Map<string, string>;
2852
+ /** image uuid -> 使用它的纹理描述 */
2853
+ readonly uuidToImage: Map<string, string>;
2854
+ constructor(sceneJson: any);
2855
+ /** 根据 uuid 获取可读描述,依次查找各映射 */
2856
+ resolve(uuid: string): string;
2857
+ /** 将 uuid -> uuid 的 remap 映射转为可读的日志行数组 */
2858
+ formatRemap(remap: Map<string, string>): string[];
2859
+ private _traceObjects;
2860
+ private static _mapTypes;
2861
+ private _traceMaterials;
2862
+ private _traceTextures;
2863
+ }
2864
+
2787
2865
  declare class ScenePages extends OrigonPages<Scene> {
2788
2866
  options: Options_4;
2789
- get scene(): Scene<Object3DEventMap>;
2867
+ get scene(): Scene;
2790
2868
  constructor(options: Options_4);
2791
- addScene(sceneParams?: SceneParams, index?: number): Scene<Object3DEventMap>;
2869
+ addScene(sceneParams?: SceneParams, index?: number): Scene;
2792
2870
  removePage(index: number): void;
2793
2871
  setPageActive(index: number): void;
2794
2872
  }
@@ -2797,6 +2875,85 @@ declare interface SceneParams {
2797
2875
  background: Scene['background'];
2798
2876
  }
2799
2877
 
2878
+ declare class SceneSerializer {
2879
+ private lead;
2880
+ constructor(lead: Lead);
2881
+ private get scene();
2882
+ private get group();
2883
+ private get prefabGroup();
2884
+ private get mList();
2885
+ private get objects();
2886
+ exportCompressScene(): Promise<ArrayBuffer>;
2887
+ exportScene({ checkTextures }?: {
2888
+ checkTextures?: boolean | undefined;
2889
+ }): string;
2890
+ restoreScene(data: string | ArrayBuffer | Object3DJSON, registry?: Record<string, new (...args: any[]) => any>, roomEnvMap?: any): Promise<void>;
2891
+ /**
2892
+ * 根据 objectType 和 registry 创建 BaseObject 实例
2893
+ */
2894
+ private _createInstance;
2895
+ /**
2896
+ * 安全地克隆 options,过滤掉不可序列化的 Three.js 对象
2897
+ */
2898
+ private _cloneObjectOptions;
2899
+ /**
2900
+ * 将解析后的场景树移植到现有核心 Object3D,保持外部引用不变
2901
+ */
2902
+ private _graftParsedScene;
2903
+ private _graftObject3d;
2904
+ /**
2905
+ * 同步 Object3D 属性,保留 target 上非 _baseObject 的 userData
2906
+ */
2907
+ private _syncObject3dProps;
2908
+ /**
2909
+ * 清理临时写入的 _baseObject* userData 键
2910
+ */
2911
+ private _cleanUserData;
2912
+ /**
2913
+ * 需要提取到共享池进行去重的 _baseObjectOptions 字段名
2914
+ * 新增字段只需在此数组中添加即可
2915
+ */
2916
+ private static _sharedOptionsKeys;
2917
+ /**
2918
+ * 去重场景 JSON 中重复的 image、VideoTexture、DataTexture
2919
+ */
2920
+ private _deduplicateSceneJson;
2921
+ /**
2922
+ * 遍历 sceneJson 的对象树,提取 _baseObjectOptions 中可共享的大字段
2923
+ * 相同内容只存储一份,对象中替换为引用索引
2924
+ */
2925
+ private _extractSharedOptionsPool;
2926
+ /**
2927
+ * 还原共享 options 池:将 { _sharedRef: index } 替换回真实值
2928
+ */
2929
+ private _restoreSharedOptionsPool;
2930
+ /**
2931
+ * 深度优先遍历 sceneJson 对象树,对每个节点执行回调
2932
+ */
2933
+ private _traverseObjectJson;
2934
+ private _compressGzip;
2935
+ private _decompressGzip;
2936
+ /**
2937
+ * 从纹理实例提取通用属性为 plain object(导出用)
2938
+ */
2939
+ private _serializeTexProps;
2940
+ /**
2941
+ * 将 JSON 中的通用属性应用到纹理实例(还原用)
2942
+ */
2943
+ private _applyTexProps;
2944
+ /**
2945
+ * 创建序列化占位纹理(通用工厂)
2946
+ */
2947
+ private _createPlaceholder;
2948
+ private _videoTexToPlaceholder;
2949
+ private _createVideoTextureFromJson;
2950
+ private static _typedArrayCtors;
2951
+ private _dataTexToPlaceholder;
2952
+ private _createDataTextureFromJson;
2953
+ private _typedArrayToBase64;
2954
+ private _base64ToTypedArray;
2955
+ }
2956
+
2800
2957
  declare type singleTouchAction =
2801
2958
  | typeof ACTION.TOUCH_ROTATE
2802
2959
  | typeof ACTION.TOUCH_TRUCK
@@ -2806,6 +2963,18 @@ declare type singleTouchAction =
2806
2963
  | typeof ACTION.ZOOM
2807
2964
  | typeof ACTION.NONE;
2808
2965
 
2966
+ export declare class SpotLightObject extends BaseObject<SpotLight> {
2967
+ objectType: string;
2968
+ constructor(lightOrColor?: SpotLight | string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number);
2969
+ render(): void;
2970
+ dispose(): void;
2971
+ }
2972
+
2973
+ export declare class SpriteObject<M extends SpriteMaterial = SpriteMaterial> extends BaseObject<Sprite> {
2974
+ objectType: string;
2975
+ constructor(materialOrSprite?: M | Sprite);
2976
+ }
2977
+
2809
2978
  declare interface SSAOParams {
2810
2979
  kernelRadius: number;
2811
2980
  minDistance: number;
@@ -2874,6 +3043,7 @@ declare class UseMaterial extends PointerEvent_2 {
2874
3043
 
2875
3044
  export declare const utils: {
2876
3045
  applyTextureColorSpace: typeof applyTextureColorSpace;
3046
+ analyzeSceneJsonSize: typeof analyzeSceneJsonSize;
2877
3047
  CacheManager: typeof CacheManager;
2878
3048
  cartographicToCartesian: typeof cartographicToCartesian;
2879
3049
  WGS84: {
@@ -2885,80 +3055,11 @@ export declare const utils: {
2885
3055
  isPlainObject: typeof isPlainObject;
2886
3056
  parseVector2: (v: Vector2 | number[]) => Vector2;
2887
3057
  parseVector3: (v: PointsInput[0]) => Vector3;
2888
- claerUVGenerator: () => void;
2889
- getUVGenerator: (options?: {
2890
- box3?: Box3;
2891
- sideRepeat?: number;
2892
- }) => {
2893
- generateTopUV(geometry: any, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[];
2894
- generateSideWallUV(geometry: any, vertices: number[], indexA: number, indexB: number, indexC: number, indexD: number): Vector2[];
2895
- };
3058
+ SceneJsonRefTracer: typeof SceneJsonRefTracer;
2896
3059
  };
2897
3060
 
2898
3061
  declare type ValuesOf<T extends readonly any[]> = T[number];
2899
3062
 
2900
3063
  declare type WidthCallback = (p: number) => number;
2901
3064
 
2902
- export declare class Wk {
2903
- pluginName: string;
2904
- options: Options_15 & {
2905
- cacheVersion: string;
2906
- dbName: string;
2907
- maxCacheSize: number;
2908
- };
2909
- pencil: Pencil;
2910
- pool: WorkerPool;
2911
- bufferGeometryLoader: BufferGeometryLoader;
2912
- cacheManager: CacheManager;
2913
- constructor(options: Options_15);
2914
- install(pencil: Pencil): void;
2915
- geoGeometry(type: 'extrudePolygon', options: GeoGeometryOptions & {
2916
- mesaage: ExtrudePolygonOptions;
2917
- }): Promise<BufferGeometry>;
2918
- geoGeometry(type: 'conicPolygon', options: GeoGeometryOptions & {
2919
- mesaage: ConicPolygonOptions;
2920
- }): Promise<BufferGeometry>;
2921
- geoGeometry(type: 'conicLine', options: GeoGeometryOptions & {
2922
- mesaage: ConicLineOptions;
2923
- }): Promise<BufferGeometry>;
2924
- geoGeometry(type: 'line', options: GeoGeometryOptions & {
2925
- mesaage: LineOptions;
2926
- }): Promise<BufferGeometry>;
2927
- getCachedGeometry(options: Pick<GeoGeometryOptions, 'cacheKey' | 'cacheVersion'>): Promise<ReturnType<typeof _default_2>[]>;
2928
- saveCache(): Promise<void>;
2929
- /**
2930
- * 批量保存待更新的元数据
2931
- */
2932
- flushMetadata(): Promise<void>;
2933
- /**
2934
- * 获取缓存统计信息
2935
- */
2936
- getCacheStats(): Promise<{
2937
- total: number;
2938
- maxSize: number;
2939
- usage: number;
2940
- items: {
2941
- key: IDBValidKey;
2942
- metadata: CacheMetadata;
2943
- }[];
2944
- }>;
2945
- /**
2946
- * 手动清空所有缓存
2947
- */
2948
- clearCache(): Promise<void>;
2949
- /**
2950
- * 检查存储配额使用情况
2951
- */
2952
- checkStorageQuota(): Promise<{
2953
- usage: number;
2954
- quota: number;
2955
- percentUsed: number;
2956
- } | null>;
2957
- flattenCoordinates(coordinatesArr: number[][][], metaArray?: number[][], useFloat64Array?: boolean): {
2958
- flat: Float64Array | Float32Array;
2959
- lengths: number[];
2960
- };
2961
- dispose(): void;
2962
- }
2963
-
2964
3065
  export { }