@@ -42,97 +42,97 @@ class CAutomobileSAInterface : public CVehicleSAInterface
4242public:
4343 void SetPanelDamage (std::uint8_t panelId, bool breakGlass, bool spawnFlyingComponent = true );
4444
45- CObjectSAInterface* SpawnFlyingComponent (const eCarNodes & nodeId, const eCarComponentCollisionTypes& collType)
45+ CObjectSAInterface* SpawnFlyingComponent (const CarNodes::Enum & nodeId, const eCarComponentCollisionTypes& collType)
4646 {
47- return ((CObjectSAInterface* (__thiscall*)(CAutomobileSAInterface*, eCarNodes , eCarComponentCollisionTypes))0x6a8580 )(this , nodeId, collType);
47+ return ((CObjectSAInterface * (__thiscall*)(CAutomobileSAInterface*, CarNodes::Enum , eCarComponentCollisionTypes))0x6a8580 )(this , nodeId, collType);
4848 }
4949
50- CDamageManagerSAInterface m_damageManager;
51- CDoorSAInterface m_doors[MAX_DOORS];
52- RwFrame* m_aCarNodes[ static_cast <std:: size_t >(eCarNodes ::NUM_NODES)] ;
53- CBouncingPanelSAInterface m_panels[3 ];
54- CDoorSAInterface m_swingingChassis;
55- CColPointSAInterface m_wheelColPoint[MAX_WHEELS];
56- float m_wheelsDistancesToGround1[4 ];
57- float m_wheelsDistancesToGround2[4 ];
58- float m_wheelCollisionState[4 ];
59- float field_800;
60- float field_804;
61- float field_80C;
62- int m_wheelSkidmarkType[4 ];
63- bool m_wheelSkidmarkBloodState[4 ];
64- bool m_wheelSkidmarkSomeBool[4 ];
65- float m_wheelRotation[4 ];
66- float m_wheelPosition[4 ];
67- float m_wheelSpeed[4 ];
68- int field_858[4 ];
69- char taxiAvaliable;
70- char field_869;
71- short field_86A;
72- unsigned short m_wMiscComponentAngle;
73- unsigned short m_wVoodooSuspension;
74- int m_dwBusDoorTimerEnd;
75- int m_dwBusDoorTimerStart;
76- float field_878;
77- float wheelOffsetZ[4 ];
78- int field_88C[3 ];
79- float m_fFrontHeightAboveRoad;
80- float m_fRearHeightAboveRoad;
81- float m_fCarTraction;
82- float m_fNitroValue;
83- int field_8A4;
84- int m_fRotationBalance; // used in CHeli::TestSniperCollision
85- float m_fMoveDirection;
86- int field_8B4[6 ];
87- int field_8C8[6 ];
88- float m_fBurningTime;
89- CEntitySAInterface* m_pWheelCollisionEntity[4 ];
90- CVector m_vWheelCollisionPos[4 ];
91- char field_924;
92- char field_925;
93- char field_926;
94- char field_927;
95- char field_928;
96- char field_929;
97- char field_92A;
98- char field_92B;
99- char field_92C;
100- char field_92D;
101- char field_92E;
102- char field_92F;
103- char field_930;
104- char field_931;
105- char field_932;
106- char field_933;
107- char field_934;
108- char field_935;
109- char field_936;
110- char field_937;
111- char field_938;
112- char field_939;
113- char field_93A;
114- char field_93B;
115- char field_93C;
116- char field_93D;
117- char field_93E;
118- char field_93F;
119- int field_940;
120- int field_944;
121- float m_fDoomVerticalRotation;
122- float m_fDoomHorizontalRotation;
123- float m_fForcedOrientation;
124- float m_fUpDownLightAngle[2 ];
125- unsigned char m_nNumContactWheels;
126- unsigned char m_nWheelsOnGround;
127- char field_962;
128- char field_963;
129- float field_964;
130- int m_wheelFrictionState[4 ];
131- CFxSystemSAInterface* pNitroParticle[2 ];
132- char field_980;
133- char field_981;
134- short field_982;
135- float field_984;
50+ CDamageManagerSAInterface m_damageManager;
51+ CDoorSAInterface m_doors[MAX_DOORS];
52+ std::array< RwFrame*, CarNodes::Enum ::NUM_NODES> m_aCarNodes ;
53+ CBouncingPanelSAInterface m_panels[3 ];
54+ CDoorSAInterface m_swingingChassis;
55+ CColPointSAInterface m_wheelColPoint[MAX_WHEELS];
56+ float m_wheelsDistancesToGround1[4 ];
57+ float m_wheelsDistancesToGround2[4 ];
58+ float m_wheelCollisionState[4 ];
59+ float field_800;
60+ float field_804;
61+ float field_80C;
62+ int m_wheelSkidmarkType[4 ];
63+ bool m_wheelSkidmarkBloodState[4 ];
64+ bool m_wheelSkidmarkSomeBool[4 ];
65+ float m_wheelRotation[4 ];
66+ float m_wheelPosition[4 ];
67+ float m_wheelSpeed[4 ];
68+ int field_858[4 ];
69+ char taxiAvaliable;
70+ char field_869;
71+ short field_86A;
72+ unsigned short m_wMiscComponentAngle;
73+ unsigned short m_wVoodooSuspension;
74+ int m_dwBusDoorTimerEnd;
75+ int m_dwBusDoorTimerStart;
76+ float field_878;
77+ float wheelOffsetZ[4 ];
78+ int field_88C[3 ];
79+ float m_fFrontHeightAboveRoad;
80+ float m_fRearHeightAboveRoad;
81+ float m_fCarTraction;
82+ float m_fNitroValue;
83+ int field_8A4;
84+ int m_fRotationBalance; // used in CHeli::TestSniperCollision
85+ float m_fMoveDirection;
86+ int field_8B4[6 ];
87+ int field_8C8[6 ];
88+ float m_fBurningTime;
89+ CEntitySAInterface* m_pWheelCollisionEntity[4 ];
90+ CVector m_vWheelCollisionPos[4 ];
91+ char field_924;
92+ char field_925;
93+ char field_926;
94+ char field_927;
95+ char field_928;
96+ char field_929;
97+ char field_92A;
98+ char field_92B;
99+ char field_92C;
100+ char field_92D;
101+ char field_92E;
102+ char field_92F;
103+ char field_930;
104+ char field_931;
105+ char field_932;
106+ char field_933;
107+ char field_934;
108+ char field_935;
109+ char field_936;
110+ char field_937;
111+ char field_938;
112+ char field_939;
113+ char field_93A;
114+ char field_93B;
115+ char field_93C;
116+ char field_93D;
117+ char field_93E;
118+ char field_93F;
119+ int field_940;
120+ int field_944;
121+ float m_fDoomVerticalRotation;
122+ float m_fDoomHorizontalRotation;
123+ float m_fForcedOrientation;
124+ float m_fUpDownLightAngle[2 ];
125+ unsigned char m_nNumContactWheels;
126+ unsigned char m_nWheelsOnGround;
127+ char field_962;
128+ char field_963;
129+ float field_964;
130+ int m_wheelFrictionState[4 ];
131+ CFxSystemSAInterface* pNitroParticle[2 ];
132+ char field_980;
133+ char field_981;
134+ short field_982;
135+ float field_984;
136136};
137137static_assert (sizeof (CAutomobileSAInterface) == 0x988 , " Invalid size for CAutomobileSAInterface" );
138138
@@ -143,4 +143,11 @@ class CAutomobileSA : public virtual CAutomobile, public virtual CVehicleSA
143143 CAutomobileSA (CAutomobileSAInterface* pInterface);
144144
145145 CAutomobileSAInterface* GetAutomobileInterface () { return reinterpret_cast <CAutomobileSAInterface*>(GetInterface ()); }
146+
147+ static void StaticSetHooks ();
148+
149+ private:
150+ static void PreRender_End (CAutomobileSAInterface* vehicleInterface);
151+
152+ static bool HasFeatureEnabled (CAutomobileSAInterface* vehicleInterface, VehicleFeatures::Enum feature);
146153};
0 commit comments