Add Unreal Engine SDK files

This commit is contained in:
2026-02-19 21:50:20 +01:00
parent 09877d549b
commit 9b45c72b40
5 changed files with 3129 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
#pragma once
/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/
// FORWARD DECLARATIONS
namespace ABP_wukong_head_lingzhi { struct FAnimBlueprintGeneratedConstantData; }
namespace b1 { class UBGW_EventCollection; }
namespace ABP_Wukong_head_born_postprocess { struct FAnimBlueprintGeneratedConstantData; }
namespace SimpleCharts { enum class ETriggerType : uint8; }
namespace Abp_sts_dao { struct FAnimBlueprintGeneratedConstantData; }
namespace EnhancedInput { enum class ETriggerType : uint8; }
namespace Abp_ModularMeshCS
{
struct FAnimBlueprintGeneratedMutableData;
struct FAnimBlueprintGeneratedConstantData;
}
namespace UnrealExtent
{
class UGSRetainerBox;
class UGSScrollBox;
class UGSTileView;
}
namespace Abp_InteractiveActor
{
struct FAnimBlueprintGeneratedMutableData;
struct FAnimBlueprintGeneratedConstantData;
}
namespace b1_Managed
{
class UGSScrollBox;
class UBGW_EventCollection;
class UGSTileView;
class UGSRetainerBox;
enum class EMapSymbolType : uint8;
enum class ECameraType : uint8;
enum class ETriggerType : uint8;
}
namespace GSE_ProtobufDB
{
enum class EMapSymbolType : uint8;
enum class ECameraType : uint8;
}

View File

@@ -0,0 +1,21 @@
#pragma once
/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/
// PROPERTY-FIXUP
namespace SDK
{
class alignas(0x01) FMulticastSparseDelegateProperty_
{
unsigned __int8 Pad[0x1];
};
}

527
BlackMythWukong/SDK.hpp Normal file
View File

@@ -0,0 +1,527 @@
#pragma once
/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/
// b1
// 5.0.0-0+++UE5+Release-5.0
// Includes the entire SDK. Include files directly for faster compilation!
#include "SDK/Basic.hpp"
#include "SDK/CoreUObject_structs.hpp"
#include "SDK/CoreUObject_classes.hpp"
#include "SDK/ClothingSystemRuntimeNv_structs.hpp"
#include "SDK/ClothingSystemRuntimeInterface_structs.hpp"
#include "SDK/ClothingSystemRuntimeCommon_structs.hpp"
#include "SDK/ClothingSystemRuntimeInterface_classes.hpp"
#include "SDK/ClothingSystemRuntimeCommon_classes.hpp"
#include "SDK/ClothingSystemRuntimeNv_classes.hpp"
#include "SDK/USharp_structs.hpp"
#include "SDK/USharp_classes.hpp"
#include "SDK/BP_Player_Wukong_KangJinLong_Lightning_classes.hpp"
#include "SDK/InputCore_structs.hpp"
#include "SDK/Slate_structs.hpp"
#include "SDK/PhysicsCore_structs.hpp"
#include "SDK/Chaos_structs.hpp"
#include "SDK/Engine_structs.hpp"
#include "SDK/NetCore_structs.hpp"
#include "SDK/NetCore_classes.hpp"
#include "SDK/AudioPlatformConfiguration_structs.hpp"
#include "SDK/PhysicsCore_classes.hpp"
#include "SDK/AudioExtensions_structs.hpp"
#include "SDK/AudioExtensions_classes.hpp"
#include "SDK/SlateCore_structs.hpp"
#include "SDK/Engine_classes.hpp"
#include "SDK/BI_InputRoot_classes.hpp"
#include "SDK/GSEngineExtent_structs.hpp"
#include "SDK/GSEngineExtent_classes.hpp"
#include "SDK/CinematicCamera_structs.hpp"
#include "SDK/CinematicCamera_classes.hpp"
#include "SDK/NiagaraCore_structs.hpp"
#include "SDK/NiagaraCore_classes.hpp"
#include "SDK/MovieScene_structs.hpp"
#include "SDK/NiagaraShader_structs.hpp"
#include "SDK/Niagara_structs.hpp"
#include "SDK/NiagaraShader_classes.hpp"
#include "SDK/Niagara_classes.hpp"
#include "SDK/GSNiagara_structs.hpp"
#include "SDK/GSNiagara_classes.hpp"
#include "SDK/Arteries_structs.hpp"
#include "SDK/Arteries_classes.hpp"
#include "SDK/GSEArteries_structs.hpp"
#include "SDK/GSEArteries_classes.hpp"
#include "SDK/ApexDestruction_structs.hpp"
#include "SDK/ApexDestruction_classes.hpp"
#include "SDK/BP_UI_GMDefaultPanel_classes.hpp"
#include "SDK/MovieScene_classes.hpp"
#include "SDK/GSUMGExt_structs.hpp"
#include "SDK/GSUMGExt_classes.hpp"
#include "SDK/DeveloperSettings_structs.hpp"
#include "SDK/DeveloperSettings_classes.hpp"
#include "SDK/NiagaraAnimNotifies_structs.hpp"
#include "SDK/NiagaraAnimNotifies_classes.hpp"
#include "SDK/HoudiniEngineRuntime_structs.hpp"
#include "SDK/HoudiniEngineRuntime_classes.hpp"
#include "SDK/TexAlphaDA_classes.hpp"
#include "SDK/CustomLightSystem_structs.hpp"
#include "SDK/CustomLightSystem_classes.hpp"
#include "SDK/ConsoleVariableManager_structs.hpp"
#include "SDK/ConsoleVariableManager_classes.hpp"
#include "SDK/MM_structs.hpp"
#include "SDK/MM_classes.hpp"
#include "SDK/UMG_structs.hpp"
#include "SDK/UMG_classes.hpp"
#include "SDK/NiagaraUIRenderer_structs.hpp"
#include "SDK/NiagaraUIRenderer_classes.hpp"
#include "SDK/SubstanceCore_structs.hpp"
#include "SDK/SubstanceCore_classes.hpp"
#include "SDK/SpiderNavigation_structs.hpp"
#include "SDK/SpiderNavigation_classes.hpp"
#include "SDK/ProceduralMeshComponent_structs.hpp"
#include "SDK/ProceduralMeshComponent_classes.hpp"
#include "SDK/GameplayCameras_structs.hpp"
#include "SDK/GameplayCameras_classes.hpp"
#include "SDK/MovieSceneTracks_structs.hpp"
#include "SDK/MovieSceneTracks_classes.hpp"
#include "SDK/TemplateSequence_structs.hpp"
#include "SDK/TemplateSequence_classes.hpp"
#include "SDK/SequencerScripting_structs.hpp"
#include "SDK/SequencerScripting_classes.hpp"
#include "SDK/TressFX_structs.hpp"
#include "SDK/TressFX_classes.hpp"
#include "SDK/AkAudio_structs.hpp"
#include "SDK/WwiseFileHandler_structs.hpp"
#include "SDK/WwiseResourceLoader_structs.hpp"
#include "SDK/AkAudio_classes.hpp"
#include "SDK/WwiseFileHandler_classes.hpp"
#include "SDK/WwiseResourceLoader_classes.hpp"
#include "SDK/WwiseSimpleExternalSource_structs.hpp"
#include "SDK/WwiseSimpleExternalSource_classes.hpp"
#include "SDK/DualSenseAdaptor_classes.hpp"
#include "SDK/AnimationCore_structs.hpp"
#include "SDK/ControlRig_structs.hpp"
#include "SDK/PropertyPath_structs.hpp"
#include "SDK/RigVM_structs.hpp"
#include "SDK/ControlRig_classes.hpp"
#include "SDK/Reflection_Parameters_structs.hpp"
#include "SDK/LevelSequence_structs.hpp"
#include "SDK/LevelSequence_classes.hpp"
#include "SDK/MovieRenderPipelineCore_structs.hpp"
#include "SDK/OpenColorIO_structs.hpp"
#include "SDK/MovieRenderPipelineCore_classes.hpp"
#include "SDK/MovieRenderPipelineSettings_classes.hpp"
#include "SDK/MovieRenderPipelineRenderPasses_structs.hpp"
#include "SDK/ActorLayerUtilities_structs.hpp"
#include "SDK/MovieRenderPipelineRenderPasses_classes.hpp"
#include "SDK/ActorLayerUtilities_classes.hpp"
#include "SDK/OpenColorIO_classes.hpp"
#include "SDK/OSC_structs.hpp"
#include "SDK/OSC_classes.hpp"
#include "SDK/PrefabricatorRuntime_structs.hpp"
#include "SDK/PrefabricatorRuntime_classes.hpp"
#include "SDK/ConstructionSystemRuntime_structs.hpp"
#include "SDK/ConstructionSystemRuntime_classes.hpp"
#include "SDK/VirtualHeightfieldMesh_classes.hpp"
#include "SDK/DonAINavigation_structs.hpp"
#include "SDK/DonAINavigation_classes.hpp"
#include "SDK/GSDynamicSDF_classes.hpp"
#include "SDK/V8_structs.hpp"
#include "SDK/V8_classes.hpp"
#include "SDK/JavascriptUMG_structs.hpp"
#include "SDK/JavascriptUMG_classes.hpp"
#include "SDK/JavascriptHttp_structs.hpp"
#include "SDK/JavascriptHttp_classes.hpp"
#include "SDK/JavascriptWebSocket_classes.hpp"
#include "SDK/OnlineSubsystemUtils_structs.hpp"
#include "SDK/OnlineSubsystem_structs.hpp"
#include "SDK/OnlineSubsystemUtils_classes.hpp"
#include "SDK/AudioMixer_structs.hpp"
#include "SDK/AudioMixer_classes.hpp"
#include "SDK/OnlineSubsystem_classes.hpp"
#include "SDK/DatasmithContent_structs.hpp"
#include "SDK/DatasmithContent_classes.hpp"
#include "SDK/VariantManagerContent_structs.hpp"
#include "SDK/VariantManagerContent_classes.hpp"
#include "SDK/InteractiveToolsFramework_structs.hpp"
#include "SDK/InteractiveToolsFramework_classes.hpp"
#include "SDK/MeshModelingToolsExp_structs.hpp"
#include "SDK/ModelingComponents_structs.hpp"
#include "SDK/ModelingComponents_classes.hpp"
#include "SDK/ModelingOperators_structs.hpp"
#include "SDK/MeshModelingTools_structs.hpp"
#include "SDK/MeshModelingTools_classes.hpp"
#include "SDK/MeshModelingToolsExp_classes.hpp"
#include "SDK/GeometryFramework_structs.hpp"
#include "SDK/GeometryFramework_classes.hpp"
#include "SDK/ModelingOperators_classes.hpp"
#include "SDK/HairStrandsCore_structs.hpp"
#include "SDK/HairStrandsCore_classes.hpp"
#include "SDK/GeometryCache_structs.hpp"
#include "SDK/GeometryCache_classes.hpp"
#include "SDK/GeometryCacheTracks_structs.hpp"
#include "SDK/GeometryCacheTracks_classes.hpp"
#include "SDK/Water_structs.hpp"
#include "SDK/Water_classes.hpp"
#include "SDK/AIModule_structs.hpp"
#include "SDK/GameplayTags_structs.hpp"
#include "SDK/AIModule_classes.hpp"
#include "SDK/ACLPlugin_structs.hpp"
#include "SDK/ACLPlugin_classes.hpp"
#include "SDK/AsyncLoadingScreen_structs.hpp"
#include "SDK/MoviePlayer_structs.hpp"
#include "SDK/AsyncLoadingScreen_classes.hpp"
#include "SDK/AO_Parameters_structs.hpp"
#include "SDK/Debug_Parameters_structs.hpp"
#include "SDK/GI_Parameters_structs.hpp"
#include "SDK/SkyLight_Parameters_structs.hpp"
#include "SDK/LandscapeAndFoliage_Parameter_structs.hpp"
#include "SDK/Translucency_Parameters_structs.hpp"
#include "SDK/Shadow_Parameters_structs.hpp"
#include "SDK/Water_Caustics_Parameters_structs.hpp"
#include "SDK/Mesh_Caustics_Parameters_structs.hpp"
#include "SDK/DLSS_Parameters_structs.hpp"
#include "SDK/RTX_PostProcess_Settings_structs.hpp"
#include "SDK/DataType_Support_structs.hpp"
#include "SDK/RTXDI_Quality_structs.hpp"
#include "SDK/RTXDI_NRD_Parameters_structs.hpp"
#include "SDK/Lumen_structs.hpp"
#include "SDK/Disable_structs.hpp"
#include "SDK/Paper2D_structs.hpp"
#include "SDK/Paper2D_classes.hpp"
#include "SDK/GSInput_structs.hpp"
#include "SDK/EnhancedInput_structs.hpp"
#include "SDK/EnhancedInput_classes.hpp"
#include "SDK/GSInput_classes.hpp"
#include "SDK/SkeletalMerging_structs.hpp"
#include "SDK/SkeletalMerging_classes.hpp"
#include "SDK/GSAnimationKeyBlender_structs.hpp"
#include "SDK/GSAnimationKeyBlender_classes.hpp"
#include "SDK/GSAnimSystem_structs.hpp"
#include "SDK/GSAnimSystem_classes.hpp"
#include "SDK/SMSystem_structs.hpp"
#include "SDK/SMSystem_classes.hpp"
#include "SDK/GSAnimMachine_structs.hpp"
#include "SDK/GSAnimMachine_classes.hpp"
#include "SDK/AnimationLocomotionLibraryRuntime_classes.hpp"
#include "SDK/StreamlineBlueprint_structs.hpp"
#include "SDK/StreamlineBlueprint_classes.hpp"
#include "SDK/StreamlineRHI_structs.hpp"
#include "SDK/StreamlineRHI_classes.hpp"
#include "SDK/DLSS_structs.hpp"
#include "SDK/DLSS_classes.hpp"
#include "SDK/DLSSBlueprint_structs.hpp"
#include "SDK/DLSSBlueprint_classes.hpp"
#include "SDK/FFXFSR3Settings_structs.hpp"
#include "SDK/FFXFSR3Settings_classes.hpp"
#include "SDK/ReplicationGraph_structs.hpp"
#include "SDK/ReplicationGraph_classes.hpp"
#include "SDK/PacketHandler_classes.hpp"
#include "SDK/OnlineSubsystemSteam_classes.hpp"
#include "SDK/GSReplaySystem_classes.hpp"
#include "SDK/GSGameSettings_classes.hpp"
#include "SDK/AnimToTexture_structs.hpp"
#include "SDK/AnimToTexture_classes.hpp"
#include "SDK/OpacityMicroMap_structs.hpp"
#include "SDK/OpacityMicroMap_classes.hpp"
#include "SDK/StructUtils_structs.hpp"
#include "SDK/PCG_structs.hpp"
#include "SDK/PCG_classes.hpp"
#include "SDK/GeometryScriptingCore_structs.hpp"
#include "SDK/GeometryScriptingCore_classes.hpp"
#include "SDK/OnlineSubsystemEOS_structs.hpp"
#include "SDK/OnlineSubsystemEOS_classes.hpp"
#include "SDK/SocketSubsystemEOS_classes.hpp"
#include "SDK/XeSSCore_classes.hpp"
#include "SDK/XeSSBlueprint_structs.hpp"
#include "SDK/XeSSBlueprint_classes.hpp"
#include "SDK/XeLLBlueprint_structs.hpp"
#include "SDK/XeLLBlueprint_classes.hpp"
#include "SDK/XeFGBlueprint_structs.hpp"
#include "SDK/XeFGBlueprint_classes.hpp"
#include "SDK/UMGSpline_structs.hpp"
#include "SDK/UMGSpline_classes.hpp"
#include "SDK/SimpleCharts_structs.hpp"
#include "SDK/SimpleCharts_classes.hpp"
#include "SDK/WebBrowserWidget_classes.hpp"
#include "SDK/Qos_structs.hpp"
#include "SDK/Qos_classes.hpp"
#include "SDK/Party_structs.hpp"
#include "SDK/Party_classes.hpp"
#include "SDK/Lobby_structs.hpp"
#include "SDK/Lobby_classes.hpp"
#include "SDK/PBIK_structs.hpp"
#include "SDK/Hotfix_structs.hpp"
#include "SDK/Hotfix_classes.hpp"
#include "SDK/Rejoin_structs.hpp"
#include "SDK/Rejoin_classes.hpp"
#include "SDK/BP_CameraCrane_ForSeq_classes.hpp"
#include "SDK/CinematicPrestreaming_structs.hpp"
#include "SDK/CinematicPrestreaming_classes.hpp"
#include "SDK/BinkMediaPlayer_structs.hpp"
#include "SDK/BinkMediaPlayer_classes.hpp"
#include "SDK/BP_B1PlayerCameraManager_classes.hpp"
#include "SDK/GSDisplayDebug_structs.hpp"
#include "SDK/GSDisplayDebug_classes.hpp"
#include "SDK/AntiLag2Settings_classes.hpp"
#include "SDK/Calliope_structs.hpp"
#include "SDK/GameplayTags_classes.hpp"
#include "SDK/Calliope_classes.hpp"
#include "SDK/AugmentedReality_structs.hpp"
#include "SDK/AugmentedReality_classes.hpp"
#include "SDK/CalliopeWin64_classes.hpp"
#include "SDK/GSSlateUtils_classes.hpp"
#include "SDK/Hephaestus_classes.hpp"
#include "SDK/NiagaraTickManager_classes.hpp"
#include "SDK/IKRig_structs.hpp"
#include "SDK/IKRig_classes.hpp"
#include "SDK/OodleNetworkHandlerComponent_structs.hpp"
#include "SDK/OodleNetworkHandlerComponent_classes.hpp"
#include "SDK/AnimationSharing_structs.hpp"
#include "SDK/AnimationSharing_classes.hpp"
#include "SDK/SignificanceManager_classes.hpp"
#include "SDK/UObjectPlugin_structs.hpp"
#include "SDK/UObjectPlugin_classes.hpp"
#include "SDK/FacialAnimation_classes.hpp"
#include "SDK/AutomationUtils_classes.hpp"
#include "SDK/ChaosCloth_structs.hpp"
#include "SDK/ChaosCloth_classes.hpp"
#include "SDK/GeometryCollectionTracks_structs.hpp"
#include "SDK/GeometryCollectionTracks_classes.hpp"
#include "SDK/JsonUtilities_structs.hpp"
#include "SDK/JsonUtilities_classes.hpp"
#include "SDK/ChaosNiagara_structs.hpp"
#include "SDK/ChaosNiagara_classes.hpp"
#include "SDK/AvfMediaFactory_classes.hpp"
#include "SDK/MediaAssets_structs.hpp"
#include "SDK/MediaAssets_classes.hpp"
#include "SDK/ImgMedia_structs.hpp"
#include "SDK/ImgMedia_classes.hpp"
#include "SDK/ImgMediaEngine_classes.hpp"
#include "SDK/ImgMediaFactory_classes.hpp"
#include "SDK/MediaCompositing_structs.hpp"
#include "SDK/MediaCompositing_classes.hpp"
#include "SDK/WmfMediaFactory_classes.hpp"
#include "SDK/TcpMessaging_classes.hpp"
#include "SDK/UdpMessaging_structs.hpp"
#include "SDK/UdpMessaging_classes.hpp"
#include "SDK/ActorSequence_structs.hpp"
#include "SDK/ActorSequence_classes.hpp"
#include "SDK/AndroidFileServer_structs.hpp"
#include "SDK/AndroidFileServer_classes.hpp"
#include "SDK/AndroidPermission_classes.hpp"
#include "SDK/AppleImageUtils_structs.hpp"
#include "SDK/AppleImageUtils_classes.hpp"
#include "SDK/AssetTags_structs.hpp"
#include "SDK/AssetTags_classes.hpp"
#include "SDK/AudioCapture_structs.hpp"
#include "SDK/AudioCapture_classes.hpp"
#include "SDK/CableComponent_classes.hpp"
#include "SDK/CustomMeshComponent_structs.hpp"
#include "SDK/CustomMeshComponent_classes.hpp"
#include "SDK/GooglePAD_structs.hpp"
#include "SDK/GooglePAD_classes.hpp"
#include "SDK/LocationServicesBPLibrary_structs.hpp"
#include "SDK/LocationServicesBPLibrary_classes.hpp"
#include "SDK/MobilePatchingUtils_classes.hpp"
#include "SDK/ResonanceAudio_structs.hpp"
#include "SDK/ResonanceAudio_classes.hpp"
#include "SDK/SoundFields_classes.hpp"
#include "SDK/Synthesis_structs.hpp"
#include "SDK/Synthesis_classes.hpp"
#include "SDK/AudioAnalyzer_classes.hpp"
#include "SDK/AudioSynesthesia_structs.hpp"
#include "SDK/AudioSynesthesia_classes.hpp"
#include "SDK/UnrealExtent_structs.hpp"
#include "SDK/b1_structs.hpp"
#include "SDK/UnrealExtent_classes.hpp"
#include "SDK/b1_classes.hpp"
#include "SDK/NavigationSystem_structs.hpp"
#include "SDK/NavigationSystem_classes.hpp"
#include "SDK/GSFileHelper_structs.hpp"
#include "SDK/GSFileHelper_classes.hpp"
#include "SDK/DownloadTookit_structs.hpp"
#include "SDK/DownloadTookit_classes.hpp"
#include "SDK/AnimationCore_classes.hpp"
#include "SDK/InputCore_classes.hpp"
#include "SDK/SlateCore_classes.hpp"
#include "SDK/Slate_classes.hpp"
#include "SDK/ImageWriteQueue_structs.hpp"
#include "SDK/ImageWriteQueue_classes.hpp"
#include "SDK/MaterialShaderQualitySettings_structs.hpp"
#include "SDK/MaterialShaderQualitySettings_classes.hpp"
#include "SDK/EyeTracker_structs.hpp"
#include "SDK/EyeTracker_classes.hpp"
#include "SDK/Renderer_structs.hpp"
#include "SDK/Renderer_classes.hpp"
#include "SDK/EngineSettings_structs.hpp"
#include "SDK/EngineSettings_classes.hpp"
#include "SDK/MRMesh_structs.hpp"
#include "SDK/MRMesh_classes.hpp"
#include "SDK/HeadMountedDisplay_structs.hpp"
#include "SDK/HeadMountedDisplay_classes.hpp"
#include "SDK/BuildPatchServices_structs.hpp"
#include "SDK/BuildPatchServices_classes.hpp"
#include "SDK/BP_SkillSelectHelper_classes.hpp"
#include "SDK/TypedElementFramework_structs.hpp"
#include "SDK/TypedElementFramework_classes.hpp"
#include "SDK/Foliage_structs.hpp"
#include "SDK/Foliage_classes.hpp"
#include "SDK/Landscape_structs.hpp"
#include "SDK/Landscape_classes.hpp"
#include "SDK/TimeManagement_structs.hpp"
#include "SDK/TimeManagement_classes.hpp"
#include "SDK/AnimGraphRuntime_structs.hpp"
#include "SDK/AnimGraphRuntime_classes.hpp"
#include "SDK/TypedElementRuntime_structs.hpp"
#include "SDK/TypedElementRuntime_classes.hpp"
#include "SDK/AudioLinkEngine_classes.hpp"
#include "SDK/AssetRegistry_structs.hpp"
#include "SDK/AssetRegistry_classes.hpp"
#include "SDK/MeshDescription_structs.hpp"
#include "SDK/MeshDescription_classes.hpp"
#include "SDK/StaticMeshDescription_structs.hpp"
#include "SDK/StaticMeshDescription_classes.hpp"
#include "SDK/AudioLinkCore_classes.hpp"
#include "SDK/MovieSceneCapture_structs.hpp"
#include "SDK/MovieSceneCapture_classes.hpp"
#include "SDK/MoviePlayer_classes.hpp"
#include "SDK/Overlay_structs.hpp"
#include "SDK/Overlay_classes.hpp"
#include "SDK/GameplayTasks_structs.hpp"
#include "SDK/GameplayTasks_classes.hpp"
#include "SDK/ChaosSolverEngine_structs.hpp"
#include "SDK/ChaosSolverEngine_classes.hpp"
#include "SDK/FieldSystemEngine_structs.hpp"
#include "SDK/FieldSystemEngine_classes.hpp"
#include "SDK/GeometryCollectionEngine_structs.hpp"
#include "SDK/GeometryCollectionEngine_classes.hpp"
#include "SDK/RigVM_classes.hpp"
#include "SDK/GSDataShare_classes.hpp"
#include "SDK/Landmass_structs.hpp"
#include "SDK/FullBodyIK_structs.hpp"
#include "SDK/ControlRigSpline_structs.hpp"
#include "SDK/CoreOnline_structs.hpp"
#include "SDK/MediaUtils_structs.hpp"
#include "SDK/BUI_LoadingV2_classes.hpp"
#include "SDK/VectorVM_structs.hpp"
#include "SDK/WwiseObjectUtils_structs.hpp"
#include "SDK/AnimationWarpingRuntime_structs.hpp"
#include "SDK/EngineMessages_structs.hpp"
#include "SDK/Serialization_structs.hpp"
#include "SDK/SessionMessages_structs.hpp"
#include "SDK/WebBrowser_structs.hpp"
#include "SDK/DmgTypeBP_Environmental_classes.hpp"
#include "SDK/Enum_RT_Quality_Preset_structs.hpp"
#include "SDK/BP_RTX_Parameter_Interface_classes.hpp"
#include "SDK/BUI_StartGameManaged_classes.hpp"
#include "SDK/BP_DispLibWorld_classes.hpp"
#include "SDK/Xbox_structs.hpp"
#include "SDK/VeryHigh_structs.hpp"
#include "SDK/RT_Parameters_structs.hpp"
#include "SDK/PS5_structs.hpp"
#include "SDK/Medium_structs.hpp"
#include "SDK/Low_structs.hpp"
#include "SDK/High_structs.hpp"
#include "SDK/Film_structs.hpp"
#include "SDK/BP_RT_Quality_Parameters_classes.hpp"
#include "SDK/BP_gs_rt_quality_classes.hpp"
#include "SDK/Transient_structs.hpp"
#include "SDK/GSE_ProtobufDB_structs.hpp"
#include "SDK/Protobuf_RunTime_structs.hpp"
#include "SDK/b1_Managed_structs.hpp"
#include "SDK/b1_Managed_classes.hpp"
#include "SDK/BP_UI_CommErrorTips_classes.hpp"
#include "SDK/BP_UI_ExceptionPanel_classes.hpp"
#include "SDK/DynamicSDFGenerator_classes.hpp"
#include "SDK/DynamicSDFGeneratorV2_classes.hpp"
#include "SDK/BP_Normal_RichTextZhuYi_DC_classes.hpp"
#include "SDK/BI_Loading_Item_Name_classes.hpp"
#include "SDK/BI_Loading_BossRushEnemy_classes.hpp"
#include "SDK/BP_player_wukong_precisedodge_bullet_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_q5_classes.hpp"
#include "SDK/BP_wukong_xiuhuazhen_bullet_classes.hpp"
#include "SDK/BP_wukong_bajiaoshan_tornado_bullet_big_classes.hpp"
#include "SDK/BP_player_wukong_precisedodge_bullet2_classes.hpp"
#include "SDK/BP_wukong_xiuhuazhen_bymj_bullet_classes.hpp"
#include "SDK/BP_player_wukong_fenshen_atktbuff_classes.hpp"
#include "SDK/BP_player_wukong_lava_classes.hpp"
#include "SDK/BI_InputOne_classes.hpp"
#include "SDK/ABP_Wukong_head_born_postprocess_structs.hpp"
#include "SDK/ABP_Wukong_head_born_postprocess_classes.hpp"
#include "SDK/BUI_StartGame_classes.hpp"
#include "SDK/BI_AgeTips_classes.hpp"
#include "SDK/BI_BattleEnd_Action_classes.hpp"
#include "SDK/BI_FirstStartBtn_classes.hpp"
#include "SDK/BI_StartGame_classes.hpp"
#include "SDK/BI_TextLoop_classes.hpp"
#include "SDK/BUI_AnimShowBlock_classes.hpp"
#include "SDK/ABP_wukong_head_lingzhi_structs.hpp"
#include "SDK/ABP_wukong_head_lingzhi_classes.hpp"
#include "SDK/CS_wukong_tttb_success_classes.hpp"
#include "SDK/Abp_ModularMeshCS_structs.hpp"
#include "SDK/Abp_ModularMeshCS_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_Panchui_classes.hpp"
#include "SDK/BP_player_wukong_atk_shougun_aoe_classes.hpp"
#include "SDK/BP_player_wukong_atk_shougun_axe_classes.hpp"
#include "SDK/BP_player_wukong_atk_shougun_lightning_classes.hpp"
#include "SDK/BP_player_wukong_anshenshu_festival_classes.hpp"
#include "SDK/BP_player_wukong_anshenshu_festival_fire_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_jiachongwang_01_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_jiachongwang_03_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_jiachongwang_02_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_jiachongwang_04_classes.hpp"
#include "SDK/BP_Player_Wukong_SanJianLiangRen_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_Feilonggun_classes.hpp"
#include "SDK/BP_Player_Wukong_SanJianLiangRen_02_classes.hpp"
#include "SDK/BP_Player_Wukong_Atk_yechawang_classes.hpp"
#include "SDK/BP_player_wukong_jxsq_heifeng_classes.hpp"
#include "SDK/BP_player_wukong_atk_sanshanguan_classes.hpp"
#include "SDK/BP_CameraActor_ForSeq_classes.hpp"
#include "SDK/BP_CameraCinematic_ForSeq_classes.hpp"
#include "SDK/BUI_B1_Root_V2_classes.hpp"
#include "SDK/BP_DropItem_Soul_Blue_classes.hpp"
#include "SDK/BP_DropItem_Soul_Purple_classes.hpp"
#include "SDK/BP_DropItem_Mo3_new_classes.hpp"
#include "SDK/EQG_simpleteleport_grid_classes.hpp"
#include "SDK/BP_DropItem_RedTides_classes.hpp"
#include "SDK/BP_DropItem_Mo124_classes.hpp"
#include "SDK/BP_DropItem_BaiYiSpear_classes.hpp"
#include "SDK/BP_DropItem_Longdage_classes.hpp"
#include "SDK/BP_DropItem_ShuangTouShu_classes.hpp"
#include "SDK/BP_DropItemActorBase_classes.hpp"
#include "SDK/GSE_FireSystem_classes.hpp"
#include "SDK/GSE_Fire_RTQuene_structs.hpp"
#include "SDK/BP_Player_Wukong_PiHuoZhao_01_classes.hpp"
#include "SDK/BP_CameraRail_ForSeq_classes.hpp"
#include "SDK/Abp_sts_dao_structs.hpp"
#include "SDK/Abp_sts_dao_classes.hpp"
#include "SDK/Abp_InteractiveActor_structs.hpp"
#include "SDK/Abp_InteractiveActor_classes.hpp"
#include "SDK/BP_StartupGameMode_V2_classes.hpp"
#include "SDK/BP_UI_Debug_RT_classes.hpp"
#include "SDK/MediaPlayerTest_UMG_classes.hpp"
#include "SDK/BP_UI_GMInfoUnit_classes.hpp"
#include "SDK/BP_UI_GMInfoPartInfo_classes.hpp"
#include "SDK/EQG_simpleteleport_donut_classes.hpp"
#include "SDK/EQC_PlayerContext_classes.hpp"
#include "SDK/BP_UI_Character_ShowGroup_classes.hpp"
#include "SDK/BP_UI_GMBtn_classes.hpp"
#include "SDK/BP_B1PlayerController_classes.hpp"
#include "SDK/BP_UI_GMSettingCharacterConfig_classes.hpp"
#include "SDK/BP_UI_GMSettingCheck_classes.hpp"
#include "SDK/BP_UI_GMSettingEditable_classes.hpp"
#include "SDK/BP_UI_GMSettingSlider_classes.hpp"
#include "SDK/BP_UI_GMSettingBase_classes.hpp"
#include "SDK/BP_UI_OP_Slider_classes.hpp"
#include "SDK/BP_UI_OP_Editable_classes.hpp"
#include "SDK/BP_UI_OP_Check_classes.hpp"
#include "SDK/BP_B1PlayerState_classes.hpp"
#include "SDK/BP_UI_GMInfo_Enemy_classes.hpp"
#include "SDK/BP_UI_GMInfo_Player_classes.hpp"
#include "SDK/Startup_V2_P_classes.hpp"
#include "SDK/BP_GMActor_classes.hpp"
#include "SDK/ImArtDev_classes.hpp"

View File

@@ -0,0 +1,909 @@
#pragma once
/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/
// Container implementations with iterators. See https://github.com/Fischsalat/UnrealContainers
#include <string>
#include <stdexcept>
#include <iostream>
#include "UtfN.hpp"
namespace UC
{
typedef int8_t int8;
typedef int16_t int16;
typedef int32_t int32;
typedef int64_t int64;
typedef uint8_t uint8;
typedef uint16_t uint16;
typedef uint32_t uint32;
typedef uint64_t uint64;
template<typename ArrayElementType>
class TArray;
template<typename SparseArrayElementType>
class TSparseArray;
template<typename SetElementType>
class TSet;
template<typename KeyElementType, typename ValueElementType>
class TMap;
template<typename KeyElementType, typename ValueElementType>
class TPair;
namespace Iterators
{
class FSetBitIterator;
template<typename ArrayType>
class TArrayIterator;
template<class ContainerType>
class TContainerIterator;
template<typename SparseArrayElementType>
using TSparseArrayIterator = TContainerIterator<TSparseArray<SparseArrayElementType>>;
template<typename SetElementType>
using TSetIterator = TContainerIterator<TSet<SetElementType>>;
template<typename KeyElementType, typename ValueElementType>
using TMapIterator = TContainerIterator<TMap<KeyElementType, ValueElementType>>;
}
namespace ContainerImpl
{
namespace HelperFunctions
{
inline uint32 FloorLog2(uint32 Value)
{
uint32 pos = 0;
if (Value >= 1 << 16) { Value >>= 16; pos += 16; }
if (Value >= 1 << 8) { Value >>= 8; pos += 8; }
if (Value >= 1 << 4) { Value >>= 4; pos += 4; }
if (Value >= 1 << 2) { Value >>= 2; pos += 2; }
if (Value >= 1 << 1) { pos += 1; }
return pos;
}
inline uint32 CountLeadingZeros(uint32 Value)
{
if (Value == 0)
return 32;
return 31 - FloorLog2(Value);
}
}
template<int32 Size, uint32 Alignment>
struct TAlignedBytes
{
alignas(Alignment) uint8 Pad[Size];
};
template<uint32 NumInlineElements>
class TInlineAllocator
{
public:
template<typename ElementType>
class ForElementType
{
private:
static constexpr int32 ElementSize = sizeof(ElementType);
static constexpr int32 ElementAlign = alignof(ElementType);
static constexpr int32 InlineDataSizeBytes = NumInlineElements * ElementSize;
private:
TAlignedBytes<ElementSize, ElementAlign> InlineData[NumInlineElements];
ElementType* SecondaryData;
public:
ForElementType()
: InlineData{ 0x0 }, SecondaryData(nullptr)
{
}
ForElementType(ForElementType&&) = default;
ForElementType(const ForElementType&) = default;
public:
ForElementType& operator=(ForElementType&&) = default;
ForElementType& operator=(const ForElementType&) = default;
public:
inline const ElementType* GetAllocation() const { return SecondaryData ? SecondaryData : reinterpret_cast<const ElementType*>(&InlineData); }
inline uint32 GetNumInlineBytes() const { return NumInlineElements; }
};
};
class FBitArray
{
protected:
static constexpr int32 NumBitsPerDWORD = 32;
static constexpr int32 NumBitsPerDWORDLogTwo = 5;
private:
TInlineAllocator<4>::ForElementType<int32> Data;
int32 NumBits;
int32 MaxBits;
public:
FBitArray()
: NumBits(0), MaxBits(Data.GetNumInlineBytes() * NumBitsPerDWORD)
{
}
FBitArray(const FBitArray&) = default;
FBitArray(FBitArray&&) = default;
public:
FBitArray& operator=(FBitArray&&) = default;
FBitArray& operator=(const FBitArray& Other) = default;
private:
inline void VerifyIndex(int32 Index) const { if (!IsValidIndex(Index)) throw std::out_of_range("Index was out of range!"); }
public:
inline int32 Num() const { return NumBits; }
inline int32 Max() const { return MaxBits; }
inline const uint32* GetData() const { return reinterpret_cast<const uint32*>(Data.GetAllocation()); }
inline bool IsValidIndex(int32 Index) const { return Index >= 0 && Index < NumBits; }
inline bool IsValid() const { return GetData() && NumBits > 0; }
public:
inline bool operator[](int32 Index) const { VerifyIndex(Index); return GetData()[Index / NumBitsPerDWORD] & (1 << (Index & (NumBitsPerDWORD - 1))); }
inline bool operator==(const FBitArray& Other) const { return NumBits == Other.NumBits && GetData() == Other.GetData(); }
inline bool operator!=(const FBitArray& Other) const { return NumBits != Other.NumBits || GetData() != Other.GetData(); }
public:
friend Iterators::FSetBitIterator begin(const FBitArray& Array);
friend Iterators::FSetBitIterator end (const FBitArray& Array);
};
template<typename SparseArrayType>
union TSparseArrayElementOrFreeListLink
{
SparseArrayType ElementData;
struct
{
int32 PrevFreeIndex;
int32 NextFreeIndex;
};
};
template<typename SetType>
class SetElement
{
private:
template<typename SetDataType>
friend class TSet;
private:
SetType Value;
int32 HashNextId;
int32 HashIndex;
};
}
template <typename KeyType, typename ValueType>
class TPair
{
public:
KeyType First;
ValueType Second;
public:
TPair(KeyType Key, ValueType Value)
: First(Key), Second(Value)
{
}
public:
inline KeyType& Key() { return First; }
inline const KeyType& Key() const { return First; }
inline ValueType& Value() { return Second; }
inline const ValueType& Value() const { return Second; }
};
template<typename ArrayElementType>
class TArray
{
private:
template<typename ArrayElementType>
friend class TAllocatedArray;
template<typename SparseArrayElementType>
friend class TSparseArray;
protected:
static constexpr uint64 ElementAlign = alignof(ArrayElementType);
static constexpr uint64 ElementSize = sizeof(ArrayElementType);
protected:
ArrayElementType* Data;
int32 NumElements;
int32 MaxElements;
public:
TArray()
: TArray(nullptr, 0, 0)
{
}
TArray(ArrayElementType* Data, int32 NumElements, int32 MaxElements)
: Data(Data), NumElements(NumElements), MaxElements(MaxElements)
{
}
TArray(const TArray&) = default;
TArray(TArray&&) = default;
public:
TArray& operator=(TArray&&) = default;
TArray& operator=(const TArray&) = default;
private:
inline int32 GetSlack() const { return MaxElements - NumElements; }
inline void VerifyIndex(int32 Index) const { if (!IsValidIndex(Index)) throw std::out_of_range("Index was out of range!"); }
inline ArrayElementType& GetUnsafe(int32 Index) { return Data[Index]; }
inline const ArrayElementType& GetUnsafe(int32 Index) const { return Data[Index]; }
public:
/* Adds to the array if there is still space for one more element */
inline bool Add(const ArrayElementType& Element)
{
if (GetSlack() <= 0)
return false;
Data[NumElements] = Element;
NumElements++;
return true;
}
inline bool Remove(int32 Index)
{
if (!IsValidIndex(Index))
return false;
NumElements--;
for (int i = Index; i < NumElements; i++)
{
/* NumElements was decremented, acessing i + 1 is safe */
Data[i] = Data[i + 1];
}
return true;
}
inline void Clear()
{
NumElements = 0;
if (Data)
memset(Data, 0, NumElements * ElementSize);
}
public:
inline int32 Num() const { return NumElements; }
inline int32 Max() const { return MaxElements; }
inline const ArrayElementType* GetDataPtr() const { return Data; }
inline bool IsValidIndex(int32 Index) const { return Data && Index >= 0 && Index < NumElements; }
inline bool IsValid() const { return Data && NumElements > 0 && MaxElements >= NumElements; }
public:
inline ArrayElementType& operator[](int32 Index) { VerifyIndex(Index); return Data[Index]; }
inline const ArrayElementType& operator[](int32 Index) const { VerifyIndex(Index); return Data[Index]; }
inline bool operator==(const TArray<ArrayElementType>& Other) const { return Data == Other.Data; }
inline bool operator!=(const TArray<ArrayElementType>& Other) const { return Data != Other.Data; }
inline explicit operator bool() const { return IsValid(); };
public:
template<typename T> friend Iterators::TArrayIterator<T> begin(const TArray& Array);
template<typename T> friend Iterators::TArrayIterator<T> end (const TArray& Array);
};
class FString : public TArray<wchar_t>
{
public:
friend std::ostream& operator<<(std::ostream& Stream, const UC::FString& Str) { return Stream << Str.ToString(); }
public:
using TArray::TArray;
FString(const wchar_t* Str)
{
const uint32 NullTerminatedLength = static_cast<uint32>(wcslen(Str) + 0x1);
Data = const_cast<wchar_t*>(Str);
NumElements = NullTerminatedLength;
MaxElements = NullTerminatedLength;
}
FString(wchar_t* Str, int32 Num, int32 Max)
{
Data = Str;
NumElements = Num;
MaxElements = Max;
}
public:
inline std::string ToString() const
{
if (*this)
{
return UtfN::Utf16StringToUtf8String<std::string>(Data, NumElements - 1); // Exclude null-terminator
}
return "";
}
inline std::wstring ToWString() const
{
if (*this)
return std::wstring(Data);
return L"";
}
public:
inline wchar_t* CStr() { return Data; }
inline const wchar_t* CStr() const { return Data; }
public:
inline bool operator==(const FString& Other) const { return Other ? NumElements == Other.NumElements && wcscmp(Data, Other.Data) == 0 : false; }
inline bool operator!=(const FString& Other) const { return Other ? NumElements != Other.NumElements || wcscmp(Data, Other.Data) != 0 : true; }
};
// Utf8String that assumes C-APIs (strlen, strcmp) behaviour works for char8_t like Ansi strings, execept it's counting/comparing bytes not characters.
class FUtf8String : public TArray<char8_t>
{
public:
friend std::ostream& operator<<(std::ostream& Stream, const UC::FUtf8String& Str) { return Stream << Str.ToString(); }
private:
inline const char* GetDataAsConstCharPtr() const
{
return reinterpret_cast<const char*>(Data);
}
public:
using TArray::TArray;
FUtf8String(const char8_t* Str)
{
Data = const_cast<char8_t*>(Str);
const uint32 NullTerminatedLength = static_cast<uint32>(strlen(GetDataAsConstCharPtr()) + 0x1);
NumElements = NullTerminatedLength;
MaxElements = NullTerminatedLength;
}
FUtf8String(char8_t* Str, int32 Num, int32 Max)
{
Data = Str;
NumElements = Num;
MaxElements = Max;
}
public:
inline std::string ToString() const
{
if (*this)
{
return std::string(GetDataAsConstCharPtr(), NumElements - 1); // Exclude null-terminator
}
return "";
}
inline std::wstring ToWString() const
{
if (*this)
return UtfN::StringToWString<std::string>(ToString()); // Exclude null-terminator
return L"";
}
public:
inline char8_t* CStr() { return Data; }
inline const char8_t* CStr() const { return Data; }
public:
inline bool operator==(const FUtf8String& Other) const { return Other ? NumElements == Other.NumElements && strcmp(GetDataAsConstCharPtr(), Other.GetDataAsConstCharPtr()) == 0 : false; }
inline bool operator!=(const FUtf8String& Other) const { return Other ? NumElements != Other.NumElements || strcmp(GetDataAsConstCharPtr(), Other.GetDataAsConstCharPtr()) != 0 : true; }
};
class FAnsiString : public TArray<char>
{
public:
friend std::ostream& operator<<(std::ostream& Stream, const UC::FAnsiString& Str) { return Stream << Str.ToString(); }
public:
using TArray::TArray;
FAnsiString(const char* Str)
{
const uint32 NullTerminatedLength = static_cast<uint32>(strlen(Str) + 0x1);
Data = const_cast<char*>(Str);
NumElements = NullTerminatedLength;
MaxElements = NullTerminatedLength;
}
FAnsiString(char* Str, int32 Num, int32 Max)
{
Data = Str;
NumElements = Num;
MaxElements = Max;
}
public:
inline std::string ToString() const
{
if (*this)
{
return std::string(Data, NumElements - 1); // Exclude null-terminator
}
return "";
}
inline std::wstring ToWString() const
{
if (*this)
return UtfN::StringToWString<std::string>(ToString()); // Exclude null-terminator
return L"";
}
public:
inline char* CStr() { return Data; }
inline const char* CStr() const { return Data; }
public:
inline bool operator==(const FAnsiString& Other) const { return Other ? NumElements == Other.NumElements && strcmp(Data, Other.Data) == 0 : false; }
inline bool operator!=(const FAnsiString& Other) const { return Other ? NumElements != Other.NumElements || strcmp(Data, Other.Data) != 0 : true; }
};
/*
* Class to allow construction of a TArray, that uses c-style standard-library memory allocation.
*
* Useful for calling functions that expect a buffer of a certain size and do not reallocate that buffer.
* This avoids leaking memory, if the array would otherwise be allocated by the engine, and couldn't be freed without FMemory-functions.
*/
template<typename ArrayElementType>
class TAllocatedArray : public TArray<ArrayElementType>
{
public:
TAllocatedArray() = delete;
public:
TAllocatedArray(int32 Size)
{
this->Data = static_cast<ArrayElementType*>(malloc(Size * sizeof(ArrayElementType)));
this->NumElements = 0x0;
this->MaxElements = Size;
}
~TAllocatedArray()
{
if (this->Data)
free(this->Data);
this->NumElements = 0x0;
this->MaxElements = 0x0;
}
public:
inline operator TArray<ArrayElementType>() { return *reinterpret_cast< TArray<ArrayElementType>*>(this); }
inline operator const TArray<ArrayElementType>() const { return *reinterpret_cast<const TArray<ArrayElementType>*>(this); }
};
/*
* Class to allow construction of an FString, that uses c-style standard-library memory allocation.
*
* Useful for calling functions that expect a buffer of a certain size and do not reallocate that buffer.
* This avoids leaking memory, if the array would otherwise be allocated by the engine, and couldn't be freed without FMemory-functions.
*/
class FAllocatedString : public FString
{
public:
FAllocatedString() = delete;
public:
FAllocatedString(int32 Size)
{
Data = static_cast<wchar_t*>(malloc(Size * sizeof(wchar_t)));
NumElements = 0x0;
MaxElements = Size;
}
~FAllocatedString()
{
if (Data)
free(Data);
NumElements = 0x0;
MaxElements = 0x0;
}
public:
inline operator FString() { return *reinterpret_cast< FString*>(this); }
inline operator const FString() const { return *reinterpret_cast<const FString*>(this); }
};
template<typename SparseArrayElementType>
class TSparseArray
{
private:
static constexpr uint32 ElementAlign = alignof(SparseArrayElementType);
static constexpr uint32 ElementSize = sizeof(SparseArrayElementType);
private:
using FElementOrFreeListLink = ContainerImpl::TSparseArrayElementOrFreeListLink<ContainerImpl::TAlignedBytes<ElementSize, ElementAlign>>;
private:
TArray<FElementOrFreeListLink> Data;
ContainerImpl::FBitArray AllocationFlags;
int32 FirstFreeIndex;
int32 NumFreeIndices;
public:
TSparseArray()
: FirstFreeIndex(-1), NumFreeIndices(0)
{
}
TSparseArray(TSparseArray&&) = default;
TSparseArray(const TSparseArray&) = default;
public:
TSparseArray& operator=(TSparseArray&&) = default;
TSparseArray& operator=(const TSparseArray&) = default;
private:
inline void VerifyIndex(int32 Index) const { if (!IsValidIndex(Index)) throw std::out_of_range("Index was out of range!"); }
public:
inline int32 NumAllocated() const { return Data.Num(); }
inline int32 Num() const { return NumAllocated() - NumFreeIndices; }
inline int32 Max() const { return Data.Max(); }
inline bool IsValidIndex(int32 Index) const { return Data.IsValidIndex(Index) && AllocationFlags[Index]; }
inline bool IsValid() const { return Data.IsValid() && AllocationFlags.IsValid(); }
public:
const ContainerImpl::FBitArray& GetAllocationFlags() const { return AllocationFlags; }
public:
inline SparseArrayElementType& operator[](int32 Index) { VerifyIndex(Index); return *reinterpret_cast<SparseArrayElementType*>(&Data.GetUnsafe(Index).ElementData); }
inline const SparseArrayElementType& operator[](int32 Index) const { VerifyIndex(Index); return *reinterpret_cast<SparseArrayElementType*>(&Data.GetUnsafe(Index).ElementData); }
inline bool operator==(const TSparseArray<SparseArrayElementType>& Other) const { return Data == Other.Data; }
inline bool operator!=(const TSparseArray<SparseArrayElementType>& Other) const { return Data != Other.Data; }
public:
template<typename T> friend Iterators::TSparseArrayIterator<T> begin(const TSparseArray& Array);
template<typename T> friend Iterators::TSparseArrayIterator<T> end (const TSparseArray& Array);
};
template<typename SetElementType>
class TSet
{
private:
static constexpr uint32 ElementAlign = alignof(SetElementType);
static constexpr uint32 ElementSize = sizeof(SetElementType);
private:
using SetDataType = ContainerImpl::SetElement<SetElementType>;
using HashType = ContainerImpl::TInlineAllocator<1>::ForElementType<int32>;
private:
TSparseArray<SetDataType> Elements;
HashType Hash;
int32 HashSize;
public:
TSet()
: HashSize(0)
{
}
TSet(TSet&&) = default;
TSet(const TSet&) = default;
public:
TSet& operator=(TSet&&) = default;
TSet& operator=(const TSet&) = default;
private:
inline void VerifyIndex(int32 Index) const { if (!IsValidIndex(Index)) throw std::out_of_range("Index was out of range!"); }
public:
inline int32 NumAllocated() const { return Elements.NumAllocated(); }
inline int32 Num() const { return Elements.Num(); }
inline int32 Max() const { return Elements.Max(); }
inline bool IsValidIndex(int32 Index) const { return Elements.IsValidIndex(Index); }
inline bool IsValid() const { return Elements.IsValid(); }
public:
const ContainerImpl::FBitArray& GetAllocationFlags() const { return Elements.GetAllocationFlags(); }
public:
inline SetElementType& operator[] (int32 Index) { return Elements[Index].Value; }
inline const SetElementType& operator[] (int32 Index) const { return Elements[Index].Value; }
inline bool operator==(const TSet<SetElementType>& Other) const { return Elements == Other.Elements; }
inline bool operator!=(const TSet<SetElementType>& Other) const { return Elements != Other.Elements; }
public:
template<typename T> friend Iterators::TSetIterator<T> begin(const TSet& Set);
template<typename T> friend Iterators::TSetIterator<T> end (const TSet& Set);
};
template<typename KeyElementType, typename ValueElementType>
class TMap
{
public:
using ElementType = TPair<KeyElementType, ValueElementType>;
private:
TSet<ElementType> Elements;
private:
inline void VerifyIndex(int32 Index) const { if (!IsValidIndex(Index)) throw std::out_of_range("Index was out of range!"); }
public:
inline int32 NumAllocated() const { return Elements.NumAllocated(); }
inline int32 Num() const { return Elements.Num(); }
inline int32 Max() const { return Elements.Max(); }
inline bool IsValidIndex(int32 Index) const { return Elements.IsValidIndex(Index); }
inline bool IsValid() const { return Elements.IsValid(); }
public:
const ContainerImpl::FBitArray& GetAllocationFlags() const { return Elements.GetAllocationFlags(); }
public:
inline decltype(auto) Find(const KeyElementType& Key, bool(*Equals)(const KeyElementType& LeftKey, const KeyElementType& RightKey))
{
for (auto It = begin(*this); It != end(*this); ++It)
{
if (Equals(It->Key(), Key))
return It;
}
return end(*this);
}
public:
inline ElementType& operator[] (int32 Index) { return Elements[Index]; }
inline const ElementType& operator[] (int32 Index) const { return Elements[Index]; }
inline bool operator==(const TMap<KeyElementType, ValueElementType>& Other) const { return Elements == Other.Elements; }
inline bool operator!=(const TMap<KeyElementType, ValueElementType>& Other) const { return Elements != Other.Elements; }
public:
template<typename KeyType, typename ValueType> friend Iterators::TMapIterator<KeyType, ValueType> begin(const TMap& Map);
template<typename KeyType, typename ValueType> friend Iterators::TMapIterator<KeyType, ValueType> end (const TMap& Map);
};
namespace Iterators
{
class FRelativeBitReference
{
protected:
static constexpr int32 NumBitsPerDWORD = 32;
static constexpr int32 NumBitsPerDWORDLogTwo = 5;
public:
inline explicit FRelativeBitReference(int32 BitIndex)
: WordIndex(BitIndex >> NumBitsPerDWORDLogTwo)
, Mask(1 << (BitIndex & (NumBitsPerDWORD - 1)))
{
}
int32 WordIndex;
uint32 Mask;
};
class FSetBitIterator : public FRelativeBitReference
{
private:
const ContainerImpl::FBitArray& Array;
uint32 UnvisitedBitMask;
int32 CurrentBitIndex;
int32 BaseBitIndex;
public:
explicit FSetBitIterator(const ContainerImpl::FBitArray& InArray, int32 StartIndex = 0)
: FRelativeBitReference(StartIndex)
, Array(InArray)
, UnvisitedBitMask((~0U) << (StartIndex & (NumBitsPerDWORD - 1)))
, CurrentBitIndex(StartIndex)
, BaseBitIndex(StartIndex & ~(NumBitsPerDWORD - 1))
{
if (StartIndex != Array.Num())
FindFirstSetBit();
}
public:
inline FSetBitIterator& operator++()
{
UnvisitedBitMask &= ~this->Mask;
FindFirstSetBit();
return *this;
}
inline explicit operator bool() const { return CurrentBitIndex < Array.Num(); }
inline bool operator==(const FSetBitIterator& Rhs) const { return CurrentBitIndex == Rhs.CurrentBitIndex && &Array == &Rhs.Array; }
inline bool operator!=(const FSetBitIterator& Rhs) const { return CurrentBitIndex != Rhs.CurrentBitIndex || &Array != &Rhs.Array; }
public:
inline int32 GetIndex() { return CurrentBitIndex; }
void FindFirstSetBit()
{
const uint32* ArrayData = Array.GetData();
const int32 ArrayNum = Array.Num();
const int32 LastWordIndex = (ArrayNum - 1) / NumBitsPerDWORD;
uint32 RemainingBitMask = ArrayData[this->WordIndex] & UnvisitedBitMask;
while (!RemainingBitMask)
{
++this->WordIndex;
BaseBitIndex += NumBitsPerDWORD;
if (this->WordIndex > LastWordIndex)
{
CurrentBitIndex = ArrayNum;
return;
}
RemainingBitMask = ArrayData[this->WordIndex];
UnvisitedBitMask = ~0;
}
const uint32 NewRemainingBitMask = RemainingBitMask & (RemainingBitMask - 1);
this->Mask = NewRemainingBitMask ^ RemainingBitMask;
CurrentBitIndex = BaseBitIndex + NumBitsPerDWORD - 1 - ContainerImpl::HelperFunctions::CountLeadingZeros(this->Mask);
if (CurrentBitIndex > ArrayNum)
CurrentBitIndex = ArrayNum;
}
};
template<typename ArrayType>
class TArrayIterator
{
private:
TArray<ArrayType>& IteratedArray;
int32 Index;
public:
TArrayIterator(const TArray<ArrayType>& Array, int32 StartIndex = 0x0)
: IteratedArray(const_cast<TArray<ArrayType>&>(Array)), Index(StartIndex)
{
}
public:
inline int32 GetIndex() { return Index; }
inline int32 IsValid() { return IteratedArray.IsValidIndex(GetIndex()); }
public:
inline TArrayIterator& operator++() { ++Index; return *this; }
inline TArrayIterator& operator--() { --Index; return *this; }
inline ArrayType& operator*() { return IteratedArray[GetIndex()]; }
inline const ArrayType& operator*() const { return IteratedArray[GetIndex()]; }
inline ArrayType* operator->() { return &IteratedArray[GetIndex()]; }
inline const ArrayType* operator->() const { return &IteratedArray[GetIndex()]; }
inline bool operator==(const TArrayIterator& Other) const { return &IteratedArray == &Other.IteratedArray && Index == Other.Index; }
inline bool operator!=(const TArrayIterator& Other) const { return &IteratedArray != &Other.IteratedArray || Index != Other.Index; }
};
template<class ContainerType>
class TContainerIterator
{
private:
ContainerType& IteratedContainer;
FSetBitIterator BitIterator;
public:
TContainerIterator(const ContainerType& Container, const ContainerImpl::FBitArray& BitArray, int32 StartIndex = 0x0)
: IteratedContainer(const_cast<ContainerType&>(Container)), BitIterator(BitArray, StartIndex)
{
}
public:
inline int32 GetIndex() { return BitIterator.GetIndex(); }
inline int32 IsValid() { return IteratedContainer.IsValidIndex(GetIndex()); }
public:
inline TContainerIterator& operator++() { ++BitIterator; return *this; }
inline TContainerIterator& operator--() { --BitIterator; return *this; }
inline auto& operator*() { return IteratedContainer[GetIndex()]; }
inline const auto& operator*() const { return IteratedContainer[GetIndex()]; }
inline auto* operator->() { return &IteratedContainer[GetIndex()]; }
inline const auto* operator->() const { return &IteratedContainer[GetIndex()]; }
inline bool operator==(const TContainerIterator& Other) const { return &IteratedContainer == &Other.IteratedContainer && BitIterator == Other.BitIterator; }
inline bool operator!=(const TContainerIterator& Other) const { return &IteratedContainer != &Other.IteratedContainer || BitIterator != Other.BitIterator; }
};
}
inline Iterators::FSetBitIterator begin(const ContainerImpl::FBitArray& Array) { return Iterators::FSetBitIterator(Array, 0); }
inline Iterators::FSetBitIterator end (const ContainerImpl::FBitArray& Array) { return Iterators::FSetBitIterator(Array, Array.Num()); }
template<typename T> inline Iterators::TArrayIterator<T> begin(const TArray<T>& Array) { return Iterators::TArrayIterator<T>(Array, 0); }
template<typename T> inline Iterators::TArrayIterator<T> end (const TArray<T>& Array) { return Iterators::TArrayIterator<T>(Array, Array.Num()); }
template<typename T> inline Iterators::TSparseArrayIterator<T> begin(const TSparseArray<T>& Array) { return Iterators::TSparseArrayIterator<T>(Array, Array.GetAllocationFlags(), 0); }
template<typename T> inline Iterators::TSparseArrayIterator<T> end (const TSparseArray<T>& Array) { return Iterators::TSparseArrayIterator<T>(Array, Array.GetAllocationFlags(), Array.NumAllocated()); }
template<typename T> inline Iterators::TSetIterator<T> begin(const TSet<T>& Set) { return Iterators::TSetIterator<T>(Set, Set.GetAllocationFlags(), 0); }
template<typename T> inline Iterators::TSetIterator<T> end (const TSet<T>& Set) { return Iterators::TSetIterator<T>(Set, Set.GetAllocationFlags(), Set.NumAllocated()); }
template<typename T0, typename T1> inline Iterators::TMapIterator<T0, T1> begin(const TMap<T0, T1>& Map) { return Iterators::TMapIterator<T0, T1>(Map, Map.GetAllocationFlags(), 0); }
template<typename T0, typename T1> inline Iterators::TMapIterator<T0, T1> end (const TMap<T0, T1>& Map) { return Iterators::TMapIterator<T0, T1>(Map, Map.GetAllocationFlags(), Map.NumAllocated()); }
#if defined(_WIN64)
static_assert(sizeof(TArray<int32>) == 0x10, "TArray has a wrong size!");
static_assert(sizeof(TSet<int32>) == 0x50, "TSet has a wrong size!");
static_assert(sizeof(TMap<int32, int32>) == 0x50, "TMap has a wrong size!");
#elif defined(_WIN32)
static_assert(sizeof(TArray<int32>) == 0x0C, "TArray has a wrong size!");
static_assert(sizeof(TSet<int32>) == 0x3C, "TSet has a wrong size!");
static_assert(sizeof(TMap<int32, int32>) == 0x3C, "TMap has a wrong size!");
#endif
}

1613
BlackMythWukong/UtfN.hpp Normal file

File diff suppressed because it is too large Load Diff