120 lines
3.8 KiB
C++
120 lines
3.8 KiB
C++
#pragma once
|
|
|
|
#include "../base/CBaseModelInfo.hpp"
|
|
#include "vehicle/CVehicleModelInfoLayout.hpp"
|
|
|
|
#include <cstdint>
|
|
|
|
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[7]; //0x0584
|
|
uint16_t m_ability_flag; // 0x058B
|
|
char pad_058D[19]; // 0x058D
|
|
}; //Size: 0x05A0
|
|
static_assert(sizeof(CVehicleModelInfo) == 0x5A0);
|
|
#pragma pack(pop)
|