From ff4ac985ee19f318ed48c2362bdaba66f1ebbce8 Mon Sep 17 00:00:00 2001 From: tengge1 <930372551@qq.com> Date: Sat, 16 Mar 2019 19:52:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=9C=BA=E6=99=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Export/ExportSceneController.cs | 75 +++++++++++++++++++ .../ShadowEditor.Server.csproj | 1 + ShadowEditor.Web/ShadowEditor.Web.csproj | 1 - ShadowEditor.Web/lang/zh-CN.js | 2 + .../src/editor/menubar/SceneMenu.js | 30 ++++++++ ShadowEditor.Web/src/language/Language.js | 2 + 6 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 ShadowEditor.Server/Controllers/Export/ExportSceneController.cs diff --git a/ShadowEditor.Server/Controllers/Export/ExportSceneController.cs b/ShadowEditor.Server/Controllers/Export/ExportSceneController.cs new file mode 100644 index 00000000..e3fe65c2 --- /dev/null +++ b/ShadowEditor.Server/Controllers/Export/ExportSceneController.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web; +using System.Web.Http; +using System.Web.Http.Results; +using System.IO; +using MongoDB.Bson; +using MongoDB.Driver; +using Newtonsoft.Json.Linq; +using ShadowEditor.Server.Base; +using ShadowEditor.Server.Helpers; + +namespace ShadowEditor.Server.Controllers.Export +{ + /// + /// 导出场景控制器 + /// + public class ExportSceneController : ApiBase + { + /// + /// 执行 + /// + /// + /// + /// + [HttpPost] + public JsonResult Run(string ID, int version = -1) + { + var mongo = new MongoHelper(); + + var filter = Builders.Filter.Eq("ID", BsonObjectId.Create(ID)); + var doc = mongo.FindOne(Constant.SceneCollectionName, filter); + + if (doc == null) + { + return Json(new + { + Code = 300, + Msg = "该场景不存在!" + }); + } + + //var collectionName = doc["CollectionName"].AsString; + + //List docs; + + //if (version == -1) // 最新版本 + //{ + // docs = mongo.FindAll(collectionName).ToList(); + //} + //else // 特定版本 + //{ + // filter = Builders.Filter.Eq(Constant.VersionField, BsonInt32.Create(version)); + // docs = mongo.FindMany($"{collectionName}{Constant.HistorySuffix}", filter).ToList(); + //} + + //var data = new JArray(); + + //foreach (var i in docs) + //{ + // i["_id"] = i["_id"].ToString(); // ObjectId + // data.Add(JsonHelper.ToObject(i.ToJson())); + //} + + return Json(new + { + Code = 200, + Msg = "导出成功!" + }); + } + } +} \ No newline at end of file diff --git a/ShadowEditor.Server/ShadowEditor.Server.csproj b/ShadowEditor.Server/ShadowEditor.Server.csproj index 04da9407..10b31b93 100644 --- a/ShadowEditor.Server/ShadowEditor.Server.csproj +++ b/ShadowEditor.Server/ShadowEditor.Server.csproj @@ -101,6 +101,7 @@ + diff --git a/ShadowEditor.Web/ShadowEditor.Web.csproj b/ShadowEditor.Web/ShadowEditor.Web.csproj index 31952fba..e904db5b 100644 --- a/ShadowEditor.Web/ShadowEditor.Web.csproj +++ b/ShadowEditor.Web/ShadowEditor.Web.csproj @@ -540,7 +540,6 @@ - diff --git a/ShadowEditor.Web/lang/zh-CN.js b/ShadowEditor.Web/lang/zh-CN.js index 60cf6447..8455acb5 100644 --- a/ShadowEditor.Web/lang/zh-CN.js +++ b/ShadowEditor.Web/lang/zh-CN.js @@ -580,3 +580,5 @@ L_TOOL = '工具'; L_ARRANGE_MAP = '整理贴图'; L_ARRANGE_MESH = '整理模型'; L_ARRANGE_THUMBNAIL = '整理缩略图'; + +L_EXPORT_SCENE = '导出场景'; diff --git a/ShadowEditor.Web/src/editor/menubar/SceneMenu.js b/ShadowEditor.Web/src/editor/menubar/SceneMenu.js index 16bb5709..26f444c7 100644 --- a/ShadowEditor.Web/src/editor/menubar/SceneMenu.js +++ b/ShadowEditor.Web/src/editor/menubar/SceneMenu.js @@ -44,6 +44,11 @@ SceneMenu.prototype.render = function () { onClick: this.saveAsScene.bind(this) }, { xtype: 'hr' + }, { + xtype: 'div', + html: L_EXPORT_SCENE, + cls: 'option', + onClick: this.exportScene.bind(this) }, { xtype: 'div', html: L_EXPORT_STATIC_WEBSITE, @@ -183,6 +188,31 @@ SceneMenu.prototype.commitSaveAs = function (sceneName) { }); }; +// -------------------------- 导出场景 -------------------------------- + +SceneMenu.prototype.exportScene = function () { + var sceneID = this.app.editor.sceneID; + + if (!sceneID) { + UI.msg('请先打开场景!'); + return; + } + + UI.confirm('询问', '是否导出当前场景?', (event, btn) => { + if (btn === 'ok') { + fetch(`${this.app.options.server}/api/ExportScene/Run?ID=${sceneID}`, { + method: 'POST' + }).then(response => { + if (response.ok) { + response.json().then(json => { + UI.msg(json.Msg); + }); + } + }); + } + }); +}; + // ------------------------- 发布静态网站 ------------------------------ SceneMenu.prototype.publish = function () { diff --git a/ShadowEditor.Web/src/language/Language.js b/ShadowEditor.Web/src/language/Language.js index 273c369e..55c59e8d 100644 --- a/ShadowEditor.Web/src/language/Language.js +++ b/ShadowEditor.Web/src/language/Language.js @@ -579,4 +579,6 @@ Object.assign(window, { L_ARRANGE_MAP: 'Arrange Map', L_ARRANGE_MESH: 'Arrange Mesh', L_ARRANGE_THUMBNAIL: 'Arrange Thumbnail', + + L_EXPORT_SCENE: 'Export Scene', }); \ No newline at end of file