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