From bc762761ddb2f64218a1d626a71ba97dfe88f245 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 11 Oct 2023 12:35:27 +0200 Subject: [PATCH] Fix engine when used without C# scripting at all --- Source/Engine/Scripting/Internal/ManagedDictionary.cpp | 4 ++++ Source/Engine/Scripting/ManagedCLR/MAssembly.h | 4 +++- Source/Engine/Scripting/ManagedCLR/MCore.cpp | 10 +++++++--- Source/Engine/Scripting/Runtime/Mono.cpp | 2 +- Source/Engine/Scripting/Runtime/None.cpp | 3 +-- Source/Engine/Scripting/Scripting.cpp | 2 ++ 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Source/Engine/Scripting/Internal/ManagedDictionary.cpp b/Source/Engine/Scripting/Internal/ManagedDictionary.cpp index 7cb4d1cfb..6d3508b3d 100644 --- a/Source/Engine/Scripting/Internal/ManagedDictionary.cpp +++ b/Source/Engine/Scripting/Internal/ManagedDictionary.cpp @@ -1,5 +1,8 @@ +// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. + #include "ManagedDictionary.h" +#if USE_CSHARP Dictionary ManagedDictionary::CachedDictionaryTypes; #if !USE_MONO_AOT ManagedDictionary::MakeGenericTypeThunk ManagedDictionary::MakeGenericType; @@ -12,3 +15,4 @@ MMethod* ManagedDictionary::CreateInstance; MMethod* ManagedDictionary::AddDictionaryItem; MMethod* ManagedDictionary::GetDictionaryKeys; #endif +#endif diff --git a/Source/Engine/Scripting/ManagedCLR/MAssembly.h b/Source/Engine/Scripting/ManagedCLR/MAssembly.h index 3862627d0..ff1645e5e 100644 --- a/Source/Engine/Scripting/ManagedCLR/MAssembly.h +++ b/Source/Engine/Scripting/ManagedCLR/MAssembly.h @@ -25,8 +25,8 @@ private: MonoAssembly* _monoAssembly = nullptr; MonoImage* _monoImage = nullptr; #elif USE_NETCORE - StringAnsi _fullname; void* _handle = nullptr; + StringAnsi _fullname; #endif MDomain* _domain; @@ -50,6 +50,7 @@ public: /// The assembly name. MAssembly(MDomain* domain, const StringAnsiView& name); +#if USE_NETCORE /// /// Initializes a new instance of the class. /// @@ -58,6 +59,7 @@ public: /// The assembly full name. /// The managed handle of the assembly. MAssembly(MDomain* domain, const StringAnsiView& name, const StringAnsiView& fullname, void* handle); +#endif /// /// Finalizes an instance of the class. diff --git a/Source/Engine/Scripting/ManagedCLR/MCore.cpp b/Source/Engine/Scripting/ManagedCLR/MCore.cpp index d9cc6f863..02a834a9f 100644 --- a/Source/Engine/Scripting/ManagedCLR/MCore.cpp +++ b/Source/Engine/Scripting/ManagedCLR/MCore.cpp @@ -48,18 +48,22 @@ MAssembly::MAssembly(MDomain* domain, const StringAnsiView& name) { } +#if USE_NETCORE + MAssembly::MAssembly(MDomain* domain, const StringAnsiView& name, const StringAnsiView& fullname, void* handle) - : _domain(domain) + : _handle(handle) + , _fullname(fullname) + , _domain(domain) , _isLoaded(false) , _isLoading(false) , _hasCachedClasses(false) , _reloadCount(0) , _name(name) - , _fullname(fullname) - , _handle(handle) { } +#endif + MAssembly::~MAssembly() { Unload(); diff --git a/Source/Engine/Scripting/Runtime/Mono.cpp b/Source/Engine/Scripting/Runtime/Mono.cpp index ef0c42818..00f16fd44 100644 --- a/Source/Engine/Scripting/Runtime/Mono.cpp +++ b/Source/Engine/Scripting/Runtime/Mono.cpp @@ -2157,7 +2157,7 @@ MObject* MCore::ScriptingObject::CreateScriptingObject(MClass* klass, void* unma if (managedInstance) { // Set unmanaged object handle and id - MCore::ScriptingObject::SetInternalValues(klass, managedInstance, unmanagedPtr, _id); + MCore::ScriptingObject::SetInternalValues(klass, managedInstance, unmanagedPtr, id); // Initialize managed instance (calls constructor) MCore::Object::Init(managedInstance); diff --git a/Source/Engine/Scripting/Runtime/None.cpp b/Source/Engine/Scripting/Runtime/None.cpp index a25d59c59..414a3e666 100644 --- a/Source/Engine/Scripting/Runtime/None.cpp +++ b/Source/Engine/Scripting/Runtime/None.cpp @@ -1,9 +1,8 @@ // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #include "Engine/Scripting/Types.h" - #if !USE_CSHARP - +#include "Engine/Core/Types/Span.h" #include "Engine/Scripting/ManagedCLR/MCore.h" #include "Engine/Scripting/ManagedCLR/MDomain.h" #include "Engine/Scripting/ManagedCLR/MAssembly.h" diff --git a/Source/Engine/Scripting/Scripting.cpp b/Source/Engine/Scripting/Scripting.cpp index cce66cd98..e1494cd04 100644 --- a/Source/Engine/Scripting/Scripting.cpp +++ b/Source/Engine/Scripting/Scripting.cpp @@ -493,9 +493,11 @@ bool Scripting::Load() flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Vector3"] = flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Float3"]; flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Vector4"] = flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Float4"]; #endif +#if USE_CSHARP flaxEngineModule->ClassToTypeIndex[flaxEngineModule->Assembly->GetClass("FlaxEngine.Vector2")] = flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Vector2"]; flaxEngineModule->ClassToTypeIndex[flaxEngineModule->Assembly->GetClass("FlaxEngine.Vector3")] = flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Vector3"]; flaxEngineModule->ClassToTypeIndex[flaxEngineModule->Assembly->GetClass("FlaxEngine.Vector4")] = flaxEngineModule->TypeNameToTypeIndex["FlaxEngine.Vector4"]; +#endif #if USE_EDITOR // Skip loading game modules in Editor on startup - Editor loads them later during splash screen (eg. after first compilation)