vis-core 0.33.16 → 0.33.17

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
@@ -22,22 +22,18 @@ import { GeoProjection } from 'd3-geo';
22
22
  import { Group } from 'three';
23
23
  import { HemisphereLight as HemisphereLight_2 } from 'three';
24
24
  import { Intersection } from 'three';
25
- import { IUniform } from 'three';
26
25
  import { Layers } from 'three/webgpu';
27
- import { Listener } from 'events';
28
26
  import { LoadingManager } from 'three';
29
27
  import { Material } from 'three';
30
28
  import { MaterialEventMap } from 'three';
31
29
  import { MaterialParameters } from 'three';
32
30
  import { Matrix4 } from 'three';
33
31
  import { Mesh } from 'three';
34
- import { Mesh as Mesh_2 } from 'three/webgpu';
35
32
  import { MultiPolygon } from 'geojson';
36
- import { Node as Node_2 } from 'three/webgpu';
37
33
  import { NodeMaterial } from 'three/webgpu';
38
34
  import { NormalBufferAttributes } from 'three';
39
- import { Object3D } from 'three';
40
- import { Object3D as Object3D_2 } from 'three/webgpu';
35
+ import { Object3D } from 'three/webgpu';
36
+ import { Object3D as Object3D_2 } from 'three';
41
37
  import { Object3DEventMap } from 'three';
42
38
  import { Object3DJSON } from 'three';
43
39
  import { OrthographicCamera } from 'three';
@@ -350,6 +346,7 @@ declare class Base_3 extends Camera {
350
346
  applyDisabledMouseButtons: boolean;
351
347
  cacheCityGeometry: boolean;
352
348
  includePrefabPreviews: boolean;
349
+ strictBundleAssets: boolean;
353
350
  };
354
351
  leftTruck: boolean;
355
352
  options: BaseOptions;
@@ -387,6 +384,13 @@ declare class Base_3 extends Camera {
387
384
  private resolveRendererDepthBufferOptions;
388
385
  private showDetectRes;
389
386
  setOptions(options: Record<string, any>): void;
387
+ private assetResolver?;
388
+ /** Internal: Keep authoring transactions and their rollback on the same resource catalog. */
389
+ setRuntimeAssets(catalog?: RuntimeAssetCatalog): void;
390
+ /** Resolve static dependencies within the currently loaded project. */
391
+ resolveAssetUrl: (url: string) => string;
392
+ /** Internal: Map overrides this before any authored geometry is hydrated. */
393
+ protected authorizeSceneOptions(_options: Record<string, any>): Promise<void>;
390
394
  /** Internal: Scene documents are loaded through SceneManager. */
391
395
  fromJSON(jsonOrUrl: Record<string, any> | string, hooksE?: Record<string, any>, restoreOptions?: RestoreBaseObjectOptions): Promise<void>;
392
396
  private runtimeInitialization?;
@@ -475,7 +479,7 @@ declare class Base_3 extends Camera {
475
479
  dispose(): void;
476
480
  }
477
481
 
478
- declare class BaseObject<T extends Object3D = Object3D> extends UseMaterial {
482
+ declare class BaseObject<T extends Object3D_2 = Object3D_2> extends UseMaterial {
479
483
  /** One persisted identity, owned by the underlying Three.js object. */
480
484
  get key(): string;
481
485
  set key(value: string);
@@ -502,15 +506,15 @@ declare class BaseObject<T extends Object3D = Object3D> extends UseMaterial {
502
506
  ownership?: ResourceOwnership;
503
507
  });
504
508
  get parent(): BaseObject | null;
505
- get children(): BaseObject<Object3D< Object3DEventMap>>[];
509
+ get children(): BaseObject<Object3D_2< Object3DEventMap>>[];
506
510
  get position(): Vector3;
507
511
  get rotation(): Euler;
508
512
  get scale(): Vector3;
509
513
  lookAt(vector: Vector3): void;
510
514
  lookAt(x: number, y: number, z: number): void;
511
515
  draw<C extends new (...args: any[]) => BaseObject>(ClassRef: C, ...args: ConstructorParameters<C>): Promise<InstanceType<C>>;
512
- add(...objects: (Object3D | BaseObject)[]): void;
513
- remove(...object: Object3D[]): void;
516
+ add(...objects: (Object3D_2 | BaseObject)[]): void;
517
+ remove(...object: Object3D_2[]): void;
514
518
  get visible(): boolean;
515
519
  /**
516
520
  * 检查是否实际可见(自己和所有祖先都 visible)
@@ -660,10 +664,6 @@ declare class Building extends GroupObject {
660
664
  constructor(options: Options_19);
661
665
  create(): Promise<void>;
662
666
  rebuildFromScene(): void;
663
- private gradientMaterials;
664
- worldPositionZ: THREE.UniformNode<"float", number>;
665
- sideGradient(color?: string, maxGradientHeight?: number): void;
666
- update(): void;
667
667
  }
668
668
 
669
669
  declare class CacheManager {
@@ -1811,7 +1811,6 @@ declare class City {
1811
1811
  jsonUrl?: string;
1812
1812
  meters?: number;
1813
1813
  grey?: boolean;
1814
- sideGradient?: boolean;
1815
1814
  hasSide?: boolean;
1816
1815
  }): Promise<Building | undefined>;
1817
1816
  drawArea(options?: {
@@ -1838,12 +1837,10 @@ declare interface CityOptions {
1838
1837
  plane?: boolean;
1839
1838
  grey?: boolean;
1840
1839
  showBuilding?: boolean;
1841
- buildingSideGradient?: boolean;
1842
1840
  buildingHasSide?: boolean;
1843
1841
  showRoad?: boolean;
1844
1842
  showGrassland?: boolean;
1845
1843
  showRiver?: boolean;
1846
- setWaterMaterial?: boolean;
1847
1844
  dataSources?: {
1848
1845
  building?: string;
1849
1846
  road?: string;
@@ -1857,11 +1854,8 @@ declare class CityPlane extends MeshObject {
1857
1854
  options: Options_23;
1858
1855
  constructor(options: Options_23);
1859
1856
  plane: _THREE.BufferGeometry;
1860
- water?: Water;
1861
1857
  create(): Promise<void>;
1862
1858
  rebuildFromScene(): void;
1863
- addWater(normalMaps: [_THREE.Texture, _THREE.Texture]): void;
1864
- dispose(): void;
1865
1859
  }
1866
1860
 
1867
1861
  /** Duplicate scene-owned definitions, while retaining references to project assets. */
@@ -2027,7 +2021,7 @@ declare class Composer {
2027
2021
  };
2028
2022
  };
2029
2023
  };
2030
- bloomSelection: Set<BaseObject< Object3D<Object3DEventMap>>>;
2024
+ bloomSelection: Set<BaseObject< Object3D_2<Object3DEventMap>>>;
2031
2025
  bloomLayer: Layers;
2032
2026
  active: boolean;
2033
2027
  options: Options_3;
@@ -2178,6 +2172,7 @@ export declare interface CreateMaterialAssetOptions {
2178
2172
  material: Record<string, any>;
2179
2173
  scope?: MaterialScope;
2180
2174
  locked?: boolean;
2175
+ alwaysExport?: boolean;
2181
2176
  }
2182
2177
 
2183
2178
  /**
@@ -2465,8 +2460,8 @@ export declare type EmptySceneDefinition = Omit<SceneViewportDocument, 'scene'>;
2465
2460
  declare class Event_2 {
2466
2461
  event: EventEmitter;
2467
2462
  private eventHandlers;
2468
- on: (type: string | number, listener: Listener) => EventEmitter;
2469
- emit: (type: string | number, ...args: any[]) => boolean;
2463
+ on: EventEmitter['on'];
2464
+ emit: EventEmitter['emit'];
2470
2465
  addListener(node: HTMLElement, event: string, handler: (e: MouseEvent) => void, capture?: boolean): void;
2471
2466
  removeListener(targetNode: HTMLElement | '', event: string): void;
2472
2467
  removeAllListeners(): void;
@@ -2481,21 +2476,21 @@ declare class EventDispatcher {
2481
2476
  * @param listener handler function
2482
2477
  * @category Methods
2483
2478
  */
2484
- addEventListener(type: string, listener: Listener_2): void;
2479
+ addEventListener(type: string, listener: Listener): void;
2485
2480
  /**
2486
2481
  * Presence of the specified event listener.
2487
2482
  * @param type event name
2488
2483
  * @param listener handler function
2489
2484
  * @category Methods
2490
2485
  */
2491
- hasEventListener(type: string, listener: Listener_2): boolean;
2486
+ hasEventListener(type: string, listener: Listener): boolean;
2492
2487
  /**
2493
2488
  * Removes the specified event listener
2494
2489
  * @param type event name
2495
2490
  * @param listener handler function
2496
2491
  * @category Methods
2497
2492
  */
2498
- removeEventListener(type: string, listener: Listener_2): void;
2493
+ removeEventListener(type: string, listener: Listener): void;
2499
2494
  /**
2500
2495
  * Removes all event listeners
2501
2496
  * @param type event name
@@ -2738,13 +2733,13 @@ declare const KNOWN_ASSET_TYPES: {
2738
2733
  declare type Lead = Lead_2;
2739
2734
 
2740
2735
  declare class Lead_2 extends Pick_2 {
2741
- objMap: Map<Object3D< Object3DEventMap>, BaseObject<Object3D< Object3DEventMap>>>;
2742
- objects: Map<string, BaseObject<Object3D< Object3DEventMap>>>;
2736
+ objMap: Map<Object3D_2< Object3DEventMap>, BaseObject<Object3D_2< Object3DEventMap>>>;
2737
+ objects: Map<string, BaseObject<Object3D_2< Object3DEventMap>>>;
2743
2738
  /** Compatibility name for the same UUID index, never a second identity map. */
2744
- get objectsByUuid(): Map<string, BaseObject<Object3D< Object3DEventMap>>>;
2739
+ get objectsByUuid(): Map<string, BaseObject<Object3D_2< Object3DEventMap>>>;
2745
2740
  private registeredUuids;
2746
2741
  private disposing;
2747
- objectsPm: Map<BaseObject<Object3D< Object3DEventMap>>, Promise<void>>;
2742
+ objectsPm: Map<BaseObject<Object3D_2< Object3DEventMap>>, Promise<void>>;
2748
2743
  scene: BaseObject;
2749
2744
  sceneResources: SceneResources_2;
2750
2745
  get objectsPromise(): MapIterator<Promise<void>>;
@@ -2757,7 +2752,7 @@ declare class Lead_2 extends Pick_2 {
2757
2752
  * 包含:依赖注入、Key 生成、Map 存储。
2758
2753
  * 已注册对象可再次调用,以刷新替换骨骼后的资源引用。
2759
2754
  */
2760
- register(baseObject: BaseObject): BaseObject<Object3D< Object3DEventMap>>;
2755
+ register(baseObject: BaseObject): BaseObject<Object3D_2< Object3DEventMap>>;
2761
2756
  /** Update identity and its only index atomically; never rename children. */
2762
2757
  setObjectUuid(baseObject: BaseObject, uuid: string): void;
2763
2758
  /**
@@ -2780,7 +2775,7 @@ declare class Lead_2 extends Pick_2 {
2780
2775
  * 将原生 Object3D 包装为 BaseObject (Wrapper Pattern)
2781
2776
  * 如果已存在包装器,则返回现有实例
2782
2777
  */
2783
- wrap(object3d: Object3D): BaseObject;
2778
+ wrap(object3d: Object3D_2): BaseObject;
2784
2779
  private wrapObject;
2785
2780
  /**
2786
2781
  * 统一的添加入口
@@ -2804,7 +2799,7 @@ declare class Lead_2 extends Pick_2 {
2804
2799
  eraseAll(): void;
2805
2800
  private _serializer;
2806
2801
  exportBaseObject(...args: Parameters<SceneSerializer['exportBaseObject']>): SceneSnapshot;
2807
- restoreBaseObject(...args: Parameters<SceneSerializer['restoreBaseObject']>): Promise<BaseObject<Object3D< Object3DEventMap>>>;
2802
+ restoreBaseObject(...args: Parameters<SceneSerializer['restoreBaseObject']>): Promise<BaseObject<Object3D_2< Object3DEventMap>>>;
2808
2803
  dispose(): void;
2809
2804
  }
2810
2805
 
@@ -2886,7 +2881,7 @@ declare interface LineObjectOptions {
2886
2881
  onCacheMiss?: (options: Partial<LineObjectOptions>) => Partial<LineObjectOptions> | Promise<Partial<LineObjectOptions>>;
2887
2882
  }
2888
2883
 
2889
- declare type Listener_2 = (event?: DispatcherEvent) => void;
2884
+ declare type Listener = (event?: DispatcherEvent) => void;
2890
2885
 
2891
2886
  declare class Loader {
2892
2887
  loadingManager: LoadingManager;
@@ -2894,7 +2889,7 @@ declare class Loader {
2894
2889
  loaderConfigs: Map<string, LoaderConfig>;
2895
2890
  loadObj: Asset[];
2896
2891
  delLoadArr: string[];
2897
- assets: Map<string, Texture | Object3D | any>;
2892
+ assets: Map<string, Texture | Object3D_2 | any>;
2898
2893
  event: EventEmitter;
2899
2894
  options: Options_9;
2900
2895
  scene: Scene_2;
@@ -2910,7 +2905,7 @@ declare class Loader {
2910
2905
  getAsset(src: `${string}.${TypeImage}`): Texture;
2911
2906
  getAsset(src: `${string}.${TypeMedia}`): VideoTexture;
2912
2907
  getAsset(src: `${string}.${TypeGLTF}`): {
2913
- scene: Object3D;
2908
+ scene: Object3D_2;
2914
2909
  };
2915
2910
  getAsset(src: `${string}.${TypeLottie}`): Texture;
2916
2911
  getAsset(src: `${string}.${TypeJSON}`): any;
@@ -2921,13 +2916,13 @@ declare class Loader {
2921
2916
  private loaderKey;
2922
2917
  getLoader(type: string, options?: AssetOptions): any;
2923
2918
  add(src: string | string[], options?: AssetOptions): void;
2924
- getSrcByAsset(asset: Texture | Object3D | any, assets?: Map<string, any>): string | undefined;
2919
+ getSrcByAsset(asset: Texture | Object3D_2 | any, assets?: Map<string, any>): string | undefined;
2925
2920
  get textureAssets(): Map<string, Texture<unknown, TextureEventMap>>;
2926
2921
  loadAll(): Promise<Texture<unknown, TextureEventMap>[]>;
2927
2922
  load(src: `${string}.${TypeImage}`, options?: AssetOptions): Promise<Texture>;
2928
2923
  load(src: `${string}.${TypeMedia}`, options?: AssetOptions): Promise<VideoTexture>;
2929
2924
  load(src: `${string}.${TypeGLTF}`, options?: AssetOptions): Promise<{
2930
- scene: Object3D;
2925
+ scene: Object3D_2;
2931
2926
  }>;
2932
2927
  load(src: `${string}.${TypeLottie}`, options?: AssetOptions): Promise<Texture>;
2933
2928
  load(src: `${string}.${TypeJSON}`, options?: AssetOptions): Promise<any>;
@@ -3009,6 +3004,10 @@ declare class Map_4 extends Base_3 {
3009
3004
  private regionCameraFitReference?;
3010
3005
  private authoredCameraPose?;
3011
3006
  private cameraAngleOverrides?;
3007
+ private bundledMapSwitchKey?;
3008
+ setRuntimeAssets(catalog?: RuntimeAssetCatalog): void;
3009
+ private requireMapAuthorization;
3010
+ protected authorizeSceneOptions(options: Record<string, any>): Promise<void>;
3012
3011
  setOptions(options: MapOptions): void;
3013
3012
  private _getProjectionCenter;
3014
3013
  private _getProjectionRotate;
@@ -3171,7 +3170,7 @@ declare class Map_4 extends Base_3 {
3171
3170
  */
3172
3171
  private applyRegionObjectState;
3173
3172
  /** Internal: 仅由 SceneManager 在隔离页面调用,成功后才对外提交。 */
3174
- rebuildRegion(targetAdcode: number, switchKey?: string, force?: boolean): Promise<void>;
3173
+ rebuildRegion(targetAdcode: number, force?: boolean): Promise<void>;
3175
3174
  private rebuildRegionGeometry;
3176
3175
  /** 候选区域提交后的相机过渡,不参与场景序列化。 */
3177
3176
  playRegionEnterTransition({ duration, sourceCamera, preparedCamera, onPrepared, }: MapRegionEnterTransitionOptions): Promise<void>;
@@ -3244,16 +3243,19 @@ declare interface MapCityOptions extends MapOptions {
3244
3243
  cacheCity?: boolean;
3245
3244
  nearbyCities?: boolean | 'full';
3246
3245
  showBuilding?: boolean;
3247
- buildingSideGradient?: boolean;
3248
3246
  showRoad?: boolean;
3249
3247
  showGrassland?: boolean;
3250
3248
  showRiver?: boolean;
3251
- setWaterMaterial?: boolean;
3252
3249
  showCityOnMapInnerLine?: boolean;
3253
3250
  bloom?: boolean;
3254
3251
  citySSAO?: boolean;
3255
3252
  }
3256
3253
 
3254
+ export declare interface MapExportScope {
3255
+ rootAdcode: number;
3256
+ maxLevel: 'province' | 'city' | 'district';
3257
+ }
3258
+
3257
3259
  declare interface MapLabelStyle {
3258
3260
  color?: string;
3259
3261
  fontSize?: number;
@@ -3309,7 +3311,7 @@ declare interface MapOptions extends BaseOptions {
3309
3311
  export declare interface MapPlacementOptions {
3310
3312
  mapCRS: string;
3311
3313
  /** Explicit ground meshes only. Exclude the model, roofs, helpers and hidden surfaces. */
3312
- surfaces: Object3D[];
3314
+ surfaces: Object3D_2[];
3313
3315
  /** Model's physical height; optional if already in map units. Z is model/map up. */
3314
3316
  heightMeters?: number;
3315
3317
  /** Clearance in map units along map Z. */
@@ -3404,6 +3406,8 @@ export declare interface MaterialAsset {
3404
3406
  /** Complete Material.toJSON(); schema 6 exports may pool image/texture payloads. */
3405
3407
  material: Record<string, any>;
3406
3408
  locked?: boolean;
3409
+ /** Keep this definition and its dependencies in exports for later business use. Does not prevent editing or deletion. */
3410
+ alwaysExport?: boolean;
3407
3411
  }
3408
3412
 
3409
3413
  declare type MaterialBindings = Record<string, Record<string, string>>;
@@ -3969,7 +3973,6 @@ declare interface Options_19 {
3969
3973
  material?: THREE.Material | THREE.Material[];
3970
3974
  meters?: number;
3971
3975
  hasSide?: boolean;
3972
- sideGradient?: boolean;
3973
3976
  grey?: boolean;
3974
3977
  materialOptions?: Record<string, THREE.Material>;
3975
3978
  }
@@ -4326,14 +4329,14 @@ declare class Pencil {
4326
4329
  } | undefined;
4327
4330
  setViewPadding(top?: number, right?: number, bottom?: number, left?: number): void;
4328
4331
  /** Optional host filters; these are never serialized into a scene. */
4329
- renderObjectFilter?: (object: Object3D_2) => boolean;
4330
- pickObjectFilter?: (object: Object3D_2) => boolean;
4332
+ renderObjectFilter?: (object: Object3D) => boolean;
4333
+ pickObjectFilter?: (object: Object3D) => boolean;
4331
4334
  /** Certify host raycasts that only hit this object and never stop child traversal. */
4332
- pickRaycastCanBeSkipped?: (object: Object3D_2) => boolean;
4333
- pick(event: MouseEvent, objects?: Object3D_2[], recursive?: boolean): {
4334
- object: Object3D_2< Object3DEventMap>;
4335
+ pickRaycastCanBeSkipped?: (object: Object3D) => boolean;
4336
+ pick(event: MouseEvent, objects?: Object3D[], recursive?: boolean): {
4337
+ object: Object3D< Object3DEventMap>;
4335
4338
  index: number | undefined;
4336
- intersects: Intersection<Object3D_2< Object3DEventMap>>[];
4339
+ intersects: Intersection<Object3D< Object3DEventMap>>[];
4337
4340
  } | undefined;
4338
4341
  render(): void;
4339
4342
  /** Capture only authored content without advancing animation or touching editor tools. */
@@ -4438,7 +4441,7 @@ declare type PickFunctionsItem = {
4438
4441
  };
4439
4442
 
4440
4443
  export declare interface PlanarMap {
4441
- object3d: Object3D;
4444
+ object3d: Object3D_2;
4442
4445
  options: {
4443
4446
  projection?: ProjectionOptions;
4444
4447
  conic?: boolean;
@@ -4524,7 +4527,7 @@ declare class PlaneShadow extends MeshObject {
4524
4527
  /** Read-only plan. Aligns the model bounds center in XY and lowest vertex to actual ground.
4525
4528
  * Apply the returned local matrix to a detached candidate, serialize, then import/replace once.
4526
4529
  */
4527
- export declare function planPlacement(model: Object3D, map: PlanarMap, anchor: MapAnchor, options: MapPlacementOptions): {
4530
+ export declare function planPlacement(model: Object3D_2, map: PlanarMap, anchor: MapAnchor, options: MapPlacementOptions): {
4528
4531
  localMatrix: Matrix4;
4529
4532
  worldMatrix: Matrix4;
4530
4533
  groundPoint: Vector3Tuple;
@@ -4673,6 +4676,7 @@ export declare function remapImportedMaterials(before: VisSceneDocument, incomin
4673
4676
  export declare function remapOwnedSnapshotIdentity(snapshot: any, rootUuid?: string, sharedResourceIds?: ReadonlyMap<string, string>): any;
4674
4677
 
4675
4678
  export declare interface RemappedSceneDocument {
4679
+ runtimeAssets?: RuntimeAssetCatalog;
4676
4680
  entrySceneId: string;
4677
4681
  scenes: SceneViewportDocument[];
4678
4682
  idMap: Map<string, string>;
@@ -4724,6 +4728,7 @@ declare class RendererController {
4724
4728
  private disposed;
4725
4729
  private hasRenderableSize;
4726
4730
  private readonly pointSprites;
4731
+ readonly surfaceEffects: SurfaceEffects;
4727
4732
  options: Options_2;
4728
4733
  private displayScaleObserver?;
4729
4734
  private releaseRenderPipelines?;
@@ -4943,6 +4948,36 @@ declare class Road extends GroupObject {
4943
4948
  dispose(): void;
4944
4949
  }
4945
4950
 
4951
+ /** Static dependencies owned by a project. Source URLs are lookup keys, never fallbacks. */
4952
+ export declare interface RuntimeAsset {
4953
+ id: string;
4954
+ path: string;
4955
+ sources: string[];
4956
+ mimeType: string;
4957
+ encoding: 'identity' | 'gzip';
4958
+ bytes: number;
4959
+ sha256: string;
4960
+ /** Compressed/original file bytes, base64 encoded for project persistence. */
4961
+ data?: string;
4962
+ }
4963
+
4964
+ export declare interface RuntimeAssetCatalog {
4965
+ version: 1;
4966
+ entries: RuntimeAsset[];
4967
+ scope?: MapExportScope;
4968
+ /** Enumerated interaction targets, including regions never opened in the editor. */
4969
+ regions?: Record<string, number[]>;
4970
+ declaredSources?: string[];
4971
+ /** Explicitly deployed shared files; these sources are not stored inside the ZIP. */
4972
+ externalSources?: string[];
4973
+ mapDataMode?: 'bundled' | 'external';
4974
+ /** Signed authorization restricted to the exported map interaction targets. */
4975
+ mapSwitchKey?: string;
4976
+ projectId?: string;
4977
+ /** Runtime-only base for an unpacked deployment. ZIP imports contain data instead. */
4978
+ baseUrl?: string;
4979
+ }
4980
+
4946
4981
  /** Only ordinary encoded images are externalized. Typed pixel data, videos and
4947
4982
  * custom payloads keep their original serialization contract. */
4948
4983
  declare interface RuntimeImageAsset {
@@ -4959,7 +4994,7 @@ export declare const SCENE_DOCUMENT_SCHEMA_VERSION: 6;
4959
4994
 
4960
4995
  export declare const SCENE_MANIFEST_FORMAT: "vis-scene-manifest";
4961
4996
 
4962
- export declare const SCENE_MANIFEST_SCHEMA_VERSION: 3;
4997
+ export declare const SCENE_MANIFEST_SCHEMA_VERSION: 4;
4963
4998
 
4964
4999
  export declare interface SceneBackInteraction {
4965
5000
  trigger: 'click' | 'clickOutside';
@@ -4970,6 +5005,8 @@ export declare interface SceneBackInteraction {
4970
5005
  };
4971
5006
  }
4972
5007
 
5008
+ export declare type SceneBundleBinary = Blob | ArrayBuffer | Uint8Array;
5009
+
4973
5010
  declare interface SceneCaptureOptions {
4974
5011
  /** Physical output pixels. Defaults to the active content viewport. */
4975
5012
  width?: number;
@@ -4982,6 +5019,7 @@ declare interface SceneCaptureOptions {
4982
5019
 
4983
5020
  /** Scene membership/options delta. Existing authored graphs must use structure patches. */
4984
5021
  export declare interface SceneCollectionTransaction {
5022
+ runtimeAssets?: VisSceneDocument['runtimeAssets'];
4985
5023
  scenes: readonly SceneViewportDocument[];
4986
5024
  entrySceneId: string;
4987
5025
  materialLibrary?: readonly MaterialAsset[];
@@ -5087,6 +5125,8 @@ export declare class SceneManager extends Event_2 {
5087
5125
  */
5088
5126
  prewarmRuntime(): Promise<void>;
5089
5127
  private prepareScene;
5128
+ private resolveMapSwitchKey;
5129
+ private authorizeMapDefinition;
5090
5130
  /** Publish one identity remap without exporting runtimes or copying other pages/resources. */
5091
5131
  remapCommittedIdentity(sceneId: string, previous: string, next: string, objectIdentity: boolean): boolean;
5092
5132
  /**
@@ -5144,12 +5184,12 @@ export declare class SceneManager extends Event_2 {
5144
5184
  * Check the saved sections affected by topology history without handing out
5145
5185
  * the private candidate. Editor config/dev metadata is outside this delta.
5146
5186
  */
5147
- preparedSceneStructureMatches(prepared: PreparedSceneStructure, target: Pick<VisSceneDocument, 'scenes' | 'materialLibrary' | 'prefabLibrary'>): boolean;
5187
+ preparedSceneStructureMatches(prepared: PreparedSceneStructure, target: Pick<VisSceneDocument, 'scenes' | 'materialLibrary' | 'prefabLibrary' | 'runtimeAssets'>): boolean;
5148
5188
  /** Commit the already validated candidate once, provided its source is still current. */
5149
5189
  commitSceneStructure(prepared: PreparedSceneStructure): void;
5150
5190
  /** Commit scalar material history without accepting or copying caller object graphs. */
5151
5191
  patchMaterialDefinitions(assets: MaterialAsset[], scenes: Pick<SceneViewportDocument, 'id'>[], scope?: MaterialDefinitionScope): void;
5152
- load(documentOrUrl: VisSceneDocument | VisSceneManifest | string, hooks?: Record<string, any>, options?: {
5192
+ load(documentOrUrl: SceneSource, hooks?: Record<string, any>, options?: {
5153
5193
  /** Transfer a detached document to the manager; the caller must not mutate it afterwards. */
5154
5194
  consumeInput?: boolean;
5155
5195
  /** Restore a saved active scene without changing the project's entry scene. */
@@ -5164,14 +5204,14 @@ export declare class SceneManager extends Event_2 {
5164
5204
  * 以指定地图模板和行政区直接启动,不先加载文档配置的入口场景。
5165
5205
  * 适用于宿主按路由或业务参数决定初始省、市、区的场景。
5166
5206
  */
5167
- loadMapRegion(documentOrUrl: VisSceneDocument | VisSceneManifest | string, sceneId: string, adcode: number, hooks?: Record<string, any>): Promise<Map_4>;
5168
- loadMapRegion(documentOrUrl: VisSceneDocument | VisSceneManifest | string, adcode: number, resolveScene: MapRegionSceneResolver, hooks?: Record<string, any>): Promise<Map_4>;
5207
+ loadMapRegion(documentOrUrl: SceneSource, sceneId: string, adcode: number, hooks?: Record<string, any>): Promise<Map_4>;
5208
+ loadMapRegion(documentOrUrl: SceneSource, adcode: number, resolveScene: MapRegionSceneResolver, hooks?: Record<string, any>): Promise<Map_4>;
5169
5209
  /**
5170
5210
  * Follow a host's latest region request, loading a new source only when needed.
5171
5211
  * Superseded requests reject with AbortError; only the latest candidate commits.
5172
5212
  * Existing click/back navigation finishes before the requested region starts.
5173
5213
  */
5174
- requestMapRegion(source: VisSceneDocument | VisSceneManifest | string, adcode: number, resolveScene: MapRegionSceneResolver, options?: MapRegionOptions): Promise<Map_4>;
5214
+ requestMapRegion(source: SceneSource, adcode: number, resolveScene: MapRegionSceneResolver, options?: MapRegionOptions): Promise<Map_4>;
5175
5215
  private loadMapRegionRequest;
5176
5216
  private loadDocument;
5177
5217
  private getSceneMetadata;
@@ -5251,8 +5291,8 @@ export declare interface SceneManagerBehaviorOptions {
5251
5291
  export declare type SceneManagerInitOptions = SceneManagerOptions & SceneManagerBehaviorOptions;
5252
5292
 
5253
5293
  export declare interface SceneManagerOptions extends Pick<BaseOptions, 'container' | 'controlsContainer' | 'css2DContainer' | 'assetsPrefix' | 'pencilConfig' | 'logarithmicDepthBuffer' | 'tier' | 'observeParentScale'> {
5254
- /** 动态行政区数据访问使用的授权 key。 */
5255
- mapSwitchKey?: string;
5294
+ /** Editor authoring may add dependencies after opening a bundle. Runtime defaults to strict. */
5295
+ strictBundleAssets?: boolean;
5256
5296
  /** 宿主大屏图表等覆盖区域形成的运行时地图安全区。 */
5257
5297
  safeAreaInsets?: Partial<MapSafeAreaInsets>;
5258
5298
  }
@@ -5321,7 +5361,7 @@ declare class SceneResources_2 {
5321
5361
  private objectLeases;
5322
5362
  private sceneLeases;
5323
5363
  private geometryLeases;
5324
- readonly emptyGeometryObjects: Set<Object3D< Object3DEventMap>>;
5364
+ readonly emptyGeometryObjects: Set<Object3D_2< Object3DEventMap>>;
5325
5365
  private emptyGeometryOwners;
5326
5366
  private nativeObjectLeases;
5327
5367
  private proxiedObjects;
@@ -5372,7 +5412,7 @@ declare class SceneResources_2 {
5372
5412
  private updateBaseObjectMap;
5373
5413
  rmBaseObjectMap(object: BaseObject, targetMaterial?: Material | Material[]): void;
5374
5414
  private releaseBaseObjectMap;
5375
- getBaseObjectMap(material: Material): Set<BaseObject<Object3D< Object3DEventMap>>>;
5415
+ getBaseObjectMap(material: Material): Set<BaseObject<Object3D_2< Object3DEventMap>>>;
5376
5416
  setLocked(key: string, locked?: boolean): boolean;
5377
5417
  lock(key: string): boolean;
5378
5418
  unlock(key: string): boolean;
@@ -5397,7 +5437,7 @@ declare class SceneSerializer {
5397
5437
  constructor(lead: Lead_2);
5398
5438
  exportCompressBaseObject(root: BaseObject, options?: ExportBaseObjectOptions): Promise<ArrayBuffer>;
5399
5439
  exportBaseObject(root: BaseObject, options?: ExportBaseObjectOptions): SceneSnapshot;
5400
- restoreBaseObject(target: BaseObject, data: string | ArrayBuffer | Object3DJSON, registry?: Record<string, new (...args: any[]) => any>, roomEnvMap?: any, createIfNeeded?: boolean, signal?: AbortSignal, options?: RestoreBaseObjectOptions): Promise<BaseObject<Object3D< Object3DEventMap>>>;
5440
+ restoreBaseObject(target: BaseObject, data: string | ArrayBuffer | Object3DJSON, registry?: Record<string, new (...args: any[]) => any>, roomEnvMap?: any, createIfNeeded?: boolean, signal?: AbortSignal, options?: RestoreBaseObjectOptions): Promise<BaseObject<Object3D_2< Object3DEventMap>>>;
5401
5441
  private _graftObject3d;
5402
5442
  }
5403
5443
 
@@ -5405,6 +5445,9 @@ declare type SceneSnapshot = Object3DJSON & {
5405
5445
  materialAliases?: Record<string, SerializedMaterialAlias>;
5406
5446
  };
5407
5447
 
5448
+ /** File transport accepts ZIP bundles; in-memory documents remain available for editor integration. */
5449
+ export declare type SceneSource = VisSceneDocument | VisSceneManifest | string | SceneBundleBinary;
5450
+
5408
5451
  export declare type SceneStructureGraphKey = 'materialAliases' | 'shapes' | '_sharedOptionsPool' | '_texDataPool';
5409
5452
 
5410
5453
  /** Metadata is part of an owned structure transaction, never a scalar runtime patch. */
@@ -5760,6 +5803,38 @@ declare type StructureResourceKind = typeof resourceKinds[number];
5760
5803
 
5761
5804
  export declare type StructureResources = Record<ResourceKind, Record<string, any>[]>;
5762
5805
 
5806
+ /** One compositor for surface effects. The authored scene keeps native materials
5807
+ * and JSON parameters; only GPU draws receive gradient → scan → reflection views. */
5808
+ declare class SurfaceEffects {
5809
+ private readonly index;
5810
+ private readonly time;
5811
+ private readonly materials;
5812
+ private readonly reflections;
5813
+ private frame;
5814
+ private rendering;
5815
+ private disposed;
5816
+ private readonly clocks;
5817
+ readonly stats: {
5818
+ activePlanes: number;
5819
+ candidates: number;
5820
+ resolution: number;
5821
+ animations: number;
5822
+ gradients: number;
5823
+ waters: number;
5824
+ animationTime: number;
5825
+ surfaces: string[];
5826
+ };
5827
+ getTime(scene: Scene): number;
5828
+ /** Invalidate after changing metadata or material bindings; native graph edits
5829
+ * are observed automatically. No scene traversal is needed on ordinary frames. */
5830
+ invalidate(scene?: Object3D): void;
5831
+ private bypass;
5832
+ private material;
5833
+ render<T>(renderer: WebGPURenderer, scene: Scene, camera: Camera_2, draw: () => T): T;
5834
+ private clear;
5835
+ dispose(): void;
5836
+ }
5837
+
5763
5838
  export declare interface SwitchSceneOptions {
5764
5839
  /** 返回历史时不再记录当前场景。 */
5765
5840
  recordHistory?: boolean;
@@ -5797,7 +5872,7 @@ declare class TransformControlsController {
5797
5872
  private viewScene?;
5798
5873
  private viewport?;
5799
5874
  get detach(): () => TransformControls;
5800
- get attach(): (object: Object3D_2) => TransformControls;
5875
+ get attach(): (object: Object3D) => TransformControls;
5801
5876
  event: EventEmitter;
5802
5877
  constructor(options: Options_7);
5803
5878
  setViewport(viewport: Viewport): void;
@@ -5857,7 +5932,7 @@ declare class UseMaterial extends PointerEvent_2 {
5857
5932
  lead: Lead_2;
5858
5933
  sceneResources: SceneResources_2;
5859
5934
  userData: Record<string, any>;
5860
- object3d: Object3D;
5935
+ object3d: Object3D_2;
5861
5936
  cloneMaterial(): Material< MaterialEventMap> | Material< MaterialEventMap>[] | undefined;
5862
5937
  useSceneMaterialById(id: string, slot?: number): void;
5863
5938
  useSceneMaterialByName(name: string, slot?: number): void;
@@ -5866,7 +5941,7 @@ declare class UseMaterial extends PointerEvent_2 {
5866
5941
 
5867
5942
  declare type ValuesOf<T extends readonly any[]> = T[number];
5868
5943
 
5869
- export declare const VERSION = "0.33.16";
5944
+ export declare const VERSION = "0.33.17";
5870
5945
 
5871
5946
  declare interface Viewport {
5872
5947
  left: number;
@@ -5881,6 +5956,7 @@ declare interface Viewport {
5881
5956
  export declare function visitSceneIdentityReferences(scene: any, objectIdentity: boolean, visit: (path: IdentityPath, value: any, track?: boolean, key?: boolean) => void): void;
5882
5957
 
5883
5958
  export declare interface VisSceneDocument extends SceneDocumentMarker {
5959
+ runtimeAssets?: RuntimeAssetCatalog;
5884
5960
  entrySceneId: string;
5885
5961
  scenes: SceneViewportDocument[];
5886
5962
  /** Schema 3: scene payloads; schema 6 also shares material-library payloads. */
@@ -5897,7 +5973,9 @@ export declare interface VisSceneDocument extends SceneDocumentMarker {
5897
5973
 
5898
5974
  export declare interface VisSceneManifest {
5899
5975
  format: typeof SCENE_MANIFEST_FORMAT;
5900
- schemaVersion: 1 | 2 | typeof SCENE_MANIFEST_SCHEMA_VERSION;
5976
+ schemaVersion: 1 | 2 | 3 | typeof SCENE_MANIFEST_SCHEMA_VERSION;
5977
+ /** Manifest 4: complete static dependencies, shared by every scene. */
5978
+ runtimeAssets?: RuntimeAssetCatalog;
5901
5979
  entrySceneId: string;
5902
5980
  scenes: SceneManifestEntry[];
5903
5981
  materialLibrary?: MaterialAsset[];
@@ -5913,35 +5991,6 @@ export declare interface VisSceneManifest {
5913
5991
  s?: string;
5914
5992
  }
5915
5993
 
5916
- declare class Water extends Mesh_2<BufferGeometry, NodeMaterial & { uniforms: Record<string, IUniform> }> {
5917
- static WaterShader: WaterShader;
5918
- isWater: true;
5919
- constructor(geometry: BufferGeometry, options: WaterOptions);
5920
- dispose(): void;
5921
- }
5922
-
5923
- declare interface WaterOptions {
5924
- resources?: ResourceRegistry;
5925
- color?: ColorRepresentation;
5926
- textureWidth?: number;
5927
- textureHeight?: number;
5928
- clipBias?: number;
5929
- flowDirection?: Vector2_2;
5930
- flowSpeed?: number;
5931
- reflectivity?: number;
5932
- scale?: number;
5933
- shader?: WaterShader;
5934
- flowMap?: Texture;
5935
- normalMap0: Texture;
5936
- normalMap1: Texture;
5937
- }
5938
-
5939
- declare interface WaterShader {
5940
- name: string;
5941
- uniforms: Record<string, IUniform>;
5942
- colorNode?: Node_2 | ((uniforms: Record<string, IUniform>, defaultColor: Node_2) => Node_2);
5943
- }
5944
-
5945
5994
  declare type WidthCallback = (p: number) => number;
5946
5995
 
5947
5996
  export { }