| rgbm: true, | rgbm: true, | ||||
| dropzone: { | dropzone: { | ||||
| addOptions: { | addOptions: { | ||||
| clearSceneObjects: false, | |||||
| clearSceneObjects: false, // clear the scene before adding new objects on drop. | |||||
| }, | }, | ||||
| }, | }, | ||||
| }) | }) |
| /** | /** | ||||
| * Export and bundle the viewer config (scene settings). | * Export and bundle the viewer config (scene settings). | ||||
| * only works for rootSceneModelRoot and supported only in GLTFExporter2 {@link GLTFExporter2Options.viewerConfig} | * only works for rootSceneModelRoot and supported only in GLTFExporter2 {@link GLTFExporter2Options.viewerConfig} | ||||
| * @default true | |||||
| * {@default true} | |||||
| */ | */ | ||||
| viewerConfig?: boolean, | viewerConfig?: boolean, | ||||
| } | } | ||||
| fromJSON(data: any, meta?: any): this | null { | fromJSON(data: any, meta?: any): this | null { | ||||
| if (data.camOptions || data.aspect === 'auto') | |||||
| data = {...data} | |||||
| if (data.camOptions) { | if (data.camOptions) { | ||||
| // todo | |||||
| console.error('todo: old file camOptions') | |||||
| const op = data.camOptions | |||||
| if (op.fov) data.fov = op.fov | |||||
| if (op.focus) data.focus = op.focus | |||||
| if (op.zoom) data.zoom = op.zoom | |||||
| if (op.aspect) data.aspect = op.aspect | |||||
| // todo: add support for this | |||||
| // if (op.left) data.left = op.left | |||||
| // if (op.right) data.right = op.right | |||||
| // if (op.top) data.top = op.top | |||||
| // if (op.bottom) data.bottom = op.bottom | |||||
| // if (op.frustumSize) data.frustumSize = op.frustumSize | |||||
| // if (op.controlsMode) data.controlsMode = op.controlsMode | |||||
| // if (op.controlsEnabled) data.controlsEnabled = op.controlsEnabled | |||||
| delete data.camOptions | |||||
| } | } | ||||
| if (data.aspect === 'auto') { | if (data.aspect === 'auto') { | ||||
| data.aspect = this.aspect | data.aspect = this.aspect |
| delete data.extension.enabled | delete data.extension.enabled | ||||
| delete data.pass | delete data.pass | ||||
| } | } | ||||
| // legacy | |||||
| if (data.extension) { | if (data.extension) { | ||||
| console.error('TODO: old file') | |||||
| return null | |||||
| data = {...data, ...data.extension} | |||||
| delete data.extension | |||||
| if (data.clipBackground !== undefined) { | |||||
| if (this._viewer) this._viewer.renderManager.screenPass.clipBackground = data.clipBackground | |||||
| else console.warn('TonemapPlugin: no viewer attached, clipBackground ignored') | |||||
| delete data.clipBackground | |||||
| } | |||||
| } | } | ||||
| return super.fromJSON(data, meta) | return super.fromJSON(data, meta) | ||||
| } | } |