From cd201dff2260778375a37757df8ce5c5a1b42a1a Mon Sep 17 00:00:00 2001 From: Reece Watson <45642596+SkiddyToast@users.noreply.github.com> Date: Sat, 13 Aug 2022 04:24:30 -0400 Subject: [PATCH] feat(DataNodes): Reorganize and add data nodes. (#22) --- .../automobile/CAutomobileCreationNode.hpp | 10 +++++++ datanodes/door/CDoorCreationDataNode.hpp | 19 ++++++++++++ .../CDynamicEntityGameStateDataNode.hpp | 19 ++++++++++++ .../entity/CEntityOrientationDataNode.hpp | 11 +++++++ .../entity/CEntityScriptGameStateDataNode.hpp | 10 +++++++ .../{ => object}/CObjectCreationDataNode.hpp | 0 .../{ => ped}/CPedAppearanceDataNode.hpp | 0 datanodes/{ => ped}/CPedAttachDataNode.hpp | 10 ++----- datanodes/{ => ped}/CPedCreationDataNode.hpp | 0 datanodes/ped/CPedScriptCreationDataNode.hpp | 9 ++++++ .../physical/CPhysicalAngVelocityDataNode.hpp | 15 ++++++++++ .../CPhysicalAttachDataNode.hpp | 16 ++++------ .../physical/CPhysicalHealthDataNode.hpp | 18 +++++++++++ .../physical/CPhysicalVelocityDataNode.hpp | 15 ++++++++++ datanodes/pickup/CPickupCreationDataNode.hpp | 30 +++++++++++++++++++ .../CPickupPlacementCreationDataNode.hpp | 25 ++++++++++++++++ .../CPlayerAppearanceDataNode.hpp | 0 datanodes/player/CPlayerCreationDataNode.hpp | 20 +++++++++++++ .../{ => player}/CPlayerGameStateDataNode.hpp | 12 ++------ .../{ => player}/CPlayerGamerDataNode.hpp | 0 .../{ => player}/CPlayerSectorPosNode.hpp | 9 ++---- .../CGlobalFlagsDataNode.hpp | 14 +++++++++ .../CMigrationDataNode.hpp | 15 ++++++++++ .../proximity_migrateable/CSectorDataNode.hpp | 15 ++++++++++ .../CSectorPositionDataNode.hpp | 13 ++++++++ .../{ => train}/CTrainGameStateDataNode.hpp | 0 .../CVehicleCreationDataNode.hpp | 0 27 files changed, 272 insertions(+), 33 deletions(-) create mode 100644 datanodes/automobile/CAutomobileCreationNode.hpp create mode 100644 datanodes/door/CDoorCreationDataNode.hpp create mode 100644 datanodes/dynamic_entity/CDynamicEntityGameStateDataNode.hpp create mode 100644 datanodes/entity/CEntityOrientationDataNode.hpp create mode 100644 datanodes/entity/CEntityScriptGameStateDataNode.hpp rename datanodes/{ => object}/CObjectCreationDataNode.hpp (100%) rename datanodes/{ => ped}/CPedAppearanceDataNode.hpp (100%) rename datanodes/{ => ped}/CPedAttachDataNode.hpp (66%) rename datanodes/{ => ped}/CPedCreationDataNode.hpp (100%) create mode 100644 datanodes/ped/CPedScriptCreationDataNode.hpp create mode 100644 datanodes/physical/CPhysicalAngVelocityDataNode.hpp rename datanodes/{ => physical}/CPhysicalAttachDataNode.hpp (66%) create mode 100644 datanodes/physical/CPhysicalHealthDataNode.hpp create mode 100644 datanodes/physical/CPhysicalVelocityDataNode.hpp create mode 100644 datanodes/pickup/CPickupCreationDataNode.hpp create mode 100644 datanodes/pickup_placement/CPickupPlacementCreationDataNode.hpp rename datanodes/{ => player}/CPlayerAppearanceDataNode.hpp (100%) create mode 100644 datanodes/player/CPlayerCreationDataNode.hpp rename datanodes/{ => player}/CPlayerGameStateDataNode.hpp (93%) rename datanodes/{ => player}/CPlayerGamerDataNode.hpp (100%) rename datanodes/{ => player}/CPlayerSectorPosNode.hpp (65%) create mode 100644 datanodes/proximity_migrateable/CGlobalFlagsDataNode.hpp create mode 100644 datanodes/proximity_migrateable/CMigrationDataNode.hpp create mode 100644 datanodes/proximity_migrateable/CSectorDataNode.hpp create mode 100644 datanodes/proximity_migrateable/CSectorPositionDataNode.hpp rename datanodes/{ => train}/CTrainGameStateDataNode.hpp (100%) rename datanodes/{ => vehicle}/CVehicleCreationDataNode.hpp (100%) diff --git a/datanodes/automobile/CAutomobileCreationNode.hpp b/datanodes/automobile/CAutomobileCreationNode.hpp new file mode 100644 index 0000000..aeb8c1d --- /dev/null +++ b/datanodes/automobile/CAutomobileCreationNode.hpp @@ -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); \ No newline at end of file diff --git a/datanodes/door/CDoorCreationDataNode.hpp b/datanodes/door/CDoorCreationDataNode.hpp new file mode 100644 index 0000000..839443d --- /dev/null +++ b/datanodes/door/CDoorCreationDataNode.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include +#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) diff --git a/datanodes/dynamic_entity/CDynamicEntityGameStateDataNode.hpp b/datanodes/dynamic_entity/CDynamicEntityGameStateDataNode.hpp new file mode 100644 index 0000000..ba021c1 --- /dev/null +++ b/datanodes/dynamic_entity/CDynamicEntityGameStateDataNode.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/entity/CEntityOrientationDataNode.hpp b/datanodes/entity/CEntityOrientationDataNode.hpp new file mode 100644 index 0000000..ffffe3d --- /dev/null +++ b/datanodes/entity/CEntityOrientationDataNode.hpp @@ -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) diff --git a/datanodes/entity/CEntityScriptGameStateDataNode.hpp b/datanodes/entity/CEntityScriptGameStateDataNode.hpp new file mode 100644 index 0000000..1567880 --- /dev/null +++ b/datanodes/entity/CEntityScriptGameStateDataNode.hpp @@ -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); \ No newline at end of file diff --git a/datanodes/CObjectCreationDataNode.hpp b/datanodes/object/CObjectCreationDataNode.hpp similarity index 100% rename from datanodes/CObjectCreationDataNode.hpp rename to datanodes/object/CObjectCreationDataNode.hpp diff --git a/datanodes/CPedAppearanceDataNode.hpp b/datanodes/ped/CPedAppearanceDataNode.hpp similarity index 100% rename from datanodes/CPedAppearanceDataNode.hpp rename to datanodes/ped/CPedAppearanceDataNode.hpp diff --git a/datanodes/CPedAttachDataNode.hpp b/datanodes/ped/CPedAttachDataNode.hpp similarity index 66% rename from datanodes/CPedAttachDataNode.hpp rename to datanodes/ped/CPedAttachDataNode.hpp index d6912e4..9812b77 100644 --- a/datanodes/CPedAttachDataNode.hpp +++ b/datanodes/ped/CPedAttachDataNode.hpp @@ -1,20 +1,16 @@ #pragma once #include +#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 diff --git a/datanodes/CPedCreationDataNode.hpp b/datanodes/ped/CPedCreationDataNode.hpp similarity index 100% rename from datanodes/CPedCreationDataNode.hpp rename to datanodes/ped/CPedCreationDataNode.hpp diff --git a/datanodes/ped/CPedScriptCreationDataNode.hpp b/datanodes/ped/CPedScriptCreationDataNode.hpp new file mode 100644 index 0000000..3245205 --- /dev/null +++ b/datanodes/ped/CPedScriptCreationDataNode.hpp @@ -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); \ No newline at end of file diff --git a/datanodes/physical/CPhysicalAngVelocityDataNode.hpp b/datanodes/physical/CPhysicalAngVelocityDataNode.hpp new file mode 100644 index 0000000..0244ad2 --- /dev/null +++ b/datanodes/physical/CPhysicalAngVelocityDataNode.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +#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); \ No newline at end of file diff --git a/datanodes/CPhysicalAttachDataNode.hpp b/datanodes/physical/CPhysicalAttachDataNode.hpp similarity index 66% rename from datanodes/CPhysicalAttachDataNode.hpp rename to datanodes/physical/CPhysicalAttachDataNode.hpp index 086f1ec..7881d5e 100644 --- a/datanodes/CPhysicalAttachDataNode.hpp +++ b/datanodes/physical/CPhysicalAttachDataNode.hpp @@ -1,8 +1,9 @@ #pragma once #include +#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 diff --git a/datanodes/physical/CPhysicalHealthDataNode.hpp b/datanodes/physical/CPhysicalHealthDataNode.hpp new file mode 100644 index 0000000..c1ce596 --- /dev/null +++ b/datanodes/physical/CPhysicalHealthDataNode.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/physical/CPhysicalVelocityDataNode.hpp b/datanodes/physical/CPhysicalVelocityDataNode.hpp new file mode 100644 index 0000000..4019c13 --- /dev/null +++ b/datanodes/physical/CPhysicalVelocityDataNode.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/pickup/CPickupCreationDataNode.hpp b/datanodes/pickup/CPickupCreationDataNode.hpp new file mode 100644 index 0000000..71a14d0 --- /dev/null +++ b/datanodes/pickup/CPickupCreationDataNode.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include + +#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) diff --git a/datanodes/pickup_placement/CPickupPlacementCreationDataNode.hpp b/datanodes/pickup_placement/CPickupPlacementCreationDataNode.hpp new file mode 100644 index 0000000..06227ed --- /dev/null +++ b/datanodes/pickup_placement/CPickupPlacementCreationDataNode.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include +#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) \ No newline at end of file diff --git a/datanodes/CPlayerAppearanceDataNode.hpp b/datanodes/player/CPlayerAppearanceDataNode.hpp similarity index 100% rename from datanodes/CPlayerAppearanceDataNode.hpp rename to datanodes/player/CPlayerAppearanceDataNode.hpp diff --git a/datanodes/player/CPlayerCreationDataNode.hpp b/datanodes/player/CPlayerCreationDataNode.hpp new file mode 100644 index 0000000..e659647 --- /dev/null +++ b/datanodes/player/CPlayerCreationDataNode.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/CPlayerGameStateDataNode.hpp b/datanodes/player/CPlayerGameStateDataNode.hpp similarity index 93% rename from datanodes/CPlayerGameStateDataNode.hpp rename to datanodes/player/CPlayerGameStateDataNode.hpp index 288b63f..2f92dbe 100644 --- a/datanodes/CPlayerGameStateDataNode.hpp +++ b/datanodes/player/CPlayerGameStateDataNode.hpp @@ -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 diff --git a/datanodes/CPlayerGamerDataNode.hpp b/datanodes/player/CPlayerGamerDataNode.hpp similarity index 100% rename from datanodes/CPlayerGamerDataNode.hpp rename to datanodes/player/CPlayerGamerDataNode.hpp diff --git a/datanodes/CPlayerSectorPosNode.hpp b/datanodes/player/CPlayerSectorPosNode.hpp similarity index 65% rename from datanodes/CPlayerSectorPosNode.hpp rename to datanodes/player/CPlayerSectorPosNode.hpp index 057bf2c..cf03b3c 100644 --- a/datanodes/CPlayerSectorPosNode.hpp +++ b/datanodes/player/CPlayerSectorPosNode.hpp @@ -1,24 +1,21 @@ #pragma once #include +#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 diff --git a/datanodes/proximity_migrateable/CGlobalFlagsDataNode.hpp b/datanodes/proximity_migrateable/CGlobalFlagsDataNode.hpp new file mode 100644 index 0000000..b69fe72 --- /dev/null +++ b/datanodes/proximity_migrateable/CGlobalFlagsDataNode.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/proximity_migrateable/CMigrationDataNode.hpp b/datanodes/proximity_migrateable/CMigrationDataNode.hpp new file mode 100644 index 0000000..7726c07 --- /dev/null +++ b/datanodes/proximity_migrateable/CMigrationDataNode.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/proximity_migrateable/CSectorDataNode.hpp b/datanodes/proximity_migrateable/CSectorDataNode.hpp new file mode 100644 index 0000000..bd2a144 --- /dev/null +++ b/datanodes/proximity_migrateable/CSectorDataNode.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +#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) \ No newline at end of file diff --git a/datanodes/proximity_migrateable/CSectorPositionDataNode.hpp b/datanodes/proximity_migrateable/CSectorPositionDataNode.hpp new file mode 100644 index 0000000..9f2529b --- /dev/null +++ b/datanodes/proximity_migrateable/CSectorPositionDataNode.hpp @@ -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) \ No newline at end of file diff --git a/datanodes/CTrainGameStateDataNode.hpp b/datanodes/train/CTrainGameStateDataNode.hpp similarity index 100% rename from datanodes/CTrainGameStateDataNode.hpp rename to datanodes/train/CTrainGameStateDataNode.hpp diff --git a/datanodes/CVehicleCreationDataNode.hpp b/datanodes/vehicle/CVehicleCreationDataNode.hpp similarity index 100% rename from datanodes/CVehicleCreationDataNode.hpp rename to datanodes/vehicle/CVehicleCreationDataNode.hpp