mirror of
https://github.com/tengge1/ShadowEditor.git
synced 2026-01-25 15:08:11 +00:00
一键导出静态编辑器功能。
This commit is contained in:
parent
fc3261e9f3
commit
f8de27a135
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 导出所有资源控制器
|
||||
/// </summary>
|
||||
public class ExportAllController : ApiBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 发布静态网站
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public JsonResult Run()
|
||||
{
|
||||
this.CopyAssets();
|
||||
this.CreateDataFile();
|
||||
|
||||
return Json(new
|
||||
{
|
||||
Code = 200,
|
||||
Msg = "发布成功!"
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制资源到示例文件夹
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过调用API接口,创建数据文件
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制动画数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建音频数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建类别数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建贴图数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建材质数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建模型数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建发布数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建场景数据文件
|
||||
/// </summary>
|
||||
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<JObject>(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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建上传数据文件
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
410
ShadowEditor.Server/Controllers/Export/ExportEditorController.cs
Normal file
410
ShadowEditor.Server/Controllers/Export/ExportEditorController.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 导出编辑器控制器
|
||||
/// </summary>
|
||||
public class ExportEditorController : ApiBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 发布静态网站
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[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"
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制资源到示例文件夹
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过调用API接口,创建数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制动画数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建音频数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建类别数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建贴图数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建材质数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建模型数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建导出场景数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建场景数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建上传数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建工具数据文件
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -107,7 +107,7 @@
|
||||
<Compile Include="Controllers\MeshController.cs" />
|
||||
<Compile Include="Controllers\AudioController.cs" />
|
||||
<Compile Include="Controllers\AnimationController.cs" />
|
||||
<Compile Include="Controllers\Export\ExportAllController.cs" />
|
||||
<Compile Include="Controllers\Export\ExportEditorController.cs" />
|
||||
<Compile Include="Controllers\CategoryController.cs" />
|
||||
<Compile Include="Controllers\MaterialController.cs" />
|
||||
<Compile Include="Controllers\AssetsController.cs" />
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
Loading…
x
Reference in New Issue
Block a user