diff --git a/Nuake/src/Scene/Systems/ScriptingSystem.cpp b/Nuake/src/Scene/Systems/ScriptingSystem.cpp index cfba62d3..5fec2dd2 100644 --- a/Nuake/src/Scene/Systems/ScriptingSystem.cpp +++ b/Nuake/src/Scene/Systems/ScriptingSystem.cpp @@ -3,7 +3,11 @@ #include "src/Scene/Scene.h" #include "Engine.h" -namespace Nuake { +#include "src/Scripting/ScriptingEngineNet.h" + + +namespace Nuake +{ ScriptingSystem::ScriptingSystem(Scene* scene) { m_Scene = scene; @@ -13,6 +17,8 @@ namespace Nuake { { ScriptingEngine::Init(); + ScriptingEngineNet::Get().Initialize(); + Logger::Log("Initializing ScriptingSystem"); auto entities = m_Scene->m_Registry.view(); diff --git a/Nuake/src/Scripting/ScriptingEngineNet.cpp b/Nuake/src/Scripting/ScriptingEngineNet.cpp new file mode 100644 index 00000000..ba048747 --- /dev/null +++ b/Nuake/src/Scripting/ScriptingEngineNet.cpp @@ -0,0 +1,40 @@ +#include "ScriptingEngineNet.h" + +#include "src/Core/Logger.h" +#include "src/Core/FileSystem.h" + + +#include +#include +#include +#include + + +void ExceptionCallback(std::string_view InMessage) +{ + const std::string message = std::string("Unhandled native exception: ") + std::string(InMessage); + Nuake::Logger::Log(message, ".net", Nuake::CRITICAL); +} + +namespace Nuake +{ + ScriptingEngineNet& ScriptingEngineNet::Get() + { + static ScriptingEngineNet instance; + return instance; + } + + void ScriptingEngineNet::Initialize() + { + auto coralDir = ""; + Coral::HostSettings settings = + { + .CoralDirectory = coralDir, + .ExceptionCallback = ExceptionCallback + }; + Coral::HostInstance hostInstance; + hostInstance.Initialize(settings); + + auto loadContext = hostInstance.CreateAssemblyLoadContext("NuakeEngineContext"); + } +} \ No newline at end of file diff --git a/Nuake/src/Scripting/ScriptingEngineNet.h b/Nuake/src/Scripting/ScriptingEngineNet.h new file mode 100644 index 00000000..52a5f766 --- /dev/null +++ b/Nuake/src/Scripting/ScriptingEngineNet.h @@ -0,0 +1,17 @@ +#pragma once + + +namespace Nuake +{ + class ScriptingEngineNet + { + private: + ScriptingEngineNet() = default; + ~ScriptingEngineNet() = default; + + public: + static ScriptingEngineNet& Get(); + + void Initialize(); + }; +} \ No newline at end of file diff --git a/premake5.exe b/premake5.exe index c73da1fb..1a637aa9 100644 Binary files a/premake5.exe and b/premake5.exe differ diff --git a/premake5.lua b/premake5.lua index 8e2b85f1..5d50d712 100644 --- a/premake5.lua +++ b/premake5.lua @@ -86,7 +86,8 @@ project "Nuake" "%{prj.name}/src/Vendors/wren/src/include", "%{prj.name}/src/Vendors/incbin", "%{prj.name}/dependencies/build", - "%{prj.name}/dependencies/soloud/include" + "%{prj.name}/dependencies/soloud/include", + "%{prj.name}/dependencies/Coral/Coral.Native/Include" } links @@ -286,7 +287,7 @@ project "Editor" "%{prj.name}/../Nuake/dependencies/JoltPhysics", "%{prj.name}/../Nuake/dependencies/build", "%{prj.name}/../Nuake/dependencies/soloud/include", - "/usr/include/gtk-3.0/" + "/usr/include/gtk-3.0/", } libdirs @@ -338,7 +339,8 @@ project "Editor" postbuildcommands { '{ECHO} Copying "%{wks.location}/NetCore/7.0.7/nethost.dll" to "%{cfg.targetdir}"', '{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/NetCore/7.0.7/nethost.dll" "%{cfg.targetdir}"', - '{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/Coral.Managed/Coral.Managed.runtimeconfig.json" "%{cfg.targetdir}"', + '{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/Coral.Managed/Coral.Managed.runtimeconfig.json" "%{wks.location}/%{prj.name}"', + '{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/Coral.Managed/Build/%{cfg.buildcfg}-%{cfg.system}/Coral.Managed.dll" "%{wks.location}/%{prj.name}"' }