diff --git a/ShadowEditor.Server/Controllers/Export/ExportAllController.cs b/ShadowEditor.Server/Controllers/Export/ExportAllController.cs deleted file mode 100644 index e60f45fe..00000000 --- a/ShadowEditor.Server/Controllers/Export/ExportAllController.cs +++ /dev/null @@ -1,420 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Web.Http; -using System.Web.Http.Results; -using System.Web; -using System.IO; -using MongoDB.Bson; -using MongoDB.Driver; -using Newtonsoft.Json.Linq; -using ShadowEditor.Server.Base; -using ShadowEditor.Server.Helpers; -using Newtonsoft.Json; - -namespace ShadowEditor.Server.Controllers.Export -{ - /// - /// 导出所有资源控制器 - /// - public class ExportAllController : ApiBase - { - /// - /// 发布静态网站 - /// - /// - [HttpPost] - public JsonResult Run() - { - this.CopyAssets(); - this.CreateDataFile(); - - return Json(new - { - Code = 200, - Msg = "发布成功!" - }); - } - - /// - /// 复制资源到示例文件夹 - /// - private void CopyAssets() - { - var server = HttpContext.Current.Server; - - // 复制html文件 - var sourceName = server.MapPath("~/index.html"); - var destName = server.MapPath("~/examples/index.html"); - - File.Copy(sourceName, destName, true); - - var text = File.ReadAllText(destName).Replace("location.origin", "'.'"); // 使api路径变为当前目录 - File.WriteAllText(destName, text); - - // 复制dist文件夹 - var dirName = server.MapPath("~/examples/dist/"); - sourceName = server.MapPath("~/dist/ShadowEditor.js"); - destName = server.MapPath("~/examples/dist/ShadowEditor.js"); - - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - File.Copy(sourceName, destName, true); - - text = File.ReadAllText(destName).Replace("Load?ID=", "Scene_"); // 转换场景加载路径 - File.WriteAllText(destName, text); - - // 复制assets文件夹 - sourceName = server.MapPath("~/assets"); - destName = server.MapPath("~/examples/assets"); - - DirectoryHelper.Copy(sourceName, destName); - - // 复制Upload文件夹 - sourceName = server.MapPath("~/Upload"); - destName = server.MapPath("~/examples/Upload"); - - DirectoryHelper.Copy(sourceName, destName); - - // 复制网站图标 - sourceName = server.MapPath("~/favicon.ico"); - destName = server.MapPath("~/examples/favicon.ico"); - - File.Copy(sourceName, destName, true); - } - - /// - /// 通过调用API接口,创建数据文件 - /// - private void CreateDataFile() - { - var server = HttpContext.Current.Server; - - var dirName = server.MapPath("~/api/"); - - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - this.CreateAnimationDataFile(); - this.CreateAudioDataFile(); - this.CreateCategoryDataFile(); - this.CreateMapDataFile(); - this.CreateMaterialDataFile(); - this.CreateMeshDataFile(); - this.CreatePublishDataFile(); - this.CreateSceneDataFile(); - this.CreateUploadDataFile(); - } - - /// - /// 复制动画数据文件 - /// - private void CreateAnimationDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Animation/List"); - - var dirName = server.MapPath("~/examples/api/Animation"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Animation/List"); - File.WriteAllText(fileName, result); - - // 其他接口 - var apiList = new string[] { "/examples/api/Animation/Add", "/examples/api/Animation/Edit", "/examples/api/Animation/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建音频数据文件 - /// - private void CreateAudioDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Audio/List"); - - var dirName = server.MapPath("~/examples/api/Audio"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Audio/List"); - File.WriteAllText(fileName, result); - - // 其他接口 - var apiList = new string[] { "/examples/api/Audio/Add", "/examples/api/Audio/Edit", "/examples/api/Audio/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建类别数据文件 - /// - private void CreateCategoryDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Category/List"); - - var dirName = server.MapPath("~/examples/api/Category"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Category/List"); - File.WriteAllText(fileName, result); - - // 其他接口 - var apiList = new string[] { "/examples/api/Category/Save", "/examples/api/Category/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建贴图数据文件 - /// - private void CreateMapDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Map/List"); - - var dirName = server.MapPath("~/examples/api/Map"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Map/List"); - File.WriteAllText(fileName, result); - - // 其他接口 - var apiList = new string[] { "/examples/api/Map/Add", "/examples/api/Map/Edit", "/examples/api/Map/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建材质数据文件 - /// - private void CreateMaterialDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Material/List"); - - var dirName = server.MapPath("~/examples/api/Material"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Material/List"); - File.WriteAllText(fileName, result); - - // 其他接口 - var apiList = new string[] { "/examples/api/Material/Add", "/examples/api/Material/Edit", "/examples/api/Material/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建模型数据文件 - /// - private void CreateMeshDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Mesh/List"); - - var dirName = server.MapPath("~/examples/api/Mesh"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Mesh/List"); - File.WriteAllText(fileName, result); - - // 其他接口 - var apiList = new string[] { "/examples/api/Mesh/Add", "/examples/api/Mesh/Edit", "/examples/api/Mesh/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建发布数据文件 - /// - private void CreatePublishDataFile() - { - var server = HttpContext.Current.Server; - - var dirName = server.MapPath("~/examples/api/Publish/"); - - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 其他接口 - var apiList = new string[] { "/examples/api/Publish/Publish" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - var fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建场景数据文件 - /// - private void CreateSceneDataFile() - { - var server = HttpContext.Current.Server; - var request = HttpContext.Current.Request; - var host = request.Url.Host; - var port = request.Url.Port; - - var result = HttpHelper.Get($"http://{host}:{port}/api/Scene/List"); - - var dirName = server.MapPath("~/examples/api/Scene"); - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 获取列表 - var fileName = server.MapPath("~/examples/api/Scene/List"); - File.WriteAllText(fileName, result); - - // 导出场景 - var obj = JsonConvert.DeserializeObject(result); - var array = obj["Data"] as JArray; - - foreach (var i in array) - { - var id = i["ID"].ToString(); - result = HttpHelper.Get($"http://{host}:{port}/api/Scene/Load?ID={id}"); - - fileName = server.MapPath($"~/examples/api/Scene/Scene_{id}"); - - File.WriteAllText(fileName, result); - } - - // 其他接口 - var apiList = new string[] { "/examples/api/Scene/Edit", "/examples/api/Scene/Save", "/examples/api/Scene/Delete" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - - /// - /// 创建上传数据文件 - /// - private void CreateUploadDataFile() - { - var server = HttpContext.Current.Server; - - var dirName = server.MapPath("~/examples/api/Upload"); - - if (!Directory.Exists(dirName)) - { - Directory.CreateDirectory(dirName); - } - - // 其他接口 - var apiList = new string[] { "/examples/api/Upload/Upload" }; - - var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" }); - - foreach (var i in apiList) - { - var fileName = server.MapPath($"~{i}"); - File.WriteAllText(fileName, data); - } - } - } -} diff --git a/ShadowEditor.Server/Controllers/Export/ExportEditorController.cs b/ShadowEditor.Server/Controllers/Export/ExportEditorController.cs new file mode 100644 index 00000000..52d4b327 --- /dev/null +++ b/ShadowEditor.Server/Controllers/Export/ExportEditorController.cs @@ -0,0 +1,410 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using System.Web.Http.Results; +using System.Web; +using System.IO; +using MongoDB.Bson; +using MongoDB.Driver; +using Newtonsoft.Json.Linq; +using ShadowEditor.Server.Base; +using ShadowEditor.Server.Helpers; +using Newtonsoft.Json; +using System.Text; + +namespace ShadowEditor.Server.Controllers.Export +{ + /// + /// 导出编辑器控制器 + /// + public class ExportEditorController : ApiBase + { + /// + /// 发布静态网站 + /// + /// + [HttpPost] + public JsonResult Run() + { + var now = DateTime.Now; + + var path = HttpContext.Current.Server.MapPath($"~/temp/{now.ToString("yyyyMMddHHmmss")}"); + + if (!Directory.Exists(path)) + { + Directory.CreateDirectory(path); + } + + this.CopyAssets(path); + this.CreateDataFile(path); + + return Json(new + { + Code = 200, + Msg = "导出成功!", + Url = $"/temp/{now.ToString("yyyyMMddHHmmss")}/editor.html" + }); + } + + /// + /// 复制资源到示例文件夹 + /// + /// + private void CopyAssets(string path) + { + // 复制html文件 + var sourceName = HttpContext.Current.Server.MapPath("~/index.html"); + var destName = $"{path}/editor.html"; + + File.Copy(sourceName, destName, true); + + var text = File.ReadAllText(destName, Encoding.UTF8).Replace("location.origin", "'.'"); // 使api路径变为当前目录 + File.WriteAllText(destName, text, Encoding.UTF8); + + // 复制build文件夹 + var dirName = $"{path}/build/"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + sourceName = HttpContext.Current.Server.MapPath("~/build/ShadowEditor.js"); + destName = $"{path}/build/ShadowEditor.js"; + + File.Copy(sourceName, destName, true); + + // 复制assets文件夹 + sourceName = HttpContext.Current.Server.MapPath("~/assets"); + destName = $"{path}/assets"; + + DirectoryHelper.Copy(sourceName, destName); + + // 复制语言包 + sourceName = HttpContext.Current.Server.MapPath("~/lang"); + destName = $"{path}/lang"; + DirectoryHelper.Copy(sourceName, destName); + + // 复制网站图标 + sourceName = HttpContext.Current.Server.MapPath("~/favicon.ico"); + destName = $"{path}/favicon.ico"; + + File.Copy(sourceName, destName, true); + } + + /// + /// 通过调用API接口,创建数据文件 + /// + /// + private void CreateDataFile(string path) + { + var dirName = $"{path}/api/"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + this.CreateAnimationDataFile(path); + this.CreateAudioDataFile(path); + this.CreateCategoryDataFile(path); + this.CreateMapDataFile(path); + this.CreateMaterialDataFile(path); + this.CreateMeshDataFile(path); + this.CreateExportSceneDataFile(path); + this.CreateSceneDataFile(path); + this.CreateUploadDataFile(path); + this.CreateToolsDataFile(path); + } + + /// + /// 复制动画数据文件 + /// + /// + private void CreateAnimationDataFile(string path) + { + var dirName = $"{path}/api/Animation"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var fileName = $"{path}/api/Animation/List"; + var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() }); + File.WriteAllText(fileName, data); + + // 其他接口 + var apiList = new string[] { "/api/Animation/Add", "/api/Animation/Edit", "/api/Animation/Delete" }; + + data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建音频数据文件 + /// + /// + private void CreateAudioDataFile(string path) + { + var dirName = $"{path}/api/Audio"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var fileName = $"{path}/api/Audio/List"; + var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() }); + File.WriteAllText(fileName, data); + + // 其他接口 + var apiList = new string[] { "/api/Audio/Add", "/api/Audio/Edit", "/api/Audio/Delete" }; + + data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建类别数据文件 + /// + /// + private void CreateCategoryDataFile(string path) + { + var dirName = $"{path}/api/Category"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var host = HttpContext.Current.Request.Url.Host; + var port = HttpContext.Current.Request.Url.Port; + var result = HttpHelper.Get($"http://{host}:{port}/api/Category/List"); + + var fileName = $"{path}/api/Category/List"; + File.WriteAllText(fileName, result); + + // 其他接口 + var apiList = new string[] { "/api/Category/Save", "/api/Category/Delete" }; + + var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建贴图数据文件 + /// + /// + private void CreateMapDataFile(string path) + { + var dirName = $"{path}/api/Map"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var fileName = $"{path}/api/Map/List"; + var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() }); + File.WriteAllText(fileName, data); + + // 其他接口 + var apiList = new string[] { "/api/Map/Add", "/api/Map/Edit", "/api/Map/Delete" }; + + data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建材质数据文件 + /// + /// + private void CreateMaterialDataFile(string path) + { + var dirName = $"{path}/api/Material"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var fileName = $"{path}/api/Material/List"; + var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() }); + File.WriteAllText(fileName, data); + + // 其他接口 + var apiList = new string[] { "/api/Material/Add", "/api/Material/Edit", "/api/Material/Delete" }; + + data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建模型数据文件 + /// + /// + private void CreateMeshDataFile(string path) + { + var dirName = $"{path}/api/Mesh"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var fileName = $"{path}/api/Mesh/List"; + var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() }); + File.WriteAllText(fileName, data); + + // 其他接口 + var apiList = new string[] { "/api/Mesh/Add", "/api/Mesh/Edit", "/api/Mesh/Delete" }; + + data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建导出场景数据文件 + /// + /// + private void CreateExportSceneDataFile(string path) + { + var dirName = $"{path}/api/ExportScene"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 其他接口 + var apiList = new string[] { "/api/ExportScene/Run" }; + + var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + var fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建场景数据文件 + /// + /// + private void CreateSceneDataFile(string path) + { + var dirName = $"{path}/api/Scene"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 获取列表 + var fileName = $"{path}/api/Scene/List"; + var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() }); + File.WriteAllText(fileName, data); + + // 其他接口 + var apiList = new string[] { "/api/Scene/Edit", "/api/Scene/Load", "/api/Scene/Save", "/api/Scene/Delete" }; + + data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建上传数据文件 + /// + /// + private void CreateUploadDataFile(string path) + { + var dirName = $"{path}/api/Upload"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + // 其他接口 + var apiList = new string[] { "/api/Upload/Upload" }; + + var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + var fileName = $"{path}{i}"; + File.WriteAllText(fileName, data); + } + } + + /// + /// 创建工具数据文件 + /// + /// + private void CreateToolsDataFile(string path) + { + // 其他接口 + var apiList = new string[] { "/api/ArrangeMap", "/api/ArrangeMesh", "/api/ArrangeThumbnail" }; + + var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" }); + + foreach (var i in apiList) + { + var dirName = $"{path}{i}"; + + if (!Directory.Exists(dirName)) + { + Directory.CreateDirectory(dirName); + } + + File.WriteAllText($"{dirName}/Run", data); + } + } + } +} diff --git a/ShadowEditor.Server/ShadowEditor.Server.csproj b/ShadowEditor.Server/ShadowEditor.Server.csproj index f0686777..59210e06 100644 --- a/ShadowEditor.Server/ShadowEditor.Server.csproj +++ b/ShadowEditor.Server/ShadowEditor.Server.csproj @@ -107,7 +107,7 @@ - + diff --git a/ShadowEditor.Web/src/editor/menubar/SceneMenu.js b/ShadowEditor.Web/src/editor/menubar/SceneMenu.js index 228a3def..e19d4f51 100644 --- a/ShadowEditor.Web/src/editor/menubar/SceneMenu.js +++ b/ShadowEditor.Web/src/editor/menubar/SceneMenu.js @@ -49,14 +49,7 @@ SceneMenu.prototype.render = function () { html: L_EXPORT_SCENE, cls: 'option', onClick: this.exportScene.bind(this) - } - // , { - // xtype: 'div', - // html: L_EXPORT_STATIC_WEBSITE, - // cls: 'option', - // onClick: this.exportAll.bind(this) - // } - ] + }] }] }); @@ -216,62 +209,4 @@ SceneMenu.prototype.exportScene = function () { }); }; -// ------------------------- 导出所有资源 ------------------------------ - -// SceneMenu.prototype.exportAll = function () { -// UI.confirm(L_PUBLISH_WEBSITE, L_CONFIRM_PUBLISH_WEBSITE, (event, btn) => { -// if (btn === 'ok') { -// Ajax.post(`${this.app.options.server}/api/ExportAll/Run`, function (result) { -// var obj = JSON.parse(result); -// UI.msg(obj.Msg); -// }); -// } -// }); -// }; - -// ------------------------ 本地打包发布 --------------------------------------- - -// SceneMenu.prototype.publishSceneLocal = function () { -// var editor = this.app.editor; - -// var zip = new JSZip(); -// // - -// var obj = (new Converter()).toJSON({ -// options: this.app.options, -// camera: this.app.editor.camera, -// renderer: this.app.editor.renderer, -// scripts: this.app.editor.scripts, -// scene: this.app.editor.scene -// }); - -// var output = JSON.stringify(obj); - -// zip.file('scene.json', output); - -// // 保存数据 - -// var manager = new THREE.LoadingManager(() => { -// this.savePublishScene(zip.generate({ -// type: 'blob' -// }), `${editor.sceneName}.zip`); -// }); - -// var loader = new THREE.FileLoader(manager); -// loader.load('index.html', content => { -// zip.file('index.html', content); -// }); -// loader.load('dist/ShadowEditor.js', function (content) { -// zip.file('dist/ShadowEditor.js', content); -// }); -// }; - -// SceneMenu.prototype.savePublishScene = function (text, filename) { -// var blob = new Blob([text], { type: 'text/plain' }); - -// this.link.href = URL.createObjectURL(blob); -// this.link.download = filename; -// this.link.click(); -// }; - export default SceneMenu; \ No newline at end of file diff --git a/ShadowEditor.Web/src/editor/menubar/ToolMenu.js b/ShadowEditor.Web/src/editor/menubar/ToolMenu.js index 9298321e..74c80524 100644 --- a/ShadowEditor.Web/src/editor/menubar/ToolMenu.js +++ b/ShadowEditor.Web/src/editor/menubar/ToolMenu.js @@ -42,6 +42,13 @@ ToolMenu.prototype.render = function () { html: L_ARRANGE_THUMBNAIL, cls: 'option', onClick: this.onArrangeThumbnail.bind(this) + }, { + xtype: 'hr' + }, { + xtype: 'div', + html: '导出编辑器', + cls: 'option', + onClick: this.onExportEditor.bind(this) }] }] }); @@ -97,4 +104,21 @@ ToolMenu.prototype.onArrangeThumbnail = function () { }); }; +ToolMenu.prototype.onExportEditor = function () { + UI.confirm('询问', '是否导出编辑器?', (event, btn) => { + if (btn === 'ok') { + fetch(`${this.app.options.server}/api/ExportEditor/Run`, { + method: 'POST' + }).then(response => { + if (response.ok) { + response.json().then(json => { + UI.msg(json.Msg); + window.open(`${this.app.options.server}${json.Url}`, 'export'); + }); + } + }); + } + }); +}; + export default ToolMenu; \ No newline at end of file