blockbench/js/web.js

121 lines
3.0 KiB
JavaScript
Raw Normal View History

2017-10-27 01:00:52 +08:00
(function() {
2018-10-18 01:50:25 +08:00
$.getScript("lib/file_saver.js");
2019-01-09 22:54:35 +08:00
$.getScript('https://rawgit.com/nodeca/pako/master/dist/pako.js', function() {
window.zlib = pako
})
2017-10-27 01:00:52 +08:00
})()
2018-10-18 01:50:25 +08:00
$(document).ready(function() {
$('.open-in-browser').click((event) => {
event.preventDefault();
window.open(event.target.href, '_blank');
});
})
2018-03-29 02:48:11 +08:00
2017-10-27 01:00:52 +08:00
function tryLoadPOSTModel() {
2018-10-18 01:50:25 +08:00
if ($('#post_model').text() !== '') {
if ($('#post_textures').text() !== '') {
Project.dataURLTextures = true
}
loadModel($('#post_model').text(), 'model')
//$('#post_model').remove()
if ($('#post_textures').text() !== '') {
var data = JSON.parse( $('#post_textures').text() )
for (var key in data) {
2019-02-04 04:09:35 +08:00
var tex = textures.findInArray('id', key+'');
if (tex) {
tex.img.src = ''
tex.source = 'data:image/png;base64,'+data[key]
2018-10-18 01:50:25 +08:00
}
}
textures.forEach(function(tex) {
tex.load()
})
}
return true;
2017-10-27 01:00:52 +08:00
} else {
2018-10-18 01:50:25 +08:00
return false
2017-10-27 01:00:52 +08:00
}
}
//Saver
2018-10-24 03:49:04 +08:00
function writeFileObj() {
2018-12-03 02:37:06 +08:00
var delay = 40
2018-10-18 01:50:25 +08:00
var content = buildOBJModel('model')
//OBJECT
var blob_obj = new Blob([content.obj], {type: "text/plain;charset=utf-8"});
2018-10-24 03:49:04 +08:00
var obj_saver = saveAs(blob_obj, 'model.obj', {autoBOM: true})
2018-10-18 01:50:25 +08:00
2018-12-03 02:37:06 +08:00
setTimeout(function() {
2018-10-18 01:50:25 +08:00
//MATERIAL
var blob_mtl = new Blob([content.mtl], {type: "text/plain;charset=utf-8"});
2018-12-03 02:37:06 +08:00
saveAs(blob_mtl, 'model.mtl', {autoBOM: true})
setTimeout(function() {
2018-10-18 01:50:25 +08:00
if (settings.obj_textures.value === true) {
var tex_i = 0
function saveTex() {
if (textures[tex_i] && content.images.hasOwnProperty(textures[tex_i].id)) {
var image_data = atob(textures[tex_i].source.split(',')[1]);
var arraybuffer = new ArrayBuffer(image_data.length);
var view = new Uint8Array(arraybuffer);
for (var i=0; i<image_data.length; i++) {
view[i] = image_data.charCodeAt(i) & 0xff;
}
var blob = new Blob([arraybuffer], {type: 'application/octet-stream'})
var img_saver = saveAs(blob, textures[tex_i].name)
2018-12-03 02:37:06 +08:00
setTimeout(function() {
2018-10-18 01:50:25 +08:00
tex_i++
saveTex()
2018-12-03 02:37:06 +08:00
}, delay)
2018-10-18 01:50:25 +08:00
} else if (textures[tex_i]) {
tex_i++
saveTex()
} else {
Blockbench.showQuickMessage(tl('message.save_obj'))
}
}
saveTex()
} else {
Blockbench.showQuickMessage(tl('message.save_obj'))
}
2018-12-03 02:37:06 +08:00
}, delay)
}, delay)
2017-10-27 01:00:52 +08:00
}
function saveFile() {
2018-12-27 21:03:04 +08:00
if (Blockbench.entity_mode === false) {
BarItems.export_blockmodel.trigger()
} else {
BarItems.export_entity.trigger()
}
2017-10-27 01:00:52 +08:00
}
//Misc
window.onbeforeunload = function() {
2018-03-29 02:48:11 +08:00
if (Prop.project_saved === false && elements.length > 0) {
2018-10-18 01:50:25 +08:00
return true;
2017-10-27 01:00:52 +08:00
}
}
function showSaveDialog(close) {
2018-10-18 01:50:25 +08:00
var unsaved_textures = 0;
textures.forEach(function(t) {
if (!t.saved) {
unsaved_textures++;
}
})
if ((Prop.project_saved === false && elements.length > 0) || unsaved_textures) {
var answer = confirm(tl('message.close_warning.web'))
if (answer == true) {
if (close) {
//preventClosing = false
}
return true;
} else {
return false;
}
} else {
return true;
}
2017-10-27 01:00:52 +08:00
}