async Task CompileCode(EngineNS.EPlatformType platform) { if (!Macross_Client.CheckError()) { return; } CurrentResourceInfo.Version++; List <Macross.ResourceInfos.MacrossResourceInfo.CustomFunctionData> functions = new List <Macross.ResourceInfos.MacrossResourceInfo.CustomFunctionData>(); Macross_Client.CollectFuncDatas(functions); //if (CheckCompileResult(await CompileCode(Macross_Client, platform, functions), platform) == false) // return; //if (CheckCompileResult(await CompileMacrossCollector(Macross_Client, platform), platform) == false) // return; if (await CompileCode(Macross_Client, EngineNS.ECSType.Client)) { CompileStatusIcon = TryFindResource("Good") as ImageSource; } else { CompileStatusIcon = TryFindResource("Fail") as ImageSource; EditorCommon.MessageBox.Show($"{platform}平台MacrossScript编译失败!详细信息请编译游戏工程!\r\n"); return; } if (platform == EngineNS.EPlatformType.PLATFORM_WIN) { //var scriptDllName = EngineNS.CEngine.Instance.FileManager.Bin + "MacrossScript.dll"; EngineNS.CEngine.Instance.MacrossDataManager.RefreshMacrossCollector(); //var assembly = EngineNS.CEngine.Instance.MacrossDataManager.MacrossScripAssembly;// EngineNS.Rtti.RttiHelper.GetAssemblyFromDllFileName(EngineNS.CIPlatform.Instance.CSType, scriptDllName, "", true, true); //var clsTypeFullName = CurrentResourceInfo.ResourceName.RelativePath().Replace("/", ".") + CurrentResourceInfo.ResourceName.PureName(); //var clsType = assembly.GetType(clsTypeFullName); //var clsIdPro = clsType.GetProperty("ClassId"); //var classId = (EngineNS.Hash64)clsIdPro.GetValue(null); //EngineNS.CEngine.Instance.MacrossDataManager.RefreshMacrossData(ref classId, clsType); EngineNS.Macross.MacrossFactory.SetVersion(CurrentResourceInfo.ResourceName, CurrentResourceInfo.Version); Macross_Client.ResetPreview(); } Macross_Client.PropertiesPG.Instance = null; Macross_Server.PropertiesPG.Instance = null; }
bool CheckCompileResult(System.CodeDom.Compiler.CompilerResults result, EngineNS.EPlatformType platform) { if (result.Errors.HasErrors) { CompileStatusIcon = TryFindResource("Fail") as ImageSource; var errorStr = ""; foreach (var error in result.Errors) { errorStr += error.ToString() + "\r\n"; } EditorCommon.MessageBox.Show($"{platform}平台MacrossScript编译失败!\r\n" + errorStr); return(false); } else if (result.Errors.HasWarnings) { CompileStatusIcon = TryFindResource("Warning") as ImageSource; return(false); } else { CompileStatusIcon = TryFindResource("Good") as ImageSource; return(true); } }