private IntPtr FindFirstNonUSharpClassParentClass(IntPtr unrealClass) { IntPtr sharpStaticClass = Native_USharpClass.StaticClass(); while (unrealClass != IntPtr.Zero && !Native_UObjectBaseUtility.IsA(unrealClass, sharpStaticClass)) { unrealClass = Native_UClass.GetSuperClass(unrealClass); } return(unrealClass); }
public void SetFallbackInvokers() { if (managedInvokersByAddress != null) { foreach (IntPtr function in managedInvokersByAddress.Keys) { // The fallback invoker should ensure that the memory is satisfied based on the function params/return prop Native_USharpClass.SetFallbackFunctionInvoker(Address, function); } } }
private IntPtr FindFirstNativeParentClass(IntPtr unrealClass) { IntPtr sharpStaticClass = Native_USharpClass.StaticClass(); while (unrealClass != IntPtr.Zero && (!Native_UClass.HasAnyClassFlags(unrealClass, EClassFlags.Native) || Native_UObjectBaseUtility.IsA(unrealClass, sharpStaticClass))) { unrealClass = Native_UClass.GetSuperClass(unrealClass); } return(unrealClass); }
private void Constructor(IntPtr objectInitializerPtr) { Native_UClass.Call_ClassConstructor(ParentClass, objectInitializerPtr); FObjectInitializer objectInitializer = new FObjectInitializer(objectInitializerPtr); IntPtr sharpStaticClass = Native_USharpClass.StaticClass(); IntPtr unrealClass = Native_FObjectInitializer.GetClass(objectInitializerPtr); IntPtr sharpClass = unrealClass; while (sharpClass != IntPtr.Zero && !Native_UObjectBaseUtility.IsA(sharpClass, sharpStaticClass)) { sharpClass = Native_UClass.GetSuperClass(sharpClass); } System.Diagnostics.Debug.Assert(sharpClass != IntPtr.Zero); }
public static void ReinstanceHotReloadedClasses() { if (HotReloadClassCount > 0) { foreach (KeyValuePair <Type, ManagedUnrealClass> managedClass in Classes) { if (managedClass.Value.OldClass != IntPtr.Zero) { Native_USharpClass.RegisterClassForHotReloadReinstance(managedClass.Value.OldClass, managedClass.Value.StaticClass); managedClass.Value.OldClass = IntPtr.Zero; } } Native_USharpClass.ReinstanceHotReloadedClasses(); } HotReloadClassCount = 0; }