From eae35a4aeb366fcd1e2ea224e5172a5b8e7a8807 Mon Sep 17 00:00:00 2001 From: liteng <930372551@qq.com> Date: Sat, 4 Aug 2018 12:20:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BF=9D=E5=AD=98=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E5=BC=95=E7=94=A8bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShadowEditor.Web/src/editor/Editor.js | 4 -- ShadowEditor.Web/src/event/EventDispatcher.js | 2 - ShadowEditor.Web/src/event/EventList.js | 1 - .../src/event/editor/SaveEvent.js | 54 ------------------- ShadowEditor.Web/src/event/index.js | 1 - .../src/event/menu/scene/SaveSceneEvent.js | 27 +++++++++- .../src/serialization/Converter.js | 11 ---- 7 files changed, 25 insertions(+), 75 deletions(-) delete mode 100644 ShadowEditor.Web/src/event/editor/SaveEvent.js diff --git a/ShadowEditor.Web/src/editor/Editor.js b/ShadowEditor.Web/src/editor/Editor.js index 802b408e..52e0648a 100644 --- a/ShadowEditor.Web/src/editor/Editor.js +++ b/ShadowEditor.Web/src/editor/Editor.js @@ -244,10 +244,6 @@ Editor.prototype.load = function () { // 加载场景 this.app.call('load', this); }; -Editor.prototype.save = function () { // 保存场景 - this.app.call('save', this); -}; - // --------------------- 命令事件 ------------------------ Editor.prototype.execute = function (cmd, optionalName) { // 执行事件 diff --git a/ShadowEditor.Web/src/event/EventDispatcher.js b/ShadowEditor.Web/src/event/EventDispatcher.js index 4f843450..0a6f3483 100644 --- a/ShadowEditor.Web/src/event/EventDispatcher.js +++ b/ShadowEditor.Web/src/event/EventDispatcher.js @@ -33,7 +33,6 @@ import RemoveScriptEvent from './editor/RemoveScriptEvent'; import SelectEvent from './editor/SelectEvent'; import ClearEvent from './editor/ClearEvent'; import LoadEvent from './editor/LoadEvent'; -import SaveEvent from './editor/SaveEvent'; // 工具栏 import SelectModeEvent from './toolbar/SelectModeEvent'; @@ -183,7 +182,6 @@ function EventDispatcher(app) { new SelectEvent(this.app), new ClearEvent(this.app), new LoadEvent(this.app), - new SaveEvent(this.app), // 工具栏 new SelectModeEvent(this.app), diff --git a/ShadowEditor.Web/src/event/EventList.js b/ShadowEditor.Web/src/event/EventList.js index 203b391d..72beb5ae 100644 --- a/ShadowEditor.Web/src/event/EventList.js +++ b/ShadowEditor.Web/src/event/EventList.js @@ -112,7 +112,6 @@ var EventList = [ 'select', // 选中事件 'clear', // 清空场景 'load', // 加载场景 - 'save', // 保存场景 // signal事件 'editScript', // 编辑脚本事件 diff --git a/ShadowEditor.Web/src/event/editor/SaveEvent.js b/ShadowEditor.Web/src/event/editor/SaveEvent.js deleted file mode 100644 index b908a01c..00000000 --- a/ShadowEditor.Web/src/event/editor/SaveEvent.js +++ /dev/null @@ -1,54 +0,0 @@ -import BaseEvent from '../BaseEvent'; -import UI from '../../ui/UI'; -import Converter from '../../serialization/Converter'; -import Ajax from '../../utils/Ajax'; - -/** - * 保存场景事件 - * @param {*} app - */ -function SaveEvent(app) { - BaseEvent.call(this, app); -} - -SaveEvent.prototype = Object.create(BaseEvent.prototype); -SaveEvent.prototype.constructor = SaveEvent; - -SaveEvent.prototype.start = function () { - this.app.on(`save.${this.id}`, this.onBeforeSave.bind(this)); -}; - -SaveEvent.prototype.stop = function () { - this.app.on(`save.${this.id}`, null); -}; - -SaveEvent.prototype.onBeforeSave = function () { - var sceneName = this.app.editor.sceneName; - - if (sceneName == null) { - var tempName = 'Scene' + new Date().getTime(); - UI.prompt('正在保存...', '场景名称', tempName, (event, name) => { - this.app.editor.sceneName = name; - document.title = name; - this.onSave(name); - }); - } else { - this.onSave(sceneName); - } -}; - -SaveEvent.prototype.onSave = function (sceneName) { - var obj = Converter.toJSON(this.app); - - Ajax.post(this.app.options.server + '/api/Scene/Save', { - Name: sceneName, - Data: JSON.stringify(obj) - }, function (result) { - var obj = JSON.parse(result); - UI.msg(obj.Msg); - }); -}; - - - -export default SaveEvent; \ No newline at end of file diff --git a/ShadowEditor.Web/src/event/index.js b/ShadowEditor.Web/src/event/index.js index 27a4d84a..45d7532e 100644 --- a/ShadowEditor.Web/src/event/index.js +++ b/ShadowEditor.Web/src/event/index.js @@ -25,7 +25,6 @@ export { default as NameObjectEvent } from './editor/NameObjectEvent'; export { default as RemoveHelperEvent } from './editor/RemoveHelperEvent'; export { default as RemoveObjectEvent } from './editor/RemoveObjectEvent'; export { default as RemoveScriptEvent } from './editor/RemoveScriptEvent'; -export { default as SaveEvent } from './editor/SaveEvent'; export { default as SelectEvent } from './editor/SelectEvent'; export { default as SetGeometryNameEvent } from './editor/SetGeometryNameEvent'; export { default as SetMaterialNameEvent } from './editor/SetMaterialNameEvent'; diff --git a/ShadowEditor.Web/src/event/menu/scene/SaveSceneEvent.js b/ShadowEditor.Web/src/event/menu/scene/SaveSceneEvent.js index 4e3fe8c1..8ac4b03a 100644 --- a/ShadowEditor.Web/src/event/menu/scene/SaveSceneEvent.js +++ b/ShadowEditor.Web/src/event/menu/scene/SaveSceneEvent.js @@ -1,4 +1,6 @@ import MenuEvent from '../MenuEvent'; +import Converter from '../../../serialization/Converter'; +import Ajax from '../../../utils/Ajax'; /** * 保存场景 @@ -23,9 +25,30 @@ SaveSceneEvent.prototype.stop = function () { }; SaveSceneEvent.prototype.onSaveScene = function () { - var editor = this.app.editor; + var sceneName = this.app.editor.sceneName; - editor.save(); + if (sceneName == null) { + var tempName = 'Scene' + new Date().getTime(); + UI.prompt('正在保存...', '场景名称', tempName, (event, name) => { + this.app.editor.sceneName = name; + document.title = name; + this.commitSave(name); + }); + } else { + this.commitSave(sceneName); + } +}; + +SaveSceneEvent.prototype.commitSave = function (sceneName) { + var obj = (new Converter()).toJSON(this.app); + + Ajax.post(this.app.options.server + '/api/Scene/Save', { + Name: sceneName, + Data: JSON.stringify(obj) + }, function (result) { + var obj = JSON.parse(result); + UI.msg(obj.Msg); + }); }; export default SaveSceneEvent; \ No newline at end of file diff --git a/ShadowEditor.Web/src/serialization/Converter.js b/ShadowEditor.Web/src/serialization/Converter.js index 37e27196..978062ab 100644 --- a/ShadowEditor.Web/src/serialization/Converter.js +++ b/ShadowEditor.Web/src/serialization/Converter.js @@ -26,23 +26,12 @@ function Converter() { BaseSerializer.call(this); this.serializers = [ - new ConfigSerializer(), - new ScriptSerializer(), - new Object3DSerializer(), new SceneSerializer(), - new CameraSerializer(), - new OrthographicCameraSerializer(), - new PerspectiveCameraSerializer(), - - new LightSerializer(), new PointLightSerializer(), new SpotLightSerializer(), new HemisphereLightSerializer(), new RectAreaLightSerializer(), - new GeometrySerializer(), - - new MaterialSerializer(), new MeshSerializer() ];