private static void FailedToFind(string objectToFind) { FObjectInitializer currentInitializer = FUObjectThreadContext.TopInitializer(); UClass unrealClass = currentInitializer.IsNull ? null : currentInitializer.GetClass(); string message = string.Format("CDO Constructor ({0}): Failed to find {1}\n", (unrealClass != null ? unrealClass.GetName() : "Unknown"), objectToFind); Log(ELogVerbosity.Error, message); }
/// <summary> /// Gets ObjectInitializer for the currently constructed object. Can only be used inside of a constructor of UObject-derived class. /// </summary> public static FObjectInitializer Get() { FObjectInitializer result = new FObjectInitializer(); IntPtr objectInitializer = Native_FObjectInitializer.Get(); if (objectInitializer != IntPtr.Zero) { result.NativeObject = Native_FObjectInitializer.GetObj(objectInitializer); result.NativeObjectInitializer = objectInitializer; } return(result); }
private static void CheckFoundViaRedirect(UObject obj, string pathName, string objectToFind) { UObjectRedirector redir = UObject.FindObject <UObjectRedirector>(ObjectOuter.AnyPackage, pathName); if (redir != null && redir.DestinationObject == obj) { string str = obj.GetFullName().Replace(" ", "'") + "'"; FObjectInitializer currentInitializer = FUObjectThreadContext.TopInitializer(); UClass unrealClass = currentInitializer.IsNull ? null : currentInitializer.GetClass(); string message = string.Format("CDO Constructor ({0}): Followed redirector ({1}), change code to new path ({2])\n", (unrealClass != null ? unrealClass.GetName() : "Unknown"), objectToFind, str); Log(ELogVerbosity.Warning, message); } }
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); }
private static T NewObject <T>( bool checkClass, ObjectOuter outer, UClass unrealClass, FName name = default(FName), EObjectFlags flags = EObjectFlags.NoFlags, UObject template = null, bool copyTransientsFromClassDefaults = false, IntPtr instanceGraph = default(IntPtr)) where T : UObject { if (unrealClass == null) { return(null); } if (!outer.IsAnyPackage && outer.Object == null) { outer.Object = GetTransientPackage(); } if (name == FName.None) { FObjectInitializer.AssertIfInConstructor(outer.Object); } if (checkClass) { // DO_CHECK // Class was specified explicitly, so needs to be validated if (Native_UObjectGlobals.CheckIsClassChildOf_Internal != null) { UClass parentClass = UClass.GetClass <T>(); Native_UObjectGlobals.CheckIsClassChildOf_Internal( parentClass == null ? IntPtr.Zero : parentClass.Address, unrealClass == null ? IntPtr.Zero : unrealClass.Address); } } return(GCHelper.Find <T>(Native_UObjectGlobals.StaticConstructObject_Internal( unrealClass == null ? IntPtr.Zero : unrealClass.Address, outer.Address, ref name, flags, EInternalObjectFlags.None, template == null ? IntPtr.Zero : template.Address, copyTransientsFromClassDefaults, instanceGraph))); }
public virtual void Initialize(FObjectInitializer initializer) { }
/// <summary> /// Push new FObjectInitializer on stack. /// </summary> /// <param name="initializer">Object initializer to push.</param> public static void PushInitializer(FObjectInitializer initializer) { Native_FUObjectThreadContext.PushInitializer(initializer.Address); }
protected AHelloWorld(FObjectInitializer initializer) : base(initializer) { }
public override void Initialize(FObjectInitializer initializer) { FMessage.Log("Hello from TestBitObj"); base.Initialize(initializer); }