diff --git a/CPedAppearanceDataNode.hpp b/CPedAppearanceDataNode.hpp new file mode 100644 index 0000000..2e93eb2 --- /dev/null +++ b/CPedAppearanceDataNode.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "CPedComponents.hpp" + +#include + +#pragma pack(push, 4) +class CPedAppearanceDataNode +{ +public: + char pad_0x0[192]; //0x0000 + uint32_t unk_0xC0[6]; //0x00C0 + uint32_t unk_0xD8[6]; //0x00D8 + class CPedComponents components; //0x00F0 + char pad_0x1B8[8]; //0x01B8 + uint32_t unk_0x1C0; //0x01C0 + uint8_t unk_0x1C4; //0x01C4 + uint8_t unk_0x1C5; //0x01C5 + char pad_0x1C6[2]; //0x01C6 + uint32_t unk_0x1C8; //0x01C8 + uint32_t unk_0x1CC; //0x01CC + uint32_t unk_0x1D0; //0x01D0 + bool unk_0x1D4; //0x01D4 + bool unk_0x1D5; //0x01D5 + bool unk_0x1D6; //0x01D6 + uint8_t unk_0x1D7; //0x01D7 + uint16_t unk_0x1D8; //0x01D8 + uint16_t unk_0x1DA; //0x01DA + uint16_t unk_0x1DC; //0x01DC + bool unk_0x1DE; //0x01DE + bool unk_0x1DF; //0x01DF + bool unk_0x1E0; //0x01E0 + uint8_t unk_0x1E1; //0x01E1 +}; //Size: 0x01E4 +static_assert(sizeof(CPedAppearanceDataNode) == 0x1E4); +#pragma(pop) \ No newline at end of file diff --git a/CPedComponents.hpp b/CPedComponents.hpp new file mode 100644 index 0000000..0c640d2 --- /dev/null +++ b/CPedComponents.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include + +#pragma pack(push, 4) +class CPedComponents +{ +public: + uint32_t m_component_bitset; //0x0000 + char pad_0x4[4]; //0x0004 + uint32_t unk_0x8[12]; //0x0008 + uint32_t m_drawables[12]; //0x0038 + uint32_t m_textures[12]; //0x0068 + uint32_t m_palettes[12]; //0x0098 +}; //Size: 0x00C8 +static_assert(sizeof(CPedComponents) == 0xC8); +#pragma pack(pop) \ No newline at end of file diff --git a/CPlayerAppearanceDataNode.hpp b/CPlayerAppearanceDataNode.hpp new file mode 100644 index 0000000..42d0c3a --- /dev/null +++ b/CPlayerAppearanceDataNode.hpp @@ -0,0 +1,96 @@ +#pragma once + +#include "CPedComponents.hpp" + +#include + +#pragma pack(push, 4) +class CPlayerAppearanceDataNode +{ +public: + char pad_0x0[192]; //0x00B0 + uint32_t unk_0xC0[52]; //0x00C0 + class CPedComponents components; //0x0190 + char pad_0x258[8]; //0x0258 + uint32_t unk_0x260[6]; //0x0260 + uint32_t unk_0x278[6]; //0x0278 + char pad_0x290[8]; //0x0290 + float unk_0x298; //0x0298 + uint8_t unk_0x29C; //0x029C + uint8_t unk_0x29D; //0x029D + char pad_0x29E[26]; //0x029E + float m_shape_mix; //0x02B8 + float m_skin_mix; //0x02BC + float m_third_mix; //0x02C0 + float unk_0x2C4; //0x02C4 + float unk_0x2C8[13]; //0x02C8 + float unk_0x2FC[13]; //0x02FC + float unk_0x330[20]; //0x0330 + uint8_t unk_0x380[13]; //0x0380 + uint8_t unk_0x38D[13]; //0x038D + uint8_t unk_0x39A[13]; //0x039A + uint8_t m_shape_first; //0x03A7 + uint8_t m_shape_second; //0x03A8 + uint8_t m_shape_third; //0x03A9 + uint8_t m_skin_first; //0x03AA + uint8_t m_skin_second; //0x03AB + uint8_t m_skin_third; //0x03AC + uint8_t unk_0x3AD[13]; //0x03AD + uint8_t unk_0x3BA[11]; //0x03BA + int16_t unk_0x3C6; //0x03C6 + uint8_t unk_0x3C8; //0x03C8 + uint8_t unk_0x3C9; //0x03C9 + char pad_0x3CA[1]; //0x03CA + bool unk_0x3CB; //0x03CB + bool unk_0x3CC; //0x03CC + char pad_0x3CD[3]; //0x03CD + uint32_t unk_0x3D0; //0x03D0 + uint32_t unk_0x3D4; //0x03D4 + uint32_t unk_0x3D8; //0x03D8 + uint32_t unk_0x3DC; //0x03DC + uint32_t unk_0x3E0; //0x03E0 + float unk_0x3E4; //0x03E4 + float unk_0x3E8; //0x03E8 + float unk_0x3EC; //0x03EC + uint32_t unk_0x3F0; //0x03F0 + uint32_t unk_0x3F4; //0x03F4 + uint32_t unk_0x3F8; //0x03F8 + uint32_t unk_0x3FC; //0x03FC + uint32_t unk_0x400; //0x0400 + bool unk_0x404; //0x0404 + bool unk_0x405; //0x0405 + bool unk_0x406; //0x0406 + bool unk_0x407; //0x0407 + bool unk_0x408; //0x0408 + bool unk_0x409; //0x0409 + uint32_t unk_0x40C; //0x040C + uint32_t m_model_hash; //0x0410 + uint32_t m_voice_hash; //0x0414 + uint32_t m_phone_mode; //0x0418 + uint32_t unk_0x41C; //0x041C + uint8_t m_parachute_tint_index; //0x0420 + uint8_t m_parachute_pack_tint_index; //0x0421 + uint16_t m_respawn_object; //0x0422 + bool m_has_head_blend_data; //0x0424 + bool unk_0x425; //0x0425 + bool m_has_respawn_object; //0x0426 + char pad_0x427; //0x0427 + uint32_t unk_0x428_clip_maybe; //0x0428 + uint32_t unk_0x42C; //0x042C + uint32_t unk_0x430; //0x0430 + bool unk_0x434; //0x0434 + bool unk_0x435; //0x0435 + bool unk_0x436; //0x0436 + uint8_t unk_0x437; //0x0437 + uint16_t unk_0x438; //0x0438 + uint16_t unk_0x43A; //0x043A + uint16_t unk_0x43C; //0x043C + bool unk_0x43E; //0x043E + bool unk_0x43F; //0x043F + bool unk_0x440; //0x0440 + uint8_t unk_0x441; //0x0441 + uint32_t unk_0x442; //0x0442 + uint32_t unk_0x446; //0x0446 +}; //Size: 0x044C +static_assert(sizeof(CPlayerAppearanceDataNode) == 0x44C); +#pragma pack(pop)