Fix missing C# static fields in native scripting api
This commit is contained in:
@@ -297,7 +297,7 @@ namespace FlaxEngine.Interop
|
||||
internal static void GetClassFields(ManagedHandle typeHandle, NativeFieldDefinitions** classFields, int* classFieldsCount)
|
||||
{
|
||||
Type type = Unsafe.As<Type>(typeHandle.Target);
|
||||
var fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
var fields = type.GetFields(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
|
||||
NativeFieldDefinitions* arr = (NativeFieldDefinitions*)NativeAlloc(fields.Length, Unsafe.SizeOf<NativeFieldDefinitions>());
|
||||
for (int i = 0; i < fields.Length; i++)
|
||||
@@ -331,7 +331,7 @@ namespace FlaxEngine.Interop
|
||||
internal static void GetClassProperties(ManagedHandle typeHandle, NativePropertyDefinitions** classProperties, int* classPropertiesCount)
|
||||
{
|
||||
Type type = Unsafe.As<Type>(typeHandle.Target);
|
||||
var properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
var properties = type.GetProperties(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
|
||||
var arr = (NativePropertyDefinitions*)NativeAlloc(properties.Length, Unsafe.SizeOf<NativePropertyDefinitions>());
|
||||
for (int i = 0; i < properties.Length; i++)
|
||||
@@ -804,8 +804,8 @@ namespace FlaxEngine.Interop
|
||||
[UnmanagedCallersOnly]
|
||||
internal static IntPtr FieldGetValueBoxed(ManagedHandle fieldOwnerHandle, ManagedHandle fieldHandle)
|
||||
{
|
||||
object fieldOwner = fieldOwnerHandle.Target;
|
||||
FieldHolder field = Unsafe.As<FieldHolder>(fieldHandle.Target);
|
||||
object fieldOwner = field.field.IsStatic ? null : fieldOwnerHandle.Target;
|
||||
object fieldValue = field.field.GetValue(fieldOwner);
|
||||
return Invoker.MarshalReturnValueGeneric(field.field.FieldType, fieldValue);
|
||||
}
|
||||
|
||||
@@ -905,7 +905,6 @@ const Array<MMethod*>& MClass::GetMethods() const
|
||||
NativeMethodDefinitions& definition = methods[i];
|
||||
MMethod* method = New<MMethod>(const_cast<MClass*>(this), StringAnsi(definition.name), definition.handle, definition.numParameters, definition.methodAttributes);
|
||||
_methods.Add(method);
|
||||
|
||||
MCore::GC::FreeMemory((void*)definition.name);
|
||||
}
|
||||
MCore::GC::FreeMemory(methods);
|
||||
@@ -939,7 +938,6 @@ const Array<MField*>& MClass::GetFields() const
|
||||
NativeFieldDefinitions& definition = fields[i];
|
||||
MField* field = New<MField>(const_cast<MClass*>(this), definition.fieldHandle, definition.name, definition.fieldType, definition.fieldAttributes);
|
||||
_fields.Add(field);
|
||||
|
||||
MCore::GC::FreeMemory((void*)definition.name);
|
||||
}
|
||||
MCore::GC::FreeMemory(fields);
|
||||
@@ -984,7 +982,6 @@ const Array<MProperty*>& MClass::GetProperties() const
|
||||
const NativePropertyDefinitions& definition = foundProperties[i];
|
||||
MProperty* property = New<MProperty>(const_cast<MClass*>(this), definition.name, definition.getterHandle, definition.setterHandle, definition.getterAttributes, definition.setterAttributes);
|
||||
_properties.Add(property);
|
||||
|
||||
MCore::GC::FreeMemory((void*)definition.name);
|
||||
}
|
||||
MCore::GC::FreeMemory(foundProperties);
|
||||
|
||||
Reference in New Issue
Block a user