feat(DataNodes): Reorganize and add data nodes. (#22)

This commit is contained in:
Reece Watson 2022-08-13 04:24:30 -04:00 committed by GitHub
parent 423658872b
commit cd201dff22
27 changed files with 272 additions and 33 deletions

View File

@ -0,0 +1,10 @@
#pragma once
class CAutomobileCreationDataNode
{
public:
char pad_0000[192]; //0x0000
bool m_all_doors_closed; //0x00C0
bool m_door_closed[10]; //0x00C1
}; //Size: 0x00CB
static_assert(sizeof(CAutomobileCreationDataNode) == 0xCB);

View File

@ -0,0 +1,19 @@
#pragma once
#include <cstdint>
#include "rage/vector.hpp"
#pragma pack(push, 4)
class CDoorCreationDataNode
{
public:
char pad_0000[192]; //0x0000
uint32_t m_model; //0x00C0
char pad_00C4[12]; //0x00C4
rage::fvector3 m_pos; //0x00D0
char pad_00DC[12]; //0x00DC
bool m_is_script_door; //0x00E8
bool m_player_wants_control; //0x00E9
}; //Size: 0x00EC
static_assert(sizeof(CDoorCreationDataNode) == 0xEC);
#pragma pack(pop)

View File

@ -0,0 +1,19 @@
#pragma once
#include <cstdint>
#pragma pack(push, 4)
class CDynamicEntityGameStateDataNode
{
public:
char pad_0000[192]; // 0x0000
uint32_t m_interior_index; // 0x00C0
bool unk_00C4; // 0x00C4
bool unk_00C5; // 0x00C5
uint32_t m_decor_count; // 0x00C8
uint32_t m_decor_type[12]; // 0x00CC
uint32_t m_decor_value[12]; // 0x00FC
uint32_t m_decor_name_hash[12]; // 0x012C
}; //Size: 0x15C
static_assert(sizeof(CDynamicEntityGameStateDataNode) == 0x15C);
#pragma pack(pop)

View File

@ -0,0 +1,11 @@
#pragma once
#pragma pack(push, 4)
class CEntityOrientationDataNode
{
public:
char pad_0x0[192]; //0x0000
float m_eulers[11]; //0x00C0
}; //Size: 0x00EC
static_assert(sizeof(CEntityOrientationDataNode) == 0xEC);
#pragma pack(pop)

View File

@ -0,0 +1,10 @@
#pragma once
struct CEntityScriptGameStateDataNode
{
char pad_0x0[192]; //0x0000
bool m_visible; //0x00C0
bool m_uses_collision; //0x00C1
bool m_fixed; //0x00C2
}; //Size: 0x00C3
static_assert(sizeof(CEntityScriptGameStateDataNode) == 0xC3);

View File

@ -1,20 +1,16 @@
#pragma once
#include <cstdint>
#include "vector.hpp"
#pragma pack(push,4)
class CPedAttachDataNode
{
public:
char pad_0000[192]; //0x0000
float m_offset_x; //0x00C0
float m_offset_y; //0x00C4
float m_offset_z; //0x00C8
rage::fvector3 m_offset; //0x00C0
char pad_00CC[4]; //0x00CC
float m_orientation_x; //0x00D0
float m_orientation_y; //0x00D4
float m_orientation_z; //0x00D8
float m_orientation_w; //0x00DC
rage::fvector4 m_orientation; //0x00D0
uint16_t m_attached_to; //0x00E0
uint16_t m_attachment_bone; //0x00E2
uint32_t m_attachment_flags; //0x00E4

View File

@ -0,0 +1,9 @@
#pragma once
class CPedScriptCreationDataNode
{
public:
char pad_0x0[192]; //0x0000
bool m_stay_in_car_when_jacked; //0x00C0
}; //Size: 0x00C1
static_assert(sizeof(CPedScriptCreationDataNode) == 0xC1);

View File

@ -0,0 +1,15 @@
#pragma once
#include <cstdint>
#pragma pack(push, 4)
class CPhysicalAngVelocityDataNode
{
public:
char pad_0000[192]; //0x0000
int32_t m_ang_velocity_x; //0x00C0 Divide by 16.
int32_t m_ang_velocity_y; //0x00C4 Divide by 16.
int32_t m_ang_velocity_z; //0x00C8 Divide by 16.
}; // 0x00CC
static_assert(sizeof(CPhysicalAngVelocityDataNode) == 0xCC);
#pragma pack(pop);

View File

@ -1,8 +1,9 @@
#pragma once
#include <cstdint>
#include "vector.hpp"
#pragma pack(push,2)
#pragma pack(push,4)
class CPhysicalAttachDataNode
{
public:
@ -11,17 +12,10 @@ public:
bool unk_00C1; //0x00C1
uint16_t m_attached_to; //0x00C2
char pad_00C4[12]; //0x00C4
float m_offset_x; //0x00D0
float m_offset_y; //0x00D4
float m_offset_z; //0x00D8
rage::fvector3 m_offset; //0x00D0
char pad_00DC[4]; //0x00DC
float m_orientation_x; //0x00E0
float m_orientation_y; //0x00E4
float m_orientation_z; //0x00E8
float m_orientation_w; //0x00EC
float m_parent_offset_x; //0x00F0
float m_parent_offset_y; //0x00F4
float m_parent_offset_z; //0x00F8
rage::fvector4 m_orientation; //0x00E0
rage::fvector3 m_parent_offset; //0x00F0
char pad_00FC[4]; //0x00FC
uint16_t m_other_attach_bone; //0x0100
uint16_t m_attach_bone; //0x0102

View File

@ -0,0 +1,18 @@
#pragma once
#include <cstdint>
#pragma pack(push, 8)
struct CPhysicalHealthDataNode
{
char pad_0000[192]; //0x0000
bool unk_00C0; //0x00C0
bool m_has_max_health_changed; //0x00C1
uint32_t m_max_health; //0x00C4
uint32_t m_current_health; //0x00C8
uint16_t m_weapon_damage_entity; //0x00CC
uint32_t m_weapon_damage_hash; //0x00D0
uint64_t unk_00D8; //0x00D8
};
static_assert(sizeof(CPhysicalHealthDataNode) == 0xE0);
#pragma pack(pop)

View File

@ -0,0 +1,15 @@
#pragma once
#include <cstdint>
#pragma pack(push, 4)
class CPhysicalVelocityDataNode
{
public:
char pad_0000[192]; //0x0000
int32_t m_velocity_x; //0x00C0 Divide by 16.
int32_t m_velocity_y; //0x00C4 Divide by 16.
int32_t m_velocity_z; //0x00C8 Divide by 16.
}; // 0x00CC
static_assert(sizeof(CPhysicalVelocityDataNode) == 0xCC);
#pragma pack(pop)

View File

@ -0,0 +1,30 @@
#pragma once
#include <cstdint>
#pragma pack(push, 8)
class CPickupCreationDataNode
{
public:
char pad_0000[192]; //0x0000
bool m_has_placement; //0x00C0
char pad_00C1[7]; //0x00C1
uint64_t *unk_struct_00C8; //0x00C8
uint32_t unk_00D0; //0x00D0
uint16_t unk_00D4; //0x00D4
char pad_00D6[66]; //0x00D6
uint32_t m_pickup_hash; //0x0118
uint32_t m_amount; //0x011C
uint32_t m_custom_model; //0x0120
uint32_t m_life_time; //0x0124
uint32_t m_weapon_component[11]; //0x0128
uint32_t m_num_weapon_components; //0x0154
uint32_t m_tint_index; //0x0158
bool m_player_gift; //0x015C
bool unk_015D; //0x015D
char pad_015E[6]; //0x015E
uint32_t unk_0164; //0x0164
bool unk_0168; //0x0168
}; //Size: 0x0170
static_assert(sizeof(CPickupCreationDataNode) == 0x170);
#pragma pack(pop)

View File

@ -0,0 +1,25 @@
#pragma once
#include <cstdint>
#include "rage/vector.hpp"
#pragma pack(push, 8)
class CPickupPlacementCreationDataNode
{
public:
char pad_0000[192]; //0x0000
bool m_has_pickup_data; //0x00C0
char pad_00C1[15]; //0x00C1
rage::fvector3 m_pickup_pos; //0x00D0
char pad_00DC[4]; //0x00DC
rage::fvector4 m_pickup_orientation; //0x00E0
uint32_t m_pickup_type; //0x00F0
uint32_t m_pickup_flags; //0x00F4
uint32_t m_amount; //0x00F8
uint32_t m_custom_model; //0x00FC
uint32_t m_custom_regeneration_time; //0x0100
uint32_t m_team_permits; //0x0104
uint64_t *unk_struct_0108; //0x0108
}; //Size: 0x0110
static_assert(sizeof(CPickupPlacementCreationDataNode) == 0x110);
#pragma pack(pop)

View File

@ -0,0 +1,20 @@
#pragma once
#include <cstdint>
#pragma pack(push,4)
class CPlayerCreationDataNode
{
public:
char pad_0000[192]; //0x0000
uint32_t m_model; //0x00C0
uint32_t m_num_scars; //0x00C4
char unk_struct_0xC8[192]; //0x00C8
uint32_t unk_0188; //0x0188
char pad_018C[4]; //0x018C
char m_scar_struct[176]; //0x0190
bool unk_0240; //0x0240
char pad_0241[19]; //0x0241
}; //Size: 0x0254
static_assert(sizeof(CPlayerCreationDataNode) == 0x254);
#pragma pack(pop)

View File

@ -95,15 +95,9 @@ public:
uint32_t unk_0154; //0x0154
bool unk_0158; //0x0158
uint32_t m_decor_count; //0x015C
uint32_t m_decor_1_type; //0x0160
uint32_t m_decor_1_value; //0x0164
uint32_t m_decor_1_name; //0x0168
uint32_t m_decor_2_type; //0x016C
uint32_t m_decor_2_value; //0x0170
uint32_t m_decor_2_name; //0x0174
uint32_t m_decor_3_type; //0x0178
uint32_t m_decor_3_value; //0x017C
uint32_t m_decor_3_name; //0x0180
uint32_t m_decor_type[3]; // 0x0160
uint32_t m_decor_value[3]; // 0x016C
uint32_t m_decor_name_hash[3]; // 0x0178
bool m_friendly_fire_allowed; //0x0184
bool unk_0185; //0x0185
uint8_t m_current_garage_instance_index; //0x0186

View File

@ -1,24 +1,21 @@
#pragma once
#include <cstdint>
#include "vector.hpp"
#pragma pack(push,4)
class CPlayerSectorPosNode
{
public:
char pax_0000[192]; //0x0000
float m_sector_pos_x; //0x00C0
float m_sector_pos_y; //0x00C4
float m_sector_pos_z; //0x00C8
rage::fvector3 m_sector_pos; //0x00C0
bool m_is_standing_on_entity; //0x00CC
bool unk_00CD; //0x00CD
bool unk_00CE; //0x00CE
char pad_00CF[1]; //0x00CF
uint16_t m_entity_standing_on; //0x00D0
char pad_00D2[12]; //0x00D2
float m_standing_on_entity_offset_x; //0x00E0
float m_standing_on_entity_offset_y; //0x00E4
float m_standing_on_entity_offset_z; //0x00E8
rage::fvector3 m_standing_on_entity_offset; //0x00E0
char pad_00EC[8]; //0x00EC
uint32_t m_stealth_noise; //0x00F4
}; //Size: 0x00F8

View File

@ -0,0 +1,14 @@
#pragma once
#include <cstdint>
#pragma pack(push, 4)
class CGlobalFlagsDataNode
{
public:
char pad_0000[192]; //0x0000
uint32_t m_global_flags; //0x00C0
uint32_t m_ownership_token; //0x00C4
}; //Size: 0x00C8
static_assert(sizeof(CGlobalFlagsDataNode) == 0xC8);
#pragma pack(pop)

View File

@ -0,0 +1,15 @@
#pragma once
#include <cstdint>
#pragma pack(push, 4)
class CMigrationDataNode
{
public:
char pad_0000[192]; //0x0000
uint32_t m_cloned_state; //0x00C0
uint32_t m_cloned_players_that_left; //0x00C4
uint32_t m_unsynced_nodes; //0x00C8
}; //Size: 0x00CC
static_assert(sizeof(CMigrationDataNode) == 0xCC);
#pragma pack(pop)

View File

@ -0,0 +1,15 @@
#pragma once
#include <cstdint>
#pragma pack(push, 2)
class CSectorDataNode
{
public:
char pad_0x0[192]; //0x0
uint16_t m_pos_x; //0xC0
uint16_t m_pos_y; //0xC2
uint16_t m_pos_z; //0xC4
};
static_assert(sizeof(CSectorDataNode) == 0xC6);
#pragma pack(pop)

View File

@ -0,0 +1,13 @@
#pragma once
#pragma pack(push, 4)
class CSectorPositionDataNode
{
public:
char pad_0000[192]; //0x0000
float m_sector_pos_x; //0x00C0
float m_sector_pos_y; //0x00C4
float m_sector_pos_z; //0x00C8
}; //Size: 0x00CC
static_assert(sizeof(CSectorPositionDataNode) == 0xCC);
#pragma pack(pop)