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