export works, todo: link/button-issue

This commit is contained in:
Leon van Kammen 2024-03-15 16:50:27 +00:00
parent 24f1336c41
commit 49cb5e57df
2 changed files with 23 additions and 20 deletions

View file

@ -117,7 +117,7 @@ $editor = (el,opts) => new Proxy({
} }
}) })
document.addEventListener('frontend.export', (e) => this.updateOriginalScene(e.detail) ) xrf.addEventListener('export', (e) => this.updateOriginalScene(e) )
xrf.addEventListener('href', (opts) => { xrf.addEventListener('href', (opts) => {
if( this.selecting || this.editing ) return opts.promise().reject("$editor should block hrefs while editing") // never resolve (block hrefs from interfering) if( this.selecting || this.editing ) return opts.promise().reject("$editor should block hrefs while editing") // never resolve (block hrefs from interfering)
}) })

View file

@ -239,22 +239,24 @@ window.frontend = (opts) => new Proxy({
}, },
download(){ download(){
// setup exporters
let defaultExporter = THREE.GLTFExporter
xrf.loaders['gltf'].exporter = defaultExporter
xrf.loaders['glb'].exporter = defaultExporter
function download(dataurl, filename) { function download(dataurl, filename) {
var a = document.createElement("a"); var a = document.createElement("a");
a.href = dataurl; a.href = URL.createObjectURL( new Blob([dataurl]) );
a.setAttribute("download", filename); a.setAttribute("download", filename);
a.click(); a.click();
return false; return false;
} }
function exportScene(model,ext){ function exportScene(model,ext,file){
const exporter = new (xrf.loaders[ext].exporter || defaultExporter)
document.dispatchEvent( new CustomEvent('frontend.export',{detail:{ scene: model.scene,ext}}) ) document.dispatchEvent( new CustomEvent('frontend.export',{detail:{ scene: model.scene,ext}}) )
xrf.emit('export', {scene: model.scene, ext})
.then( () => {
// setup exporters
let defaultExporter = THREE.GLTFExporter
xrf.loaders['gltf'].exporter = defaultExporter
xrf.loaders['glb'].exporter = defaultExporter
const exporter = new THREE.GLTFExporter()
exporter.parse( exporter.parse(
model.scene, model.scene,
function ( glb ) { download(glb, `${file}`) }, // ready function ( glb ) { download(glb, `${file}`) }, // ready
@ -267,6 +269,7 @@ window.frontend = (opts) => new Proxy({
trs:true trs:true
} }
); );
})
} }
// load original scene and overwrite with updates // load original scene and overwrite with updates