improved CVehicleModelInfo (#148)

This commit is contained in:
horizon 2023-12-12 09:49:29 +01:00 committed by GitHub
parent b93fcb4848
commit e52b8c6537
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -53,6 +53,214 @@ enum class eVehicleClass : std::uint8_t
VC_OPEN_WHEEL = 22,
};
enum class CVehicleModelInfoFlags : std::uint16_t
{
SMALL_WORKER,
BIG,
NO_BOOT,
ONLY_DURING_OFFICE_HOURS,
BOOT_IN_FRONT,
IS_VAN,
AVOID_TURNS,
HAS_LIVERY,
LIVERY_MATCH_EXTRA,
SPORTS,
DELIVERY,
UNK_0xB5A93F62,
ONLY_ON_HIGHWAYS,
TALL_SHIP,
SPAWN_ON_TRAILER,
SPAWN_BOAT_ON_TRAILER,
EXTRAS_GANG,
EXTRAS_CONVERTIBLE,
EXTRAS_TAXI,
EXTRAS_RARE,
EXTRAS_REQUIRE,
EXTRAS_STRONG,
EXTRAS_ONLY_BREAK_WHEN_DESTROYED,
EXTRAS_SCRIPT,
EXTRAS_ALL,
EXTRAS_MATCH_LIVERY,
DONT_ROTATE_TAIL_ROTOR,
PARKING_SENSORS,
PEDS_CAN_STAND_ON_TOP,
UNK_0x77C9F804,
GEN_NAVMESH,
LAW_ENFORCEMENT,
EMERGENCY_SERVICE,
DRIVER_NO_DRIVE_BY,
NO_RESPRAY,
IGNORE_ON_SIDE_CHECK,
RICH_CAR,
AVERAGE_CAR,
POOR_CAR,
ALLOWS_RAPPEL,
DONT_CLOSE_DOOR_UPON_EXIT,
USE_HIGHER_DOOR_TORQUE,
DISABLE_THROUGH_WINDSHIELD,
IS_ELECTRIC,
NO_BROKEN_DOWN_SCENARIO,
IS_JETSKI,
DAMPEN_STICKYBOMB_DAMAGE,
DONT_SPAWN_IN_CARGEN,
IS_OFFROAD_VEHICLE,
INCREASE_PED_COMMENTS,
EXPLODE_ON_CONTACT,
USE_FAT_INTERIOR_LIGHT,
HEADLIGHTS_USE_ACTUAL_BONE_POS,
FAKE_EXTRALIGHTS,
CANNOT_BE_MODDED,
DONT_SPAWN_AS_AMBIENT,
IS_BULKY,
BLOCK_FROM_ATTRACTOR_SCENARIO,
IS_BUS,
USE_STEERING_PARAM_FOR_LEAN,
CANNOT_BE_DRIVEN_BY_PLAYER,
SPRAY_PETROL_BEFORE_EXPLOSION,
ATTACH_TRAILER_ON_HIGHWAY,
ATTACH_TRAILER_IN_CITY,
HAS_NO_ROOF,
ALLOW_TARGETING_OF_OCCUPANTS,
RECESSED_HEADLIGHT_CORONAS,
RECESSED_TAILLIGHT_CORONAS,
IS_TRACKED_FOR_TRAILS,
HEADLIGHTS_ON_LANDINGGEAR,
CONSIDERED_FOR_VEHICLE_ENTRY_WHEN_STOOD_ON,
GIVE_SCUBA_GEAR_ON_EXIT,
IS_DIGGER,
IS_TANK,
USE_COVERBOUND_INFO_FOR_COVERGEN,
CAN_BE_DRIVEN_ON,
HAS_BULLETPROOF_GLASS,
CANNOT_TAKE_COVER_WHEN_STOOD_ON,
INTERIOR_BLOCKED_BY_BOOT,
DONT_TIMESLICE_WHEELS,
FLEE_FROM_COMBAT,
DRIVER_SHOULD_BE_FEMALE,
DRIVER_SHOULD_BE_MALE,
COUNT_AS_FACEBOOK_DRIVEN,
BIKE_CLAMP_PICKUP_LEAN_RATE,
PLANE_WEAR_ALTERNATIVE_HELMET,
USE_STRICTER_EXIT_COLLISION_TESTS,
TWO_DOORS_ONE_SEAT,
USE_LIGHTING_INTERIOR_OVERRIDE,
USE_RESTRICTED_DRIVEBY_HEIGHT,
CAN_HONK_WHEN_FLEEING,
PEDS_INSIDE_CAN_BE_SET_ON_FIRE_MP,
REPORT_CRIME_IF_STANDING_ON,
HELI_USES_FIXUPS_ON_OPEN_DOOR,
FORCE_ENABLE_CHASSIS_COLLISION,
CANNOT_BE_PICKUP_BY_CARGOBOB,
CAN_HAVE_NEONS,
HAS_INTERIOR_EXTRAS,
HAS_TURRET_SEAT_ON_VEHICLE,
ALLOW_OBJECT_LOW_LOD_COLLISION,
DISABLE_AUTO_VAULT_ON_VEHICLE,
USE_TURRET_RELATIVE_AIM_CALCULATION,
USE_FULL_ANIMS_FOR_MP_WARP_ENTRY_POINTS,
HAS_DIRECTIONAL_SHUFFLES,
DISABLE_WEAPON_WHEEL_IN_FIRST_PERSON,
USE_PILOT_HELMET,
USE_WEAPON_WHEEL_WITHOUT_HELMET,
PREFER_ENTER_TURRET_AFTER_DRIVER,
USE_SMALLER_OPEN_DOOR_RATIO_TOLERANCE,
USE_HEADING_ONLY_IN_TURRET_MATRIX,
DONT_STOP_WHEN_GOING_TO_CLIMB_UP_POINT,
HAS_REAR_MOUNTED_TURRET,
DISABLE_BUSTING,
IGNORE_RWINDOW_COLLISION,
HAS_GULL_WING_DOORS,
CARGOBOB_HOOK_UP_CHASSIS,
USE_FIVE_ANIM_THROW_FP,
ALLOW_HATS_NO_ROOF,
HAS_REAR_SEAT_ACTIVITIES,
HAS_LOWRIDER_HYDRAULICS,
HAS_BULLET_RESISTANT_GLASS,
HAS_INCREASED_RAMMING_FORCE,
HAS_CAPPED_EXPLOSION_DAMAGE,
HAS_LOWRIDER_DONK_HYDRAULICS,
HELICOPTER_WITH_LANDING_GEAR,
JUMPING_CAR,
HAS_ROCKET_BOOST,
RAMMING_SCOOP,
HAS_PARACHUTE,
RAMP,
HAS_EXTRA_SHUFFLE_SEAT_ON_VEHICLE,
FRONT_BOOT,
HALF_TRACK,
RESET_TURRET_SEAT_HEADING,
TURRET_MODS_ON_ROOF,
UPDATE_WEAPON_BATTERY_BONES,
DONT_HOLD_LOW_GEARS_WHEN_ENGINE_UNDER_LOAD,
HAS_GLIDER,
INCREASE_LOW_SPEED_TORQUE,
USE_AIRCRAFT_STYLE_WEAPON_TARGETING,
KEEP_ALL_TURRETS_SYNCHRONISED,
SET_WANTED_FOR_ATTACHED_VEH,
TURRET_ENTRY_ATTACH_TO_DRIVER_SEAT,
USE_STANDARD_FLIGHT_HELMET,
SECOND_TURRET_MOD,
THIRD_TURRET_MOD,
HAS_EJECTOR_SEATS,
UNK_0x2028D687,
HAS_JATO_BOOST_MOD,
IGNORE_TRAPPED_HULL_CHECK,
HOLD_TO_SHUFFLE,
TURRET_MOD_WITH_NO_STOCK_TURRET,
EQUIP_UNARMED_ON_ENTER,
DISABLE_CAMERA_PUSH_BEYOND,
HAS_VERTICAL_FLIGHT_MODE,
HAS_OUTRIGGER_LEGS,
CAN_NAVIGATE_TO_ON_VEHICLE_ENTRY,
DROP_SUSPENSION_WHEN_STOPPED,
DONT_CRASH_ABANDONED_NEAR_GROUND,
USE_INTERIOR_RED_LIGHT,
HAS_HELI_STRAFE_MODE,
HAS_VERTICAL_ROCKET_BOOST,
CREATE_WEAPON_MANAGER_ON_SPAWN,
USE_ROOT_AS_BASE_LOCKON_POS,
HEADLIGHTS_ON_TAP_ONLY,
CHECK_WARP_TASK_DURING_ENTER,
USE_RESTRICTED_DRIVEBY_HEIGHT_HIGH,
INCREASE_CAMBER_WITH_SUSPENSION_MOD,
NO_HEAVY_BRAKE_ANIMATION,
HAS_TWO_BONNET_BONES,
DONT_LINK_BOOT2,
HAS_INCREASED_RAMMING_FORCE_WITH_CHASSIS_MOD,
UNK_0x4C8630D9,
HAS_EXTENDED_COLLISION_MODS,
HAS_NITROUS_MOD,
HAS_JUMP_MOD,
HAS_RAMMING_SCOOP_MOD,
HAS_SUPER_BRAKES_MOD,
CRUSHES_OTHER_VEHICLES,
HAS_WEAPON_BLADE_MODS,
HAS_WEAPON_SPIKE_MODS,
FORCE_BONNET_CAMERA_INSTEAD_OF_POV,
RAMP_MOD,
HAS_TOMBSTONE,
HAS_SIDE_SHUNT,
HAS_FRONT_SPIKE_MOD,
HAS_RAMMING_BAR_MOD,
TURRET_MODS_ON_CHASSIS5,
HAS_SUPERCHARGER,
IS_TANK_WITH_FLAME_DAMAGE,
DISABLE_DEFORMATION,
ALLOW_RAPPEL_AI_ONLY,
USE_RESTRICTED_DRIVEBY_HEIGHT_MID_ONLY,
FORCE_AUTO_VAULT_ON_VEHICLE_WHEN_STUCK,
SPOILER_MOD_DOESNT_INCREASE_GRIP,
NO_REVERSING_ANIMATION,
IS_QUADBIKE_USING_BIKE_ANIMATIONS,
IS_FORMULA_VEHICLE,
LATCH_ALL_JOINTS,
REJECT_ENTRY_TO_VEHICLE_WHEN_STOOD_ON,
CHECK_IF_DRIVER_SEAT_IS_CLOSER_THAN_TURRETS_WITH_ON_BOARD_ENTER,
RENDER_WHEELS_WITH_ZERO_COMPRESSION,
USE_LENGTH_OF_VEHICLE_BOUNDS_FOR_PLAYER_LOCKON_POS,
PREFER_FRONT_SEAT
};
#pragma pack(push, 1)
class CVehicleModelInfo : public CBaseModelInfo
{
@ -109,11 +317,25 @@ public:
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)
char pad_0558[36]; //0x0558
uint32_t m_vehicle_model_flags[7]; // 0x057C
inline bool get_vehicle_model_flag(const CVehicleModelInfoFlags flag)
{
const auto index = static_cast<uint16_t>(flag);
return this->m_vehicle_model_flags[index / 32] & (1 << (index % 32));
}
inline void set_vehicle_model_flag(const CVehicleModelInfoFlags flag, bool toggle)
{
const auto index = static_cast<uint16_t>(flag);
if (toggle)
this->m_vehicle_model_flags[index / 32] |= (1 << (index % 32));
else
this->m_vehicle_model_flags[index / 32] &= ~(1 << (index % 32));
}
}; //Size: 0x0598
static_assert(sizeof(CVehicleModelInfo) == 0x598);
#pragma pack(pop)