2018-10-09 20:37:28 +08:00

117 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import UI from '../../ui/UI';
import Ajax from '../../utils/Ajax';
import ModelLoader from '../../loader/ModelLoader';
import AddObjectCommand from '../../command/AddObjectCommand';
import MMDEditWindow from './MMDEditWindow';
/**
* MMD窗口
* @author tengge / https://github.com/tengge1
* @param {*} options
*/
function MMDWindow(options) {
UI.ImageListWindow.call(this, options);
this.app = options.app;
this.title = 'MMD资源列表';
this.imageIcon = 'icon-model';
this.cornerTextField = 'Type';
this.uploadUrl = `${this.app.options.server}/api/MMD/Add`;
this.preImageUrl = this.app.options.server;
this.showUploadButton = true;
this.onSelect = options.onSelect || null;
}
MMDWindow.prototype = Object.create(UI.ImageListWindow.prototype);
MMDWindow.prototype.constructor = MMDWindow;
MMDWindow.prototype.beforeUpdateList = function () {
var server = this.app.options.server;
return new Promise(resolve => {
Ajax.getJson(`${server}/api/MMD/List`, obj => {
resolve(obj.Data);
});
});
};
MMDWindow.prototype.onUpload = function (obj) {
this.update();
UI.msg(obj.Msg);
};
MMDWindow.prototype.onClick = function (model) {
if (model.Type === 'vmd') {
if (this.onSelect) {
this.onSelect(model);
} else {
UI.msg(`无法将动画文件添加到场景。`);
}
return;
}
var loader = new ModelLoader(this.app);
var url = model.Url;
if (model.Url.indexOf(';') > -1) { // 包含多个入口文件
url = url.split(';').map(n => this.app.options.server + n);
} else {
url = this.app.options.server + model.Url;
}
loader.load(url, model).then(obj => {
if (!obj) {
return;
}
obj.name = model.Name;
Object.assign(obj.userData, model, {
Server: true
});
var cmd = new AddObjectCommand(obj);
cmd.execute();
if (obj.userData.scripts) {
obj.userData.scripts.forEach(n => {
this.app.editor.scripts[n.uuid] = n;
});
this.app.call('scriptChanged', this);
}
this.hide();
});
};
MMDWindow.prototype.onEdit = function (data) {
if (this.editWindow === undefined) {
this.editWindow = new MMDEditWindow({
app: this.app,
parent: this.parent,
callback: this.update.bind(this)
});
this.editWindow.render();
}
this.editWindow.setData(data);
this.editWindow.show();
};
MMDWindow.prototype.onDelete = function (data) {
var server = this.app.options.server;
UI.confirm('询问', `是否删除MMD资源${data.Name}`, (event, btn) => {
if (btn === 'ok') {
Ajax.post(`${server}/api/MMD/Delete?ID=${data.ID}`, json => {
var obj = JSON.parse(json);
if (obj.Code === 200) {
this.update();
}
UI.msg(obj.Msg);
});
}
});
};
export default MMDWindow;