/// <summary> /// Loads the underlying native type info for generated types (types tagged with UMetaPath) /// This loads the class address/properties/functions/offsets /// </summary> public static void LoadNative() { // Clear NativeReflectionCached just in case it is holding onto old values. NativeReflectionCached.Clear(); foreach (KeyValuePair <Type, UMetaPathAttribute> type in Native) { LoadNative(type.Key, type.Value); } }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.IntPoint"); FIntPoint_StructSize = NativeReflection.GetStructSize(classAddress); X_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "X"); X_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "X", Classes.UIntProperty); Y_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Y"); Y_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Y", Classes.UIntProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FIntPoint)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.FloatInterval"); FFloatInterval_StructSize = NativeReflection.GetStructSize(classAddress); Min_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Min"); Min_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Min", Classes.UFloatProperty); Max_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Max"); Max_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Max", Classes.UFloatProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FFloatInterval)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.TwoVectors"); FTwoVectors_StructSize = NativeReflection.GetStructSize(classAddress); v1_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "v1"); v1_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "v1", Classes.UStructProperty); v2_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "v2"); v2_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "v2", Classes.UStructProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FTwoVectors)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.Int32RangeBound"); FInt32RangeBound_StructSize = NativeReflection.GetStructSize(classAddress); NativeReflectionCached.GetPropertyRef(ref Type_PropertyAddress, classAddress, "Type"); Type_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Type"); Type_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Type", Classes.UByteProperty); Value_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Value"); Value_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Value", Classes.UFloatProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FInt32RangeBound)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.Rotator"); FRotator_StructSize = NativeReflection.GetStructSize(classAddress); Pitch_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Pitch"); Pitch_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Pitch", Classes.UFloatProperty); Yaw_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Yaw"); Yaw_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Yaw", Classes.UFloatProperty); Roll_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Roll"); Roll_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Roll", Classes.UFloatProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FRotator)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.FloatRange"); FFloatRange_StructSize = NativeReflection.GetStructSize(classAddress); LowerBound_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "LowerBound"); LowerBound_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "LowerBound", Classes.UStructProperty); UpperBound_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "UpperBound"); UpperBound_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "UpperBound", Classes.UStructProperty); FFloatRange_IsValid = classAddress != IntPtr.Zero && LowerBound_IsValid && UpperBound_IsValid; NativeReflection.LogStructIsValid("/Script/CoreUObject.FloatRange", FFloatRange_IsValid); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FFloatRange)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.BoxSphereBounds"); FBoxSphereBounds_StructSize = NativeReflection.GetStructSize(classAddress); Origin_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Origin"); Origin_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Origin", Classes.UStructProperty); BoxExtent_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "BoxExtent"); BoxExtent_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "BoxExtent", Classes.UStructProperty); SphereRadius_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "SphereRadius"); SphereRadius_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "SphereRadius", Classes.UFloatProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FBoxSphereBounds)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.Box"); FBox_StructSize = NativeReflection.GetStructSize(classAddress); Min_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Min"); Min_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Min", Classes.UStructProperty); Max_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Max"); Max_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Max", Classes.UStructProperty); IsValid_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "IsValid"); IsValid_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "IsValid", Classes.UByteProperty); //NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FBox)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.RandomStream"); FRandomStream_StructSize = NativeReflection.GetStructSize(classAddress); InitialSeed_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "InitialSeed"); InitialSeed_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "InitialSeed", Classes.UIntProperty); Seed_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Seed"); Seed_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Seed", Classes.UIntProperty); FRandomStream_IsValid = classAddress != IntPtr.Zero && InitialSeed_IsValid && Seed_IsValid; NativeReflection.LogStructIsValid("/Script/CoreUObject.RandomStream", FRandomStream_IsValid); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FRandomStream)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.Box2D"); FBox2D_StructSize = NativeReflection.GetStructSize(classAddress); Min_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Min"); Min_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Min", Classes.UStructProperty); Max_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Max"); Max_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Max", Classes.UStructProperty); bIsValid_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "bIsValid"); bIsValid_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "bIsValid", Classes.UByteProperty); FBox2D_IsValid = classAddress != IntPtr.Zero && Min_IsValid && Max_IsValid && bIsValid_IsValid; NativeReflection.LogStructIsValid("/Script/CoreUObject.Box2D", FBox2D_IsValid); }
/// <summary> /// Loads the underlying native type info for generated types (types tagged with UMetaPath) /// This loads the class address/properties/functions/offsets /// </summary> internal static void LoadNative(Assembly assembly) { // Clear NativeReflectionCached just in case it is holding onto old values. NativeReflectionCached.Clear(); Dictionary <Type, UMetaPathAttribute> nativeTypes; if (AssembliesNativeTypes.TryGetValue(assembly, out nativeTypes)) { foreach (KeyValuePair <Type, UMetaPathAttribute> type in nativeTypes) { LoadNative(type.Key, type.Value); } } }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.Color"); FColor_StructSize = NativeReflection.GetStructSize(classAddress); B_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "B"); B_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "B", Classes.UByteProperty); G_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "G"); G_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "G", Classes.UByteProperty); R_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "R"); R_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "R", Classes.UByteProperty); A_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "A"); A_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "A", Classes.UByteProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FColor)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.Vector4"); FVector4_StructSize = NativeReflection.GetStructSize(classAddress); X_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "X"); X_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "X", Classes.UFloatProperty); Y_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Y"); Y_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Y", Classes.UFloatProperty); Z_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Z"); Z_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Z", Classes.UFloatProperty); W_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "W"); W_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "W", Classes.UFloatProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FVector4)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.InterpCurvePointLinearColor"); FInterpCurvePointLinearColor_StructSize = NativeReflection.GetStructSize(classAddress); InVal_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "InVal"); InVal_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "InVal", Classes.UFloatProperty); OutVal_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "OutVal"); OutVal_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "OutVal", Classes.UStructProperty); ArriveTangent_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "ArriveTangent"); ArriveTangent_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "ArriveTangent", Classes.UStructProperty); LeaveTangent_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "LeaveTangent"); LeaveTangent_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "LeaveTangent", Classes.UStructProperty); NativeReflectionCached.GetPropertyRef(ref InterpMode_PropertyAddress, classAddress, "InterpMode"); InterpMode_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "InterpMode"); InterpMode_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "InterpMode", Classes.UByteProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FInterpCurvePointLinearColor)); }
static void LoadNativeType() { IntPtr classAddress = NativeReflection.GetStruct("/Script/CoreUObject.OrientedBox"); FOrientedBox_StructSize = NativeReflection.GetStructSize(classAddress); Center_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "Center"); Center_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "Center", Classes.UStructProperty); AxisX_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "AxisX"); AxisX_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "AxisX", Classes.UStructProperty); AxisY_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "AxisY"); AxisY_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "AxisY", Classes.UStructProperty); AxisZ_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "AxisZ"); AxisZ_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "AxisZ", Classes.UStructProperty); ExtentX_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "ExtentX"); ExtentX_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "ExtentX", Classes.UFloatProperty); ExtentY_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "ExtentY"); ExtentY_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "ExtentY", Classes.UFloatProperty); ExtentZ_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "ExtentZ"); ExtentZ_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "ExtentZ", Classes.UFloatProperty); NativeReflection.ValidateBlittableStructSize(classAddress, typeof(FOrientedBox)); }
static void LoadNativeType() { //if (NativeReflection.CachedTypeInfo.Enabled) //{ // NativeReflection.CachedTypeInfo typeInfo = NativeReflection.CachedTypeInfo.BuildClass("/Script/USharp.BPTest1"); // MyMap_IsValid = typeInfo.GetPropertyRefOffsetAndValidate("MyMap", ref MyMap_PropertyAddress, out MyMap_Offset, Classes.UMapProperty); // MySet_IsValid = typeInfo.GetPropertyRefOffsetAndValidate("MySet", ref MySet_PropertyAddress, out MySet_Offset, Classes.USetProperty); // NativeReflection.CachedTypeInfo CallMe6_FunctionInfo = typeInfo.GetFunction("CallMe6"); // CallMe6_FunctionAddress = CallMe6_FunctionInfo.Address; // CallMe6_ParamsSize = CallMe6_FunctionInfo.Size; // CallMe6_test_IsValid = CallMe6_FunctionInfo.GetPropertyOffsetAndValidate("test", out CallMe6_test_Offset, Classes.UStructProperty); // CallMe6_test2_IsValid = CallMe6_FunctionInfo.GetPropertyOffsetAndValidate("test2", out CallMe6_test2_Offset, Classes.UStructProperty); // CallMe6_IsValid = CallMe6_FunctionInfo.Exists && CallMe6_test_IsValid && CallMe6_test2_IsValid; // CallMe6_FunctionInfo.LogIsValid(CallMe6_IsValid); // NativeReflection.CachedTypeInfo CallMe5_FunctionInfo = typeInfo.GetFunction("CallMe5"); // CallMe5_FunctionAddress = CallMe5_FunctionInfo.Address; // CallMe5_ParamsSize = CallMe5_FunctionInfo.Size; // CallMe5_a1_IsValid = CallMe5_FunctionInfo.GetPropertyRefOffsetAndValidate("a1", ref CallMe5_a1_PropertyAddress, out CallMe5_a1_Offset, Classes.UArrayProperty); // CallMe5_a2_IsValid = CallMe5_FunctionInfo.GetPropertyRefOffsetAndValidate("a2", ref CallMe5_a2_PropertyAddress, out CallMe5_a2_Offset, Classes.UArrayProperty); // CallMe5_IsValid = CallMe5_FunctionInfo.Exists && CallMe5_a1_IsValid && CallMe5_a2_IsValid; // CallMe5_FunctionInfo.LogIsValid(CallMe5_IsValid); // NativeReflection.CachedTypeInfo CallMe4_FunctionInfo = typeInfo.GetFunction("CallMe4"); // CallMe4_FunctionAddress = CallMe4_FunctionInfo.Address; // CallMe4_ParamsSize = CallMe4_FunctionInfo.Size; // CallMe4_ReturnValue_IsValid = CallMe4_FunctionInfo.GetPropertyRefOffsetAndValidate("ReturnValue", ref CallMe4_ReturnValue_PropertyAddress, out CallMe4_ReturnValue_Offset, Classes.UArrayProperty); // CallMe4_IsValid = CallMe4_FunctionInfo.Exists && CallMe4_ReturnValue_IsValid; // CallMe4_FunctionInfo.LogIsValid(CallMe4_IsValid); // NativeReflection.CachedTypeInfo CallMe3_FunctionInfo = typeInfo.GetFunction("CallMe3"); // CallMe3_FunctionAddress = CallMe3_FunctionInfo.Address; // CallMe3_ParamsSize = CallMe3_FunctionInfo.Size; // CallMe3_ReturnValue_IsValid = CallMe3_FunctionInfo.GetPropertyRefOffsetAndValidate("ReturnValue", ref CallMe3_ReturnValue_PropertyAddress, out CallMe3_ReturnValue_Offset, Classes.UArrayProperty); // CallMe3_IsValid = CallMe3_FunctionInfo.Exists && CallMe3_ReturnValue_IsValid; // CallMe3_FunctionInfo.LogIsValid(CallMe3_IsValid); // NativeReflection.CachedTypeInfo CallMe2_FunctionInfo = typeInfo.GetFunction("CallMe2"); // CallMe2_FunctionAddress = CallMe2_FunctionInfo.Address; // CallMe2_ParamsSize = CallMe2_FunctionInfo.Size; // CallMe2_IsValid = CallMe2_FunctionInfo.Exists; // CallMe2_FunctionInfo.LogIsValid(CallMe2_IsValid); // NativeReflection.CachedTypeInfo CallMe_FunctionInfo = typeInfo.GetFunction("CallMe"); // CallMe_FunctionAddress = CallMe_FunctionInfo.Address; // CallMe_ParamsSize = CallMe_FunctionInfo.Size; // CallMe_IsValid = CallMe_FunctionInfo.Exists; // CallMe_FunctionInfo.LogIsValid(CallMe_IsValid); //} //else { IntPtr classAddress = NativeReflection.GetClass("/Script/USharp.BPTest1"); NativeReflectionCached.GetPropertyRef(ref MyMap_PropertyAddress, classAddress, "MyMap"); MyMap_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "MyMap"); MyMap_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "MyMap", Classes.UMapProperty); NativeReflectionCached.GetPropertyRef(ref MySet_PropertyAddress, classAddress, "MySet"); MySet_Offset = NativeReflectionCached.GetPropertyOffset(classAddress, "MySet"); MySet_IsValid = NativeReflectionCached.ValidatePropertyClass(classAddress, "MySet", Classes.USetProperty); CallMe6_FunctionAddress = NativeReflectionCached.GetFunction(classAddress, "CallMe6"); CallMe6_ParamsSize = NativeReflection.GetFunctionParamsSize(CallMe6_FunctionAddress); CallMe6_test_Offset = NativeReflectionCached.GetPropertyOffset(CallMe6_FunctionAddress, "test"); CallMe6_test_IsValid = NativeReflectionCached.ValidatePropertyClass(CallMe6_FunctionAddress, "test", Classes.UStructProperty); CallMe6_test2_Offset = NativeReflectionCached.GetPropertyOffset(CallMe6_FunctionAddress, "test2"); CallMe6_test2_IsValid = NativeReflectionCached.ValidatePropertyClass(CallMe6_FunctionAddress, "test2", Classes.UStructProperty); CallMe6_IsValid = CallMe6_FunctionAddress != IntPtr.Zero && CallMe6_test_IsValid && CallMe6_test2_IsValid; NativeReflection.LogFunctionIsValid("/Script/USharp.BPTest1:CallMe6", CallMe6_IsValid); CallMe5_FunctionAddress = NativeReflectionCached.GetFunction(classAddress, "CallMe5"); CallMe5_ParamsSize = NativeReflection.GetFunctionParamsSize(CallMe5_FunctionAddress); NativeReflectionCached.GetPropertyRef(ref CallMe5_a1_PropertyAddress, CallMe5_FunctionAddress, "a1"); CallMe5_a1_Offset = NativeReflectionCached.GetPropertyOffset(CallMe5_FunctionAddress, "a1"); CallMe5_a1_IsValid = NativeReflectionCached.ValidatePropertyClass(CallMe5_FunctionAddress, "a1", Classes.UArrayProperty); NativeReflectionCached.GetPropertyRef(ref CallMe5_a2_PropertyAddress, CallMe5_FunctionAddress, "a2"); CallMe5_a2_Offset = NativeReflectionCached.GetPropertyOffset(CallMe5_FunctionAddress, "a2"); CallMe5_a2_IsValid = NativeReflectionCached.ValidatePropertyClass(CallMe5_FunctionAddress, "a2", Classes.UArrayProperty); CallMe5_IsValid = CallMe5_FunctionAddress != IntPtr.Zero && CallMe5_a1_IsValid && CallMe5_a2_IsValid; NativeReflection.LogFunctionIsValid("/Script/USharp.BPTest1:CallMe5", CallMe5_IsValid); CallMe4_FunctionAddress = NativeReflectionCached.GetFunction(classAddress, "CallMe4"); CallMe4_ParamsSize = NativeReflection.GetFunctionParamsSize(CallMe4_FunctionAddress); NativeReflectionCached.GetPropertyRef(ref CallMe4_ReturnValue_PropertyAddress, CallMe4_FunctionAddress, "ReturnValue"); CallMe4_ReturnValue_Offset = NativeReflectionCached.GetPropertyOffset(CallMe4_FunctionAddress, "ReturnValue"); CallMe4_ReturnValue_IsValid = NativeReflectionCached.ValidatePropertyClass(CallMe4_FunctionAddress, "ReturnValue", Classes.UArrayProperty); CallMe4_IsValid = CallMe4_FunctionAddress != IntPtr.Zero && CallMe4_ReturnValue_IsValid; NativeReflection.LogFunctionIsValid("/Script/USharp.BPTest1:CallMe4", CallMe4_IsValid); CallMe3_FunctionAddress = NativeReflectionCached.GetFunction(classAddress, "CallMe3"); CallMe3_ParamsSize = NativeReflection.GetFunctionParamsSize(CallMe3_FunctionAddress); NativeReflectionCached.GetPropertyRef(ref CallMe3_ReturnValue_PropertyAddress, CallMe3_FunctionAddress, "ReturnValue"); CallMe3_ReturnValue_Offset = NativeReflectionCached.GetPropertyOffset(CallMe3_FunctionAddress, "ReturnValue"); CallMe3_ReturnValue_IsValid = NativeReflectionCached.ValidatePropertyClass(CallMe3_FunctionAddress, "ReturnValue", Classes.UArrayProperty); CallMe3_IsValid = CallMe3_FunctionAddress != IntPtr.Zero && CallMe3_ReturnValue_IsValid; NativeReflection.LogFunctionIsValid("/Script/USharp.BPTest1:CallMe3", CallMe3_IsValid); CallMe2_FunctionAddress = NativeReflectionCached.GetFunction(classAddress, "CallMe2"); CallMe2_ParamsSize = NativeReflection.GetFunctionParamsSize(CallMe2_FunctionAddress); CallMe2_IsValid = CallMe2_FunctionAddress != IntPtr.Zero; NativeReflection.LogFunctionIsValid("/Script/USharp.BPTest1:CallMe2", CallMe2_IsValid); CallMe_FunctionAddress = NativeReflectionCached.GetFunction(classAddress, "CallMe"); CallMe_ParamsSize = NativeReflection.GetFunctionParamsSize(CallMe_FunctionAddress); CallMe_IsValid = CallMe_FunctionAddress != IntPtr.Zero; NativeReflection.LogFunctionIsValid("/Script/USharp.BPTest1:CallMe", CallMe_IsValid); } }