@@ -232,6 +232,11 @@ class CBaseModelInfoSAInterface
232232 // +726 = Word array as referenced in CVehicleModelInfo::GetVehicleUpgrade(int)
233233 // +762 = Array of WORD containing something relative to paintjobs
234234 // +772 = Anim file index
235+
236+ void Shutdown ()
237+ {
238+ ((void (*)())VFTBL->Shutdown )();
239+ }
235240};
236241static_assert (sizeof (CBaseModelInfoSAInterface) == 0x20 , " Invalid size for CBaseModelInfoSAInterface" );
237242
@@ -278,30 +283,31 @@ class CVehicleModelVisualInfoSAInterface // Not sure about this name.
278283 int m_maskComponentDamagable;
279284};
280285
281- class CVehicleModelInfoSAInterface : public CBaseModelInfoSAInterface
286+ class CVehicleModelInfoSAInterface : public CClumpModelInfoSAInterface
282287{
283288public:
284- uint32 pad1; // +32
285- RpMaterial* pPlateMaterial; // +36
289+ RpMaterial* pPlateMaterial;
286290 char plateText[8 ];
287- char pad[2 ];
291+ std::uint8_t field_30;
292+ std::uint8_t plateType;
288293 char gameName[8 ];
289- char pad2 [2 ];
290- unsigned int uiVehicleType ;
294+ std:: uint8_t field_3A [2 ];
295+ std:: uint32_t vehicleType ;
291296 float fWheelSizeFront ;
292297 float fWheelSizeRear ;
293- short sWheelModel ;
294- short sHandlingID ;
295- byte ucNumDoors;
296- byte ucVehicleList;
297- byte ucVehicleFlags;
298- byte ucWheelUpgradeClass;
299- byte ucTimesUsed;
300- short sVehFrequency ;
301- unsigned int uiComponentRules;
302- float fSteeringAngle ;
303- CVehicleModelVisualInfoSAInterface* pVisualInfo; // +92
304- char pad3[464 ];
298+ std::int16_t wheelModelID;
299+ std::int16_t handlingID;
300+ std::uint8_t numDoors;
301+ std::uint8_t vehicleClass;
302+ std::uint8_t vehicleFlags;
303+ std::uint8_t wheelUpgradeClass;
304+ std::uint8_t timesUsed;
305+ std::uint8_t field_51;
306+ std::int16_t vehFrequency;
307+ std::uint32_t componentRules;
308+ float bikeSteeringAngle;
309+ CVehicleModelVisualInfoSAInterface* pVisualInfo; // vehicleStruct
310+ std::uint8_t field_60[464 ];
305311
306312 union
307313 {
@@ -311,24 +317,22 @@ class CVehicleModelInfoSAInterface : public CBaseModelInfoSAInterface
311317 size_t m_numDirtMaterials;
312318 RpMaterial* m_staticDirtMaterials[30 ];
313319 };
314- RpMaterial* pDirtMaterial[32 ];
315320 };
316321
317- char pad4[64 ];
318- char primColors[8 ];
319- char secondColors[8 ];
320- char treeColors[8 ];
321- char fourColors[8 ];
322- unsigned char ucNumOfColorVariations;
323- unsigned char ucLastColorVariation;
324- unsigned char ucPrimColor;
325- unsigned char ucSecColor;
326- unsigned char ucTertColor;
327- unsigned char ucQuatColor;
328- char upgrades[36 ];
329- char anRemapTXDs[8 ];
330- char pad5[2 ];
331- char pAnimBlock[4 ];
322+ std::uint8_t primColors[8 ];
323+ std::uint8_t secondColors[8 ];
324+ std::uint8_t treeColors[8 ];
325+ std::uint8_t fourColors[8 ];
326+ std::uint8_t numOfColorVariations;
327+ std::uint8_t lastColorVariation;
328+ std::uint8_t primColor;
329+ std::uint8_t secColor;
330+ std::uint8_t tertColor;
331+ std::uint8_t quatColor;
332+ std::uint8_t upgrades[36 ];
333+ std::uint8_t anRemapTXDs[8 ];
334+ std::uint8_t field_302[2 ];
335+ void * pAnimBlock; // CAnimBlock*
332336};
333337
334338class CModelInfoSA : public CModelInfo
0 commit comments