Now passing strings between c++ -> c# -> c++

This commit is contained in:
Antoine Pilote
2023-10-13 01:45:07 -04:00
parent cb804085ed
commit 4e23e6a54b
4 changed files with 42 additions and 18 deletions

View File

@@ -18,6 +18,26 @@ void ExceptionCallback(std::string_view InMessage)
namespace Nuake
{
ScriptingEngineNet::ScriptingEngineNet()
{
auto coralDir = "";
Coral::HostSettings settings =
{
.CoralDirectory = coralDir,
.ExceptionCallback = ExceptionCallback
};
m_HostInstance = CreateScope<Coral::HostInstance>();
m_HostInstance->Initialize(settings);
m_LoadContext = CreateScope<Coral::AssemblyLoadContext>(m_HostInstance->CreateAssemblyLoadContext("NuakeEngineContext"));
}
ScriptingEngineNet::~ScriptingEngineNet()
{
m_HostInstance->UnloadAssemblyLoadContext(*m_LoadContext);
m_HostInstance->Shutdown();
}
ScriptingEngineNet& ScriptingEngineNet::Get()
{
static ScriptingEngineNet instance;
@@ -31,23 +51,19 @@ namespace Nuake
void ScriptingEngineNet::Initialize()
{
auto coralDir = "";
Coral::HostSettings settings =
{
.CoralDirectory = coralDir,
.ExceptionCallback = ExceptionCallback
};
Coral::HostInstance hostInstance;
hostInstance.Initialize(settings);
auto loadContext = hostInstance.CreateAssemblyLoadContext("NuakeEngineContext");
auto& assembly = loadContext.LoadAssembly("NuakeNet.dll");
auto& assembly = m_LoadContext->LoadAssembly("NuakeNet.dll");
assembly.AddInternalCall("Nuake.Net.Engine", "LoggerLogIcall", reinterpret_cast<void*>(&Log));
assembly.UploadInternalCalls();
auto& engineType = assembly.GetType("Nuake.Net.Engine");
auto engineInstance = engineType.CreateInstance();
engineInstance.InvokeMethod("Log");
Coral::NativeString param1 = Coral::NativeString::FromUTF8("Hello from CPP");;
engineInstance.InvokeMethod("Log", param1);
engineInstance.Destroy();
Coral::GC::Collect();
}
}