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,34 +239,37 @@ 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}}) )
exporter.parse( xrf.emit('export', {scene: model.scene, ext})
model.scene, .then( () => {
function ( glb ) { download(glb, `${file}`) }, // ready // setup exporters
function ( error ) { console.error(error) }, // error let defaultExporter = THREE.GLTFExporter
{ xrf.loaders['gltf'].exporter = defaultExporter
binary:true, xrf.loaders['glb'].exporter = defaultExporter
onlyVisible: false, const exporter = new THREE.GLTFExporter()
animations: model.animations, exporter.parse(
includeCustomExtensions: true, model.scene,
trs:true function ( glb ) { download(glb, `${file}`) }, // ready
} function ( error ) { console.error(error) }, // error
); {
binary:true,
onlyVisible: false,
animations: model.animations,
includeCustomExtensions: true,
trs:true
}
);
})
} }
// load original scene and overwrite with updates // load original scene and overwrite with updates