#pragma once #include "../base/CBaseModelInfo.hpp" #include "vehicle/CVehicleModelInfoLayout.hpp" #include enum class eVehicleType : std::uint32_t { VEHICLE_TYPE_NONE = 4294967295, VEHICLE_TYPE_CAR = 0, VEHICLE_TYPE_PLANE = 1, VEHICLE_TYPE_TRAILER = 2, VEHICLE_TYPE_QUADBIKE = 3, VEHICLE_TYPE_DRAFT = 4, VEHICLE_TYPE_SUBMARINECAR = 5, VEHICLE_TYPE_AMPHIBIOUS_AUTOMOBILE = 6, VEHICLE_TYPE_AMPHIBIOUS_QUADBIKE = 7, VEHICLE_TYPE_HELI = 8, VEHICLE_TYPE_BLIMP = 9, VEHICLE_TYPE_AUTOGYRO = 10, VEHICLE_TYPE_BIKE = 11, VEHICLE_TYPE_BICYCLE = 12, VEHICLE_TYPE_BOAT = 13, VEHICLE_TYPE_TRAIN = 14, VEHICLE_TYPE_SUBMARINE = 15, }; enum class eVehicleClass : std::uint8_t { VC_COMPACT = 0, VC_SEDAN = 1, VC_SUV = 2, VC_COUPE = 3, VC_MUSCLE = 4, VC_SPORT_CLASSIC = 5, VC_SPORT = 6, VC_SUPER = 7, VC_MOTORCYCLE = 8, VC_OFF_ROAD = 9, VC_INDUSTRIAL = 10, VC_UTILITY = 11, VC_VAN = 12, VC_CYCLE = 13, VC_BOAT = 14, VC_HELICOPTER = 15, VC_PLANE = 16, VC_SERVICE = 17, VC_EMERGENCY = 18, VC_MILITARY = 19, VC_COMMERCIAL = 20, VC_RAIL = 21, VC_OPEN_WHEEL = 22, }; #pragma pack(push, 1) class CVehicleModelInfo : public CBaseModelInfo { public: CVehicleModelInfoLayout* m_vehicle_layout; //0x00B0 char pad_00B8[64]; //0x00B8 uint8_t m_primary_color_combinations[25]; //0x00F8 uint8_t m_secondary_color_combinations[25]; //0x0111 uint8_t m_unk_color_combos1[25]; //0x012A uint8_t m_unk_color_combos2[25]; //0x0143 uint8_t m_interior_color_combinations[25]; //0x015C uint8_t m_dashboard_color_combinations[25]; //0x0175 char pad_018E[266]; //0x018E char m_name[12]; //0x0298 char m_manufacturer[12]; //0x02A4 uint16_t* m_modkits; //0x02B0 uint16_t m_modkits_count; //0x02B8 char pad_02BA[30]; //0x02BA uint8_t m_passenger_capacity; //0x02D8 char pad_02D9[103]; //0x02D9 eVehicleType m_vehicle_type; //0x0340 uint32_t m_unk_vehicle_type; //0x0344 uint16_t m_diffuse_tint; //0x0348 int8_t m_max_seats; //0x034A char pad_034B[5]; //0x034B CVehicleLayoutMetaData* m_layout_metadata; //0x0350 char pad_0358[8]; //0x0358 rage::fvector3 m_first_person_driveby_ik_offset; //0x0360 char pad_036C[4]; //0x036C rage::fvector3 m_first_person_driveby_unarmed_ik_offset; //0x0370 char pad_037C[20]; //0x037C rage::fvector3 m_first_person_driveby_right_passenger_ik_offset; //0x0390 char pad_039C[36]; //0x039C rage::fvector3 m_first_person_driveby_right_passenger_unarmed_ik_offset; //0x03C0 char pad_03CC[4]; //0x03CC rage::fvector3 m_first_person_projectile_driveby_ik_offset; //0x03D0 char pad_03DC[4]; //0x03DC rage::fvector3 m_first_person_projectile_driveby_passenger_ik_offset; //0x03E0 char pad_03EC[52]; //0x03EC rage::fvector3 m_first_person_mobile_phone_offset; //0x0420 char pad_042C[4]; //0x042C rage::fvector3 m_first_person_passenger_mobile_phone_offset; //0x0430 char pad_043C[20]; //0x043C rage::fvector3 m_pov_camera_offset; //0x0450 char pad_045C[36]; //0x045C float m_pov_camera_vertical_adjustement_for_rollcage; //0x0480 char pad_0484[8]; //0x0484 float m_wheel_scale; //0x048C float m_wheel_scale_rear; //0x0490 float m_default_health; //0x0494 char pad_0498[4]; //0x0498 float m_steer_wheel_multiplier; //0x049C char pad_04A0[168]; //0x04A0 eVehicleClass m_vehicle_class; //0x0548 char pad_0549[11]; float m_min_seat_height; //0x0554 char pad_0558[40]; //0x0558 uint32_t m_is_jetski; //0x0580 char pad_0584[28]; //0x0584 }; //Size: 0x05A0 static_assert(sizeof(CVehicleModelInfo) == 0x5A0); #pragma pack(pop)