public async Task <UEClass> GetClass() { // Must have a class, aka must not hit that condition if (!Object.Class.IsValid()) { return(new UEClass()); } return((await ObjectsStore.GetByAddress(Object.Class)).Cast <UEClass>()); }
public async Task <string> GetInstanceClassName() { if (!IsValid()) { return(string.Empty); } UEObject obj = ObjectsStore.GetByAddress(GetAddress(), out bool found); return(found ? await(await obj.GetClass()).GetNameCpp() : string.Empty); }
/// <summary> /// Called After All Of Packages Proceed /// </summary> private static async Task SdkAfterFinish(List <Package> packages) { var missing = Package.ProcessedObjects.Where(kv => !kv.Value).ToList(); var missedList = new List <GenericTypes.UEStruct>(); if (!missing.Empty()) { missedList = missing.Select(kv => ObjectsStore.GetByAddress(kv.Key).Result.Cast <GenericTypes.UEStruct>()).ToList(); } await Generator.GenLang.SdkAfterFinish(packages, missedList); }
public async Task <UENumericProperty> GetUnderlyingProperty() { if (ObjEnumProperty.Empty()) { ObjEnumProperty = await Object.Cast <UEnumProperty>(); } if (!ObjEnumProperty.UnderlyingProp.IsValid()) { return(new UENumericProperty()); } return((await ObjectsStore.GetByAddress(ObjEnumProperty.UnderlyingProp)).Cast <UENumericProperty>()); }
public async Task <UEFunction> GetSignatureFunction() { if (ObjDelegateProperty.Empty()) { ObjDelegateProperty = await Object.Cast <UDelegateProperty>(); } if (!ObjDelegateProperty.SignatureFunction.IsValid()) { return(new UEFunction()); } return((await ObjectsStore.GetByAddress(ObjDelegateProperty.SignatureFunction)).Cast <UEFunction>()); }
public async Task <UEProperty> GetValueProperty() { if (ObjMapProperty.Empty()) { ObjMapProperty = await Object.Cast <UMapProperty>(); } if (!ObjMapProperty.ValueProp.IsValid()) { return(new UEProperty()); } return((await ObjectsStore.GetByAddress(ObjMapProperty.ValueProp)).Cast <UEProperty>()); }
public async Task <UEProperty> GetInner() { if (ObjArrayProperty.Empty()) { ObjArrayProperty = await Object.Cast <UArrayProperty>(); } if (!ObjArrayProperty.Inner.IsValid()) { return(new UEProperty()); } return((await ObjectsStore.GetByAddress(ObjArrayProperty.Inner)).Cast <UEProperty>()); }
public async Task <UEClass> GetMetaClass() { if (ObjAssetClassProperty.Empty()) { ObjAssetClassProperty = await Object.Cast <UAssetClassProperty>(); } if (!ObjAssetClassProperty.MetaClass.IsValid()) { return(new UEClass()); } return((await ObjectsStore.GetByAddress(ObjAssetClassProperty.MetaClass)).Cast <UEClass>()); }
public async Task <UEClass> GetPropertyClass() { if (ObjObjectPropertyBase.Empty()) { ObjObjectPropertyBase = await Object.Cast <UObjectPropertyBase>(); } if (!ObjObjectPropertyBase.PropertyClass.IsValid()) { return(new UEClass()); } return((await ObjectsStore.GetByAddress(ObjObjectPropertyBase.PropertyClass)).Cast <UEClass>()); }
public async Task <UEClass> GetInterfaceClass() { if (ObjInterfaceProperty.Empty()) { ObjInterfaceProperty = await Object.Cast <UInterfaceProperty>(); } if (!ObjInterfaceProperty.InterfaceClass.IsValid()) { return(new UEClass()); } return((await ObjectsStore.GetByAddress(ObjInterfaceProperty.InterfaceClass)).Cast <UEClass>()); }
public async Task <UEEnum> GetEnum() { if (ObjByteProperty.Empty()) { ObjByteProperty = await Object.Cast <UByteProperty>(); } if (!ObjByteProperty.Enum.IsValid()) { return(new UEEnum()); } return((await ObjectsStore.GetByAddress(ObjByteProperty.Enum)).Cast <UEEnum>()); }
public async Task <UEField> GetChildren() { if (ObjStruct.Empty()) { ObjStruct = await Object.Cast <UStruct>(); } if (!ObjStruct.Children.IsValid()) { return(new UEField()); } return((await ObjectsStore.GetByAddress(ObjStruct.Children)).Cast <UEField>()); }
public async Task <UEStruct> GetSuper() { if (ObjStruct.Empty()) { ObjStruct = await Object.Cast <UStruct>(); } if (!ObjStruct.SuperField.IsValid()) { return(new UEStruct()); } return((await ObjectsStore.GetByAddress(ObjStruct.SuperField)).Cast <UEStruct>()); }
public async Task <UEField> GetNext() { if (ObjField.Empty()) { ObjField = await Object.Cast <UField>(); } if (!ObjField.Next.IsValid()) { return(new UEField()); } return((await ObjectsStore.GetByAddress(ObjField.Next)).Cast <UEField>()); }
public async Task <UEScriptStruct> GetStruct() { if (ObjStructProperty.Empty()) { ObjStructProperty = await Object.Cast <UStructProperty>(); } if (!ObjStructProperty.Struct.IsValid()) { return(new UEScriptStruct()); } return((await ObjectsStore.GetByAddress(ObjStructProperty.Struct)).Cast <UEScriptStruct>()); }
public async Task <UEObject> GetPackageObject() { if (Package != null) { return(Package); } // Package Is The Last Outer for (UEObject outer = await GetOuter(); outer.IsValid(); outer = await outer.GetOuter()) { Package = outer; } return(Package ?? (Package = await ObjectsStore.GetByAddress(Object.ObjAddress))); }
/// <summary> /// Start Dumping Packages On Target Process<para/> /// As Programming Lang Code. /// </summary> /// <param name="requestInfo">Information About User</param> public async Task <GenRetInfo> Start(AgentRequestInfo requestInfo) { var ret = new GenRetInfo(); _requestInfo = requestInfo; ret.StartTime = DateTime.Now; #region Check Address var uDiscord = UpdateDiscordState("State", "Check Address !!"); if (!Utils.IsValidGNamesAddress(_gnames)) { return new GenRetInfo { State = GeneratorState.BadGName } } ; if (!Utils.IsTUobjectArray(_gobjects)) { return new GenRetInfo { State = GeneratorState.BadGObject } } ; #endregion // Flag for `DiscordMessageUpdater` _sdkWork = true; #region GNames // Wait Discord message to send (if was not !!) await uDiscord; uDiscord = UpdateDiscordState("State", "Dumping **GNames**. !!"); // Dump GNames var gnamesT = NamesStore.Initialize(_gnames); if (!await gnamesT) { return new GenRetInfo { State = GeneratorState.BadGName } } ; // Update Information await uDiscord; uDiscord = UpdateDiscordState("GNames", $"*{NamesStore.GNames.Names.Count}*"); #endregion #region GObjects // Wait Discord message to send (if was not !!) await uDiscord; uDiscord = UpdateDiscordState("State", "Dumping **GObjects**. !!"); // Dump GObjects var gobjectsT = ObjectsStore.Initialize(_gobjects); if (!await gobjectsT) { return new GenRetInfo { State = GeneratorState.BadGObject } } ; // Update Information await uDiscord; uDiscord = UpdateDiscordState("GObjects", $"*{ObjectsStore.GObjects.Objects.Count}*"); #endregion #region Init Generator // Init Generator Settings if (!Generator.Initialize()) { return new GenRetInfo { State = GeneratorState.BadGenerator } } ; // Init Generator info Generator.SdkPath = Path.Combine(Program.GenPath, "SDK"); Generator.LangPaths = Program.LangsPath; Generator.IsGObjectsChunks = ObjectsStore.GObjects.IsChunksAddress; // Ask User For Information Generator.GameName = await Utils.DiscordManager.StringQuestion(_requestInfo, "Game Name .?"); Generator.GameVersion = await Utils.DiscordManager.StringQuestion(_requestInfo, "Game Version .?"); Generator.GameModule = await Utils.DiscordManager.OptionsQuestion(_requestInfo, "Game Module .?", Utils.MemObj.GetModuleList().Where(m => !m.ModuleName.ToLower().EndsWith(".dll")).Select(m => m.ModuleName).ToList()); Generator.SdkType = await Utils.DiscordManager.YesNoMessage(_requestInfo, "Internal SDK .?") ? SdkType.Internal : SdkType.External; Generator.SdkLangName = await Utils.DiscordManager.OptionsQuestion(_requestInfo, "Syntax Lang .?", Program.SupportedLangs.Select(s => s.Key).ToList()); // Get Module Info Utils.MemObj.GetModuleInfo(Generator.GameModule, out var mod); Generator.GameModuleBase = mod.BaseAddress; #region Move Sdk Message // Move the Sdk Dump Message, to be the last message ulong oldMessage = _requestInfo.AgentMessage.Id; // New Message _requestInfo.AgentMessage = await _requestInfo.Context.Channel.SendMessageAsync(embed : _requestInfo.AgentMessage.Embeds.First()); // Delete Old await(await _requestInfo.Context.Channel.GetMessageAsync(oldMessage)).DeleteAsync(); #endregion // Init Sdk Lang if (!InitSdkLang()) { return new GenRetInfo { State = GeneratorState.BadSdkLang } } ; #endregion Directory.CreateDirectory(Generator.SdkPath); #region Dump Names/Objects To Files //if (Generator.ShouldDumpArrays) //{ // *startInfo.State = "Dumping (GNames/GObjects)."; // Dump(outputDirectory, *startInfo.State); // *startInfo.State = "Dump (GNames/GObjects) Done."; //} #endregion // Wait Discord message to send (if was not !!) await uDiscord; // Process Packages await ProcessPackages(); ret.State = GeneratorState.Good; return(ret); }
public int GetIndex() { return(ObjectsStore.GetIndexByAddress(Object.ObjAddress)); }
public async Task <UEObject> GetOuter() { return(!Object.Outer.IsValid() ? new UEObject() : await ObjectsStore.GetByAddress(Object.Outer)); }