gl-draw 0.18.15 → 0.18.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
@@ -99,7 +99,9 @@ export declare class AmbientLightObject extends BaseObject<AmbientLight> {
99
99
  constructor(lightOrColor?: AmbientLight | string | number, intensity?: number);
100
100
  }
101
101
 
102
- declare function analyzeSceneJsonSize(sceneJson: any): void;
102
+ declare const _analysisCategoryKeys: readonly ["geometries", "materials", "textures", "images"];
103
+
104
+ declare function analyzeSceneExport(sceneJson: any, exportReport?: SceneExportReport): SceneJsonSizeAnalysis;
103
105
 
104
106
  declare function applyTextureColorSpace({ node, material, texture, }: ColorCorrectionOptions): void;
105
107
 
@@ -1721,6 +1723,13 @@ declare class EventDispatcher {
1721
1723
  dispatchEvent(event: DispatcherEvent): void;
1722
1724
  }
1723
1725
 
1726
+ declare interface ExportBaseObjectOptions {
1727
+ checkTextures?: boolean;
1728
+ includeHiddenChildren?: boolean;
1729
+ includeUnusedUnlockedMListMaterials?: boolean;
1730
+ includeAnalysisMeta?: boolean;
1731
+ }
1732
+
1724
1733
  /**
1725
1734
  * Custom ExtrudeGeometry extending Three.js ExtrudeGeometry.
1726
1735
  */
@@ -1910,7 +1919,7 @@ export declare class Lead extends Pick_2 {
1910
1919
  setSize(width: number, height: number): void;
1911
1920
  eraseAll(): void;
1912
1921
  private _serializer;
1913
- exportBaseObject(...args: Parameters<SceneSerializer['exportBaseObject']>): string;
1922
+ exportBaseObject(...args: Parameters<SceneSerializer['exportBaseObject']>): Object3DJSON;
1914
1923
  restoreBaseObject(...args: Parameters<SceneSerializer['restoreBaseObject']>): Promise<BaseObject<Object3D<Object3DEventMap>>>;
1915
1924
  dispose(): void;
1916
1925
  }
@@ -2190,10 +2199,13 @@ declare class MList {
2190
2199
  pencil: Pencil;
2191
2200
  private materials;
2192
2201
  fixBaseObjects: Map<string, BaseObject>;
2202
+ private lockedKeys;
2193
2203
  private materialBaseObjectMap;
2194
2204
  private static _emptyGeometry;
2195
2205
  constructor(pencil: Pencil);
2196
- add(key: string, material: Material): void;
2206
+ add(key: string, material: Material, ops?: {
2207
+ locked?: boolean;
2208
+ }): void;
2197
2209
  get(key: string): Material | undefined;
2198
2210
  getByName(name: string): Material | undefined;
2199
2211
  getKey(material: Material): string | undefined;
@@ -2213,6 +2225,12 @@ declare class MList {
2213
2225
  addBaseObjectMap(object: BaseObject): void;
2214
2226
  rmBaseObjectMap(object: BaseObject, targetMaterial?: Material | Material[]): void;
2215
2227
  getBaseObjectMap(material: Material): Set<BaseObject<Object3D<Object3DEventMap>>>;
2228
+ setLocked(key: string, locked?: boolean): boolean;
2229
+ lock(key: string): boolean;
2230
+ unlock(key: string): boolean;
2231
+ isLocked(key: string): boolean;
2232
+ isMaterialUsed(key: string): boolean;
2233
+ shouldExportFixBaseObject(key: string, includeUnusedUnlockedMaterials?: boolean): boolean;
2216
2234
  syncChangeMaterial(oldMaterial: Material, material: Material): void;
2217
2235
  dispose(): void;
2218
2236
  }
@@ -2837,6 +2855,155 @@ declare class ScanEffect_2 {
2837
2855
  stop(): void;
2838
2856
  }
2839
2857
 
2858
+ declare interface SceneExportReasonStat {
2859
+ code: SceneExportSkipReasonCode;
2860
+ label: string;
2861
+ count: number;
2862
+ }
2863
+
2864
+ declare interface SceneExportReport {
2865
+ generatedAt: string;
2866
+ summary: {
2867
+ skippedCount: number;
2868
+ skippedObjectCount: number;
2869
+ skippedMaterialCount: number;
2870
+ lockRequiredMaterialCount: number;
2871
+ reasonStats: SceneExportReasonStat[];
2872
+ };
2873
+ objects: SceneExportSkippedObjectReportItem[];
2874
+ materials: SceneExportSkippedMaterialReportItem[];
2875
+ items: SceneExportSkippedReportItem[];
2876
+ }
2877
+
2878
+ declare interface SceneExportReportAction {
2879
+ type: 'lock-material';
2880
+ label: string;
2881
+ hint: string;
2882
+ key: string;
2883
+ command: string;
2884
+ }
2885
+
2886
+ declare interface SceneExportReportViewCard {
2887
+ key: string;
2888
+ label: string;
2889
+ value: number;
2890
+ tone?: 'default' | 'warning';
2891
+ }
2892
+
2893
+ declare interface SceneExportReportViewItem {
2894
+ id: string;
2895
+ title: string;
2896
+ subtitle?: string;
2897
+ reasonLabel: string;
2898
+ reasonDetail: string;
2899
+ tags: string[];
2900
+ action?: SceneExportSkippedReportItem['action'];
2901
+ }
2902
+
2903
+ declare interface SceneExportReportViewModel {
2904
+ cards: SceneExportReportViewCard[];
2905
+ sections: SceneExportReportViewSection[];
2906
+ }
2907
+
2908
+ declare interface SceneExportReportViewSection {
2909
+ key: 'objects' | 'materials';
2910
+ title: string;
2911
+ emptyText: string;
2912
+ count: number;
2913
+ items: SceneExportReportViewItem[];
2914
+ }
2915
+
2916
+ declare interface SceneExportSkippedMaterialReportItem extends SceneExportSkippedReportItemBase {
2917
+ category: 'material';
2918
+ name: string;
2919
+ locked: boolean;
2920
+ used: boolean;
2921
+ }
2922
+
2923
+ declare interface SceneExportSkippedObjectReportItem extends SceneExportSkippedReportItemBase {
2924
+ category: 'object';
2925
+ name: string;
2926
+ objectType: string;
2927
+ hiddenBy?: {
2928
+ key: string;
2929
+ title: string;
2930
+ };
2931
+ }
2932
+
2933
+ declare type SceneExportSkippedReportItem = SceneExportSkippedObjectReportItem | SceneExportSkippedMaterialReportItem;
2934
+
2935
+ declare interface SceneExportSkippedReportItemBase {
2936
+ id: string;
2937
+ category: 'object' | 'material';
2938
+ key: string;
2939
+ title: string;
2940
+ subtitle?: string;
2941
+ reasonCode: SceneExportSkipReasonCode;
2942
+ reasonLabel: string;
2943
+ reasonDetail: string;
2944
+ action?: SceneExportReportAction;
2945
+ }
2946
+
2947
+ declare type SceneExportSkipReasonCode = 'node-object' | 'select-hide' | 'hidden-self' | 'hidden-parent' | 'unused-unlocked-material';
2948
+
2949
+ declare type SceneJsonAnalysisCategoryKey = (typeof _analysisCategoryKeys)[number];
2950
+
2951
+ declare interface SceneJsonAnalysisCategorySummary {
2952
+ key: SceneJsonAnalysisCategoryKey;
2953
+ label: string;
2954
+ count: number;
2955
+ size: SceneJsonSizeInfo;
2956
+ topItems: SceneJsonAnalysisCategoryTopItem[];
2957
+ }
2958
+
2959
+ declare interface SceneJsonAnalysisCategoryTopItem {
2960
+ uuid: string;
2961
+ type?: string;
2962
+ name?: string;
2963
+ usedBy: string;
2964
+ size: SceneJsonSizeInfo;
2965
+ }
2966
+
2967
+ declare interface SceneJsonAnalysisEmptyImage {
2968
+ uuid: string;
2969
+ usedBy: string;
2970
+ }
2971
+
2972
+ declare interface SceneJsonAnalysisExportReportSummary {
2973
+ summary: SceneExportReport['summary'];
2974
+ viewModel: SceneExportReportViewModel;
2975
+ }
2976
+
2977
+ declare interface SceneJsonAnalysisObjectGraphSummary {
2978
+ structureSize: SceneJsonSizeInfo;
2979
+ options?: SceneJsonAnalysisObjectOptionsSummary;
2980
+ }
2981
+
2982
+ declare interface SceneJsonAnalysisObjectOptionItem {
2983
+ key: string;
2984
+ type: string;
2985
+ size: SceneJsonSizeInfo;
2986
+ }
2987
+
2988
+ declare interface SceneJsonAnalysisObjectOptionsSummary {
2989
+ totalSize: SceneJsonSizeInfo;
2990
+ sharedRefCount: number;
2991
+ topItems: SceneJsonAnalysisObjectOptionItem[];
2992
+ }
2993
+
2994
+ declare interface SceneJsonAnalysisSharedOptionsEntry {
2995
+ index: number;
2996
+ size: SceneJsonSizeInfo;
2997
+ }
2998
+
2999
+ declare interface SceneJsonAnalysisSharedOptionsPool {
3000
+ count: number;
3001
+ size: SceneJsonSizeInfo;
3002
+ topEntries: SceneJsonAnalysisSharedOptionsEntry[];
3003
+ totalReferences: number;
3004
+ duplicatesEliminated: number;
3005
+ }
3006
+
2840
3007
  /**
2841
3008
  * 场景 JSON 引用回溯工具
2842
3009
  * 从 sceneJson 中构建 uuid -> 可读路径 的映射表
@@ -2862,6 +3029,20 @@ declare class SceneJsonRefTracer {
2862
3029
  private _traceTextures;
2863
3030
  }
2864
3031
 
3032
+ declare interface SceneJsonSizeAnalysis {
3033
+ total: SceneJsonSizeInfo;
3034
+ exportReport?: SceneJsonAnalysisExportReportSummary;
3035
+ emptyUrlImages: SceneJsonAnalysisEmptyImage[];
3036
+ categories: SceneJsonAnalysisCategorySummary[];
3037
+ sharedOptionsPool?: SceneJsonAnalysisSharedOptionsPool;
3038
+ objectGraph?: SceneJsonAnalysisObjectGraphSummary;
3039
+ }
3040
+
3041
+ declare interface SceneJsonSizeInfo {
3042
+ bytes: number;
3043
+ mbStr: string;
3044
+ }
3045
+
2865
3046
  declare class ScenePages extends OrigonPages<Scene> {
2866
3047
  options: Options_4;
2867
3048
  get scene(): Scene<Object3DEventMap>;
@@ -2883,12 +3064,11 @@ declare class SceneSerializer {
2883
3064
  private get prefabGroup();
2884
3065
  private get mList();
2885
3066
  private get objects();
2886
- exportCompressBaseObject(root: BaseObject, { checkTextures }?: {
2887
- checkTextures?: boolean;
2888
- }): Promise<ArrayBuffer>;
2889
- exportBaseObject(root: BaseObject, { checkTextures }?: {
2890
- checkTextures?: boolean;
2891
- }): string;
3067
+ exportCompressBaseObject(root: BaseObject, options?: ExportBaseObjectOptions): Promise<ArrayBuffer>;
3068
+ exportBaseObject(root: BaseObject, { checkTextures, includeHiddenChildren, includeUnusedUnlockedMListMaterials, includeAnalysisMeta, }?: ExportBaseObjectOptions): Object3DJSON;
3069
+ private _getSkippedObjectReportItem;
3070
+ private _findHiddenAncestor;
3071
+ private _getBaseObjectTitle;
2892
3072
  restoreBaseObject(target: BaseObject, data: string | ArrayBuffer | Object3DJSON, registry?: Record<string, new (...args: any[]) => any>, roomEnvMap?: any, createIfNeeded?: boolean): Promise<BaseObject<Object3D<Object3DEventMap>>>;
2893
3073
  private _restoreFixBaseObjects;
2894
3074
  private _eraseNonCoreObjects;
@@ -2899,6 +3079,15 @@ declare class SceneSerializer {
2899
3079
  * 根据 objectType 和 registry 创建 BaseObject 实例
2900
3080
  */
2901
3081
  private _createInstance;
3082
+ /**
3083
+ * 还原前克隆输入,避免修改调用方持有的数据对象。
3084
+ * 如果 structuredClone 失败,会输出首个不可复制的属性路径。
3085
+ */
3086
+ private _cloneRestoreInput;
3087
+ private _findStructuredCloneFailure;
3088
+ private _appendClonePath;
3089
+ private _cloneObject3dUserData;
3090
+ private _normalizeStructuredCloneInput;
2902
3091
  /**
2903
3092
  * 安全地克隆 options,过滤掉不可序列化的 Three.js 对象
2904
3093
  */
@@ -3058,7 +3247,7 @@ declare class UseMaterial extends PointerEvent_2 {
3058
3247
 
3059
3248
  export declare const utils: {
3060
3249
  applyTextureColorSpace: typeof applyTextureColorSpace;
3061
- analyzeSceneJsonSize: typeof analyzeSceneJsonSize;
3250
+ analyzeSceneExport: typeof analyzeSceneExport;
3062
3251
  CacheManager: typeof CacheManager;
3063
3252
  cartographicToCartesian: typeof cartographicToCartesian;
3064
3253
  WGS84: {