From 00461224a94692f5cdafc1b4309923a5539f1113 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 6 Jul 2019 19:44:00 +0200 Subject: some work on vehicles --- src/entities/Automobile.h | 63 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 14 deletions(-) (limited to 'src/entities/Automobile.h') diff --git a/src/entities/Automobile.h b/src/entities/Automobile.h index 64e411ce..b6617f4b 100644 --- a/src/entities/Automobile.h +++ b/src/entities/Automobile.h @@ -1,26 +1,61 @@ #pragma once #include "DamageManager.h" -#include "Door.h" -#include "RwHelper.h" #include "Vehicle.h" +struct CDoor +{ + float m_fAngleWhenOpened; + float m_fAngleWhenClosed; + char field_8; + char field_9; + char field_10; + char field_11; + float m_fAngle; + float m_fPreviousAngle; + float m_fAngularVelocity; + CVector m_vecVelocity; +}; + class CAutomobile : public CVehicle { public: // 0x288 - CDamageManager m_DamageManager; - CDoor m_aDoors[6]; - RwFrame *m_apModelNodes[20]; - uint8 stuff1[160]; - float m_afWheelSuspDist[4]; - uint8 stuff2[44]; - float m_afWheelRotation[4]; - uint8 stuff3[200]; + CDamageManager Damage; + CDoor Doors[6]; + RwFrame *m_aCarNodes[NUM_CAR_NODES]; + CColPoint m_aWheelColPoints[4]; + float m_aWheelDist[4]; + float m_aWheelDist_2[4]; + float m_aWheelSkidThing[4]; + int field_49C; + bool m_aWheelSkidmarkMuddy[4]; + bool m_aWheelSkidmarkBloody[4]; + float m_aWheelRotation[4]; + float m_aWheelPosition[4]; + float m_aWheelSpeed[4]; + uint8 stuff3[12]; + uint32 m_nBusDoorTimerEnd; + uint32 m_nBusDoorTimerStart; + float m_aSuspensionRange[4]; + float m_aSuspensionLineLength[4]; + float m_fHeightAboveRoad; + float m_fImprovedHandling; + uint8 stuff6[32]; + CPhysical *m_aGroundPhysical[4]; // physicals touching wheels + CVector m_aGroundOffset[4]; // from ground object to colpoint + CEntity *m_pBlowUpEntity; + float m_weaponThingA; // TODO + float m_weaponThingB; // TODO float m_fCarGunLR; - uint8 stuff4[13]; - uint8 m_nDriveWheelsOnGround; - uint8 stuff5[22]; + float m_fCarGunUD; + float m_fWindScreenRotation; + uint8 stuff4[4]; + uint8 m_nWheelsOnGround_2; + uint8 m_nWheelsOnGround; + uint8 m_nWheelsOnGroundPrev; + uint8 stuff5[5]; + int32 m_aWheelState[4]; CAutomobile(int, uint8); CAutomobile* ctor(int, uint8); @@ -30,4 +65,4 @@ public: void dtor() { this->CAutomobile::~CAutomobile(); } }; static_assert(sizeof(CAutomobile) == 0x5A8, "CAutomobile: error"); -static_assert(offsetof(CAutomobile, m_afWheelSuspDist) == 0x46C, "CAutomobile: error"); +static_assert(offsetof(CAutomobile, m_aWheelDist) == 0x46C, "CAutomobile: error"); -- cgit v1.2.3