Started editor .Net context for undo/redo system

This commit is contained in:
Antoine Pilote
2024-08-25 22:42:07 -04:00
parent 03231e6bf7
commit 9a30925b34
18 changed files with 531 additions and 28 deletions

View File

@@ -0,0 +1,39 @@
#include "ScriptingContext.h"
#include "src/Core/String.h"
#include "Modules/EditorModule.h"
void ScriptingContext::Initialize()
{
m_Modules =
{
CreateRef<EditorNetAPI>()
};
for (auto& m : m_Modules)
{
m->RegisterMethods();
}
// Load Nuake assembly DLL
auto m_LoadContext2 = Nuake::ScriptingEngineNet::Get().GetHostInstance()->CreateAssemblyLoadContext("NuakeEditorContext");
m_NuakeAssembly = Nuake::ScriptingEngineNet::Get().ReloadEngineAPI(m_LoadContext2);
m_EditorAssembly = m_LoadContext2.LoadAssembly("EditorNet.dll");
for (const auto& netModule : m_Modules)
{
for (const auto& [methodName, methodPtr] : netModule->GetMethods())
{
auto namespaceClassSplit = Nuake::String::Split(methodName, '.');
m_EditorAssembly.AddInternalCall("Nuake." + namespaceClassSplit[0], namespaceClassSplit[1], methodPtr);
}
}
m_EditorAssembly.UploadInternalCalls();
m_EditorAssembly.GetType("Nuake.Editor").InvokeStaticMethod("Initialize");
}
void ScriptingContext::PushCommand(const std::string & command, const std::string & arg)
{
m_EditorAssembly.GetType("Nuake.Editor").InvokeStaticMethod("Initialize");
}