Merge remote-tracking branch 'origin/master' into 1.7
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user