From 69585618ed9dac22f9210d6d7b531d06df007446 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 24 Jul 2025 12:27:28 +0200 Subject: [PATCH] Optimize scripting objects spawning on AOT platforms --- Source/Engine/Scripting/Runtime/DotNet.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Engine/Scripting/Runtime/DotNet.cpp b/Source/Engine/Scripting/Runtime/DotNet.cpp index 13195f886..64fec7b04 100644 --- a/Source/Engine/Scripting/Runtime/DotNet.cpp +++ b/Source/Engine/Scripting/Runtime/DotNet.cpp @@ -708,6 +708,13 @@ void MCore::ScriptingObject::SetInternalValues(MClass* klass, MObject* object, v #if PLATFORM_DESKTOP && !USE_MONO_AOT static void* ScriptingObjectSetInternalValuesPtr = GetStaticMethodPointer(TEXT("ScriptingObjectSetInternalValues")); CallStaticMethod(ScriptingObjectSetInternalValuesPtr, object, unmanagedPtr, id); +#elif !USE_EDITOR + static MField* monoUnmanagedPtrField = ::ScriptingObject::GetStaticClass()->GetField("__unmanagedPtr"); + static MField* monoIdField = ::ScriptingObject::GetStaticClass()->GetField("__internalId"); + if (monoUnmanagedPtrField) + monoUnmanagedPtrField->SetValue(object, &unmanagedPtr); + if (id != nullptr && monoIdField) + monoIdField->SetValue(object, (void*)id); #else const MField* monoUnmanagedPtrField = klass->GetField("__unmanagedPtr"); if (monoUnmanagedPtrField)