Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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;
 }