| @@ -23,7 +23,7 @@ async function init() { | |||
| rgbm: true, | |||
| dropzone: { | |||
| addOptions: { | |||
| clearSceneObjects: false, | |||
| clearSceneObjects: false, // clear the scene before adding new objects on drop. | |||
| }, | |||
| }, | |||
| }) | |||
| @@ -22,7 +22,7 @@ export type ExportFileOptions = { | |||
| /** | |||
| * Export and bundle the viewer config (scene settings). | |||
| * only works for rootSceneModelRoot and supported only in GLTFExporter2 {@link GLTFExporter2Options.viewerConfig} | |||
| * @default true | |||
| * {@default true} | |||
| */ | |||
| viewerConfig?: boolean, | |||
| @@ -253,9 +253,23 @@ export class PerspectiveCamera2 extends PerspectiveCamera implements ICamera { | |||
| } | |||
| fromJSON(data: any, meta?: any): this | null { | |||
| if (data.camOptions || data.aspect === 'auto') | |||
| data = {...data} | |||
| 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') { | |||
| data.aspect = this.aspect | |||
| @@ -161,9 +161,15 @@ export class TonemapPlugin extends AViewerPluginSync<''> implements MaterialExte | |||
| delete data.extension.enabled | |||
| delete data.pass | |||
| } | |||
| // legacy | |||
| 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) | |||
| } | |||