Merge remote-tracking branch 'origin/master' into 1.7

This commit is contained in:
Wojtek Figat
2023-09-11 22:43:46 +02:00
53 changed files with 1537 additions and 218 deletions

View File

@@ -3,6 +3,7 @@
#pragma once
#include "MTypes.h"
#include "MClass.h"
#include "MCore.h"
#include "Engine/Core/Types/StringView.h"
#include "Engine/Core/Types/DataContainer.h"
@@ -354,7 +355,7 @@ struct MConverter<Array<T>>
{
if (!klass)
return nullptr;
MArray* result = MCore::Array::New(klass, data.Count());
MArray* result = MCore::Array::New(klass->GetElementClass(), data.Count());
MConverter<T> converter;
converter.ToManagedArray(result, Span<T>(data.Get(), data.Count()));
return (MObject*)result;

View File

@@ -365,8 +365,8 @@ MString* MCore::String::GetEmpty(MDomain* domain)
MString* MCore::String::New(const char* str, int32 length, MDomain* domain)
{
static void* NewStringLengthPtr = GetStaticMethodPointer(TEXT("NewStringLength"));
return (MString*)CallStaticMethod<void*, const char*, int>(NewStringLengthPtr, str, length);
static void* NewStringUTF8Ptr = GetStaticMethodPointer(TEXT("NewStringUTF8"));
return (MString*)CallStaticMethod<void*, const char*, int>(NewStringUTF8Ptr, str, length);
}
MString* MCore::String::New(const Char* str, int32 length, MDomain* domain)

View File

@@ -205,6 +205,13 @@ namespace FlaxEngine
internal static void AddDictionaryItem(IDictionary dictionary, object key, object value)
{
// TODO: more generic approach to properly add value that is of custom boxed type? (eg. via NativeInterop.MarshalToManaged)
if (value is ManagedArray managedArray)
{
var managedArrayHandle = ManagedHandle.Alloc(managedArray, GCHandleType.Normal);
value = NativeInterop.MarshalToManaged((IntPtr)managedArrayHandle, managedArray.ArrayType);
managedArrayHandle.Free();
}
dictionary.Add(key, value);
}