From 208372e6af31068c89e8db6fa69f2382efe29fa9 Mon Sep 17 00:00:00 2001 From: walon Date: Wed, 8 Jan 2025 15:26:48 +0800 Subject: [PATCH] [new] add MethodBridge.cpp.tpl. MethodBridgeGeneratorCommand doesn't generate and override from same file --- Data~/Templates/MethodBridge.cpp.tpl | 32 +++++++++++++++++++ .../Commands/MethodBridgeGeneratorCommand.cs | 7 ++-- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 Data~/Templates/MethodBridge.cpp.tpl diff --git a/Data~/Templates/MethodBridge.cpp.tpl b/Data~/Templates/MethodBridge.cpp.tpl new file mode 100644 index 0000000..b723a16 --- /dev/null +++ b/Data~/Templates/MethodBridge.cpp.tpl @@ -0,0 +1,32 @@ +#include +#if HYBRIDCLR_UNITY_2023_OR_NEW +#include +#elif HYBRIDCLR_UNITY_2022 +#include +#elif HYBRIDCLR_UNITY_2020 || HYBRIDCLR_UNITY_2021 +#include +#else +#include +#endif + +#include "vm/ClassInlines.h" +#include "vm/Object.h" +#include "vm/Class.h" +#include "vm/ScopedThreadAttacher.h" + +#include "../metadata/MetadataUtil.h" + + +#include "../interpreter/InterpreterModule.h" +#include "../interpreter/MethodBridge.h" +#include "../interpreter/Interpreter.h" +#include "../interpreter/MemoryUtil.h" +#include "../interpreter/InstrinctDef.h" + +using namespace hybridclr::interpreter; +using namespace hybridclr::metadata; + +//!!!{{CODE + + +//!!!}}CODE diff --git a/Editor/Commands/MethodBridgeGeneratorCommand.cs b/Editor/Commands/MethodBridgeGeneratorCommand.cs index c5130a4..c828264 100644 --- a/Editor/Commands/MethodBridgeGeneratorCommand.cs +++ b/Editor/Commands/MethodBridgeGeneratorCommand.cs @@ -31,9 +31,9 @@ namespace HybridCLR.Editor.Commands Directory.Delete(il2cppBuildCachePath, true); } - private static void GenerateMethodBridgeCppFile(IReadOnlyCollection genericMethods, List reversePInvokeMethods, IReadOnlyCollection calliMethodSignatures, string outputFile) + private static void GenerateMethodBridgeCppFile(IReadOnlyCollection genericMethods, List reversePInvokeMethods, IReadOnlyCollection calliMethodSignatures, string tempFile, string outputFile) { - string templateCode = File.ReadAllText(outputFile, Encoding.UTF8); + string templateCode = File.ReadAllText(tempFile, Encoding.UTF8); var g = new Generator(new Generator.Options() { TemplateCode = templateCode, @@ -84,9 +84,10 @@ namespace HybridCLR.Editor.Commands var calliAnalyzer = new CalliAnalyzer(cache, hotUpdateDlls); calliAnalyzer.Run(); + string templateFile = $"{SettingsUtil.TemplatePathInPackage}/MethodBridge.cpp.tpl"; string outputFile = $"{SettingsUtil.GeneratedCppDir}/MethodBridge.cpp"; - GenerateMethodBridgeCppFile(methodBridgeAnalyzer.GenericMethods, reversePInvokeAnalyzer.ReversePInvokeMethods, calliAnalyzer.CalliMethodSignatures, outputFile); + GenerateMethodBridgeCppFile(methodBridgeAnalyzer.GenericMethods, reversePInvokeAnalyzer.ReversePInvokeMethods, calliAnalyzer.CalliMethodSignatures, templateFile, outputFile); CleanIl2CppBuildCache(); }