|
14 | 14 | #include <game/Common.h> |
15 | 15 | #include <game/CModelInfo.h> |
16 | 16 | #include "CRenderWareSA.h" |
| 17 | +#include "game/RenderWare.h" |
17 | 18 |
|
18 | 19 | class CPedModelInfoSA; |
19 | 20 | class CPedModelInfoSAInterface; |
@@ -231,6 +232,11 @@ class CBaseModelInfoSAInterface |
231 | 232 | // +726 = Word array as referenced in CVehicleModelInfo::GetVehicleUpgrade(int) |
232 | 233 | // +762 = Array of WORD containing something relative to paintjobs |
233 | 234 | // +772 = Anim file index |
| 235 | + |
| 236 | + void Shutdown() |
| 237 | + { |
| 238 | + ((void(*)())VFTBL->Shutdown)(); |
| 239 | + } |
234 | 240 | }; |
235 | 241 | static_assert(sizeof(CBaseModelInfoSAInterface) == 0x20, "Invalid size for CBaseModelInfoSAInterface"); |
236 | 242 |
|
@@ -259,53 +265,66 @@ class CTimeModelInfoSAInterface : public CBaseModelInfoSAInterface |
259 | 265 | CTimeInfoSAInterface timeInfo; |
260 | 266 | }; |
261 | 267 |
|
| 268 | +class CVehicleModelUpgradePosnDesc |
| 269 | +{ |
| 270 | + CVector m_vPosition; |
| 271 | + RtQuat m_vRotation; |
| 272 | + int m_iParentId; |
| 273 | +}; |
| 274 | + |
262 | 275 | class CVehicleModelVisualInfoSAInterface // Not sure about this name. If somebody knows more, please change |
263 | 276 | { |
264 | 277 | public: |
265 | | - CVector vecDummies[15]; |
266 | | - char m_sUpgrade[18]; |
| 278 | + CVector vecDummies[15]; |
| 279 | + CVehicleModelUpgradePosnDesc m_sUpgrade[18]; |
| 280 | + RpAtomic* m_pExtra[6]; |
| 281 | + std::uint8_t m_numExtras; |
| 282 | + std::uint8_t _pad[3]; |
| 283 | + int m_maskComponentDamagable; |
267 | 284 | }; |
268 | 285 |
|
269 | | -class CVehicleModelInfoSAInterface : public CBaseModelInfoSAInterface |
| 286 | +class CVehicleModelInfoSAInterface : public CClumpModelInfoSAInterface |
270 | 287 | { |
271 | 288 | public: |
272 | | - uint32 pad1; // +32 |
273 | | - RpMaterial* pPlateMaterial; // +36 |
| 289 | + RpMaterial* pPlateMaterial; |
274 | 290 | char plateText[8]; |
275 | | - char pad[2]; |
| 291 | + std::uint8_t field_30; |
| 292 | + std::uint8_t plateType; |
276 | 293 | char gameName[8]; |
277 | | - char pad2[2]; |
278 | | - unsigned int uiVehicleType; |
| 294 | + std::uint8_t field_3A[2]; |
| 295 | + std::uint32_t vehicleType; |
279 | 296 | float fWheelSizeFront; |
280 | 297 | float fWheelSizeRear; |
281 | | - short sWheelModel; |
282 | | - short sHandlingID; |
283 | | - byte ucNumDoors; |
284 | | - byte ucVehicleList; |
285 | | - byte ucVehicleFlags; |
286 | | - byte ucWheelUpgradeClass; |
287 | | - byte ucTimesUsed; |
288 | | - short sVehFrequency; |
289 | | - unsigned int uiComponentRules; |
290 | | - float fSteeringAngle; |
291 | | - CVehicleModelVisualInfoSAInterface* pVisualInfo; // +92 |
292 | | - char pad3[464]; |
293 | | - char pDirtMaterial[64]; // *RwMaterial |
294 | | - char pad4[64]; |
295 | | - char primColors[8]; |
296 | | - char secondColors[8]; |
297 | | - char treeColors[8]; |
298 | | - char fourColors[8]; |
299 | | - unsigned char ucNumOfColorVariations; |
300 | | - unsigned char ucLastColorVariation; |
301 | | - unsigned char ucPrimColor; |
302 | | - unsigned char ucSecColor; |
303 | | - unsigned char ucTertColor; |
304 | | - unsigned char ucQuatColor; |
305 | | - char upgrades[36]; |
306 | | - char anRemapTXDs[8]; |
307 | | - char pad5[2]; |
308 | | - char pAnimBlock[4]; |
| 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]; |
| 311 | + RpMaterial** m_dirtMaterials; |
| 312 | + std::size_t m_numDirtMaterials; |
| 313 | + RpMaterial* m_staticDirtMaterials[30]; |
| 314 | + std::uint8_t primColors[8]; |
| 315 | + std::uint8_t secondColors[8]; |
| 316 | + std::uint8_t treeColors[8]; |
| 317 | + std::uint8_t fourColors[8]; |
| 318 | + std::uint8_t numOfColorVariations; |
| 319 | + std::uint8_t lastColorVariation; |
| 320 | + std::uint8_t primColor; |
| 321 | + std::uint8_t secColor; |
| 322 | + std::uint8_t tertColor; |
| 323 | + std::uint8_t quatColor; |
| 324 | + std::uint8_t upgrades[36]; |
| 325 | + std::uint8_t anRemapTXDs[8]; |
| 326 | + std::uint8_t field_302[2]; |
| 327 | + void* pAnimBlock; // CAnimBlock* |
309 | 328 | }; |
310 | 329 |
|
311 | 330 | class CModelInfoSA : public CModelInfo |
|
0 commit comments