mirror of
https://github.com/GTAmodding/re3.git
synced 2024-12-25 18:55:40 +00:00
Merge pull request #885 from waliedyassen/miami-automobile-fixes
Few bug fixes in CAutomobile
This commit is contained in:
commit
81aaddb0e7
3 changed files with 20 additions and 26 deletions
|
@ -938,7 +938,7 @@ CAutomobile::ProcessControl(void)
|
||||||
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceB);
|
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceB);
|
||||||
WheelState[CARWHEEL_FRONT_LEFT] = m_aWheelState[CARWHEEL_FRONT_LEFT];
|
WheelState[CARWHEEL_FRONT_LEFT] = m_aWheelState[CARWHEEL_FRONT_LEFT];
|
||||||
|
|
||||||
if(Damage.GetWheelStatus(VEHWHEEL_FRONT_LEFT) == WHEEL_STATUS_BURST)
|
if(Damage.GetWheelStatus(CARWHEEL_FRONT_LEFT) == WHEEL_STATUS_BURST)
|
||||||
ProcessWheel(wheelFwd, wheelRight,
|
ProcessWheel(wheelFwd, wheelRight,
|
||||||
contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
|
contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
|
||||||
m_nWheelsOnGround, fThrust,
|
m_nWheelsOnGround, fThrust,
|
||||||
|
@ -981,7 +981,7 @@ CAutomobile::ProcessControl(void)
|
||||||
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceB);
|
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceB);
|
||||||
WheelState[CARWHEEL_FRONT_RIGHT] = m_aWheelState[CARWHEEL_FRONT_RIGHT];
|
WheelState[CARWHEEL_FRONT_RIGHT] = m_aWheelState[CARWHEEL_FRONT_RIGHT];
|
||||||
|
|
||||||
if(Damage.GetWheelStatus(VEHWHEEL_FRONT_RIGHT) == WHEEL_STATUS_BURST)
|
if(Damage.GetWheelStatus(CARWHEEL_FRONT_RIGHT) == WHEEL_STATUS_BURST)
|
||||||
ProcessWheel(wheelFwd, wheelRight,
|
ProcessWheel(wheelFwd, wheelRight,
|
||||||
contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
|
contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
|
||||||
m_nWheelsOnGround, fThrust,
|
m_nWheelsOnGround, fThrust,
|
||||||
|
@ -1085,7 +1085,7 @@ CAutomobile::ProcessControl(void)
|
||||||
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_REAR_LEFT].surfaceB);
|
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_REAR_LEFT].surfaceB);
|
||||||
WheelState[CARWHEEL_REAR_LEFT] = m_aWheelState[CARWHEEL_REAR_LEFT];
|
WheelState[CARWHEEL_REAR_LEFT] = m_aWheelState[CARWHEEL_REAR_LEFT];
|
||||||
|
|
||||||
if(Damage.GetWheelStatus(VEHWHEEL_REAR_LEFT) == WHEEL_STATUS_BURST)
|
if(Damage.GetWheelStatus(CARWHEEL_REAR_LEFT) == WHEEL_STATUS_BURST)
|
||||||
ProcessWheel(wheelFwd, wheelRight,
|
ProcessWheel(wheelFwd, wheelRight,
|
||||||
contactSpeeds[CARWHEEL_REAR_LEFT], contactPoints[CARWHEEL_REAR_LEFT],
|
contactSpeeds[CARWHEEL_REAR_LEFT], contactPoints[CARWHEEL_REAR_LEFT],
|
||||||
m_nWheelsOnGround, fThrust,
|
m_nWheelsOnGround, fThrust,
|
||||||
|
@ -1131,7 +1131,7 @@ CAutomobile::ProcessControl(void)
|
||||||
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_REAR_RIGHT].surfaceB);
|
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_REAR_RIGHT].surfaceB);
|
||||||
WheelState[CARWHEEL_REAR_RIGHT] = m_aWheelState[CARWHEEL_REAR_RIGHT];
|
WheelState[CARWHEEL_REAR_RIGHT] = m_aWheelState[CARWHEEL_REAR_RIGHT];
|
||||||
|
|
||||||
if(Damage.GetWheelStatus(VEHWHEEL_REAR_RIGHT) == WHEEL_STATUS_BURST)
|
if(Damage.GetWheelStatus(CARWHEEL_REAR_RIGHT) == WHEEL_STATUS_BURST)
|
||||||
ProcessWheel(wheelFwd, wheelRight,
|
ProcessWheel(wheelFwd, wheelRight,
|
||||||
contactSpeeds[CARWHEEL_REAR_RIGHT], contactPoints[CARWHEEL_REAR_RIGHT],
|
contactSpeeds[CARWHEEL_REAR_RIGHT], contactPoints[CARWHEEL_REAR_RIGHT],
|
||||||
m_nWheelsOnGround, fThrust,
|
m_nWheelsOnGround, fThrust,
|
||||||
|
@ -1226,7 +1226,7 @@ CAutomobile::ProcessControl(void)
|
||||||
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceB);
|
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceB);
|
||||||
WheelState[CARWHEEL_FRONT_LEFT] = m_aWheelState[CARWHEEL_FRONT_LEFT];
|
WheelState[CARWHEEL_FRONT_LEFT] = m_aWheelState[CARWHEEL_FRONT_LEFT];
|
||||||
|
|
||||||
if(Damage.GetWheelStatus(VEHWHEEL_FRONT_LEFT) == WHEEL_STATUS_BURST)
|
if(Damage.GetWheelStatus(CARWHEEL_FRONT_LEFT) == WHEEL_STATUS_BURST)
|
||||||
ProcessWheel(wheelFwd, wheelRight,
|
ProcessWheel(wheelFwd, wheelRight,
|
||||||
contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
|
contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
|
||||||
m_nWheelsOnGround, fThrust,
|
m_nWheelsOnGround, fThrust,
|
||||||
|
@ -1269,7 +1269,7 @@ CAutomobile::ProcessControl(void)
|
||||||
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceB);
|
adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceB);
|
||||||
WheelState[CARWHEEL_FRONT_RIGHT] = m_aWheelState[CARWHEEL_FRONT_RIGHT];
|
WheelState[CARWHEEL_FRONT_RIGHT] = m_aWheelState[CARWHEEL_FRONT_RIGHT];
|
||||||
|
|
||||||
if(Damage.GetWheelStatus(VEHWHEEL_FRONT_RIGHT) == WHEEL_STATUS_BURST)
|
if(Damage.GetWheelStatus(CARWHEEL_FRONT_RIGHT) == WHEEL_STATUS_BURST)
|
||||||
ProcessWheel(wheelFwd, wheelRight,
|
ProcessWheel(wheelFwd, wheelRight,
|
||||||
contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
|
contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
|
||||||
m_nWheelsOnGround, fThrust,
|
m_nWheelsOnGround, fThrust,
|
||||||
|
@ -1720,11 +1720,11 @@ CAutomobile::PreRender(void)
|
||||||
int i, j, n;
|
int i, j, n;
|
||||||
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
|
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
|
||||||
|
|
||||||
if(GetModelIndex() == MI_RHINO && m_aCarNodes[CAR_BONNET]){
|
if(GetModelIndex() == MI_RHINO && m_aCarNodes[CAR_WINDSCREEN]){
|
||||||
// Rotate Rhino turret
|
// Rotate Rhino turret
|
||||||
CMatrix m;
|
CMatrix m;
|
||||||
CVector p;
|
CVector p;
|
||||||
m.Attach(RwFrameGetMatrix(m_aCarNodes[CAR_BONNET]));
|
m.Attach(RwFrameGetMatrix(m_aCarNodes[CAR_WINDSCREEN]));
|
||||||
p = m.GetPosition();
|
p = m.GetPosition();
|
||||||
m.SetRotateZ(m_fCarGunLR);
|
m.SetRotateZ(m_fCarGunLR);
|
||||||
m.Translate(p);
|
m.Translate(p);
|
||||||
|
@ -3188,7 +3188,11 @@ CAutomobile::ProcessControlInputs(uint8 pad)
|
||||||
|
|
||||||
// Brake if player isn't in control
|
// Brake if player isn't in control
|
||||||
// BUG: game always uses pad 0 here
|
// BUG: game always uses pad 0 here
|
||||||
|
#ifdef FIX_BUGS
|
||||||
if(CPad::GetPad(pad)->ArePlayerControlsDisabled()){
|
if(CPad::GetPad(pad)->ArePlayerControlsDisabled()){
|
||||||
|
#else
|
||||||
|
if(CPad::GetPad(0)->ArePlayerControlsDisabled()){
|
||||||
|
#endif
|
||||||
m_fBrakePedal = 1.0f;
|
m_fBrakePedal = 1.0f;
|
||||||
bIsHandbrakeOn = true;
|
bIsHandbrakeOn = true;
|
||||||
m_fGasPedal = 0.0f;
|
m_fGasPedal = 0.0f;
|
||||||
|
@ -3206,7 +3210,7 @@ void
|
||||||
CAutomobile::FireTruckControl(void)
|
CAutomobile::FireTruckControl(void)
|
||||||
{
|
{
|
||||||
if(this == FindPlayerVehicle()){
|
if(this == FindPlayerVehicle()){
|
||||||
if(!CPad::GetPad(0)->GetWeapon())
|
if(!CPad::GetPad(0)->GetCarGunFired())
|
||||||
return;
|
return;
|
||||||
#ifdef FREE_CAM
|
#ifdef FREE_CAM
|
||||||
if (!CCamera::bFreeCam)
|
if (!CCamera::bFreeCam)
|
||||||
|
@ -3835,7 +3839,7 @@ CAutomobile::DoDriveByShootings(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CWeapon *weapon = pDriver->GetWeapon();
|
CWeapon *weapon = pDriver->GetWeapon();
|
||||||
if(CWeaponInfo::GetWeaponInfo(weapon->m_eWeaponType)->m_nWeaponSlot != 5)
|
if(CWeaponInfo::GetWeaponInfo(weapon->m_eWeaponType)->m_nWeaponSlot != WEAPONSLOT_SUBMACHINEGUN)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
weapon->Update(pDriver->m_audioEntityId, nil);
|
weapon->Update(pDriver->m_audioEntityId, nil);
|
||||||
|
@ -4862,10 +4866,10 @@ CAutomobile::BurstTyre(uint8 wheel, bool applyForces)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch(wheel){
|
switch(wheel){
|
||||||
case CAR_PIECE_WHEEL_LF: wheel = VEHWHEEL_FRONT_LEFT; break;
|
case CAR_PIECE_WHEEL_LF: wheel = CARWHEEL_FRONT_LEFT; break;
|
||||||
case CAR_PIECE_WHEEL_LR: wheel = VEHWHEEL_REAR_LEFT; break;
|
case CAR_PIECE_WHEEL_RF: wheel = CARWHEEL_FRONT_RIGHT; break;
|
||||||
case CAR_PIECE_WHEEL_RF: wheel = VEHWHEEL_FRONT_RIGHT; break;
|
case CAR_PIECE_WHEEL_LR: wheel = CARWHEEL_REAR_LEFT; break;
|
||||||
case CAR_PIECE_WHEEL_RR: wheel = VEHWHEEL_REAR_RIGHT; break;
|
case CAR_PIECE_WHEEL_RR: wheel = CARWHEEL_REAR_RIGHT; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int status = Damage.GetWheelStatus(wheel);
|
int status = Damage.GetWheelStatus(wheel);
|
||||||
|
@ -5074,7 +5078,7 @@ CAutomobile::BlowUpCarsInPath(void)
|
||||||
m_aCollisionRecords[i]->GetModelIndex() != MI_RHINO &&
|
m_aCollisionRecords[i]->GetModelIndex() != MI_RHINO &&
|
||||||
!m_aCollisionRecords[i]->bRenderScorched){
|
!m_aCollisionRecords[i]->bRenderScorched){
|
||||||
if(this == FindPlayerVehicle())
|
if(this == FindPlayerVehicle())
|
||||||
CEventList::RegisterEvent(EVENT_EXPLOSION, EVENT_ENTITY_VEHICLE, this, FindPlayerPed(), 2000);
|
CEventList::RegisterEvent(EVENT_EXPLOSION, EVENT_ENTITY_VEHICLE, m_aCollisionRecords[i], FindPlayerPed(), 2000);
|
||||||
((CVehicle*)m_aCollisionRecords[i])->BlowUpCar(this);
|
((CVehicle*)m_aCollisionRecords[i])->BlowUpCar(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5764,7 +5768,7 @@ CAutomobile::PopBoot(void)
|
||||||
case DOOR_STATUS_OK:
|
case DOOR_STATUS_OK:
|
||||||
case DOOR_STATUS_SMASHED:
|
case DOOR_STATUS_SMASHED:
|
||||||
Doors[DOOR_BOOT].m_fAngle = Doors[DOOR_BOOT].m_fMinAngle;
|
Doors[DOOR_BOOT].m_fAngle = Doors[DOOR_BOOT].m_fMinAngle;
|
||||||
CMatrix mat(RwFrameGetMatrix(m_aCarNodes[DOOR_BOOT]));
|
CMatrix mat(RwFrameGetMatrix(m_aCarNodes[CAR_BOOT]));
|
||||||
CVector pos = mat.GetPosition();
|
CVector pos = mat.GetPosition();
|
||||||
float axes[3] = { 0.0f, 0.0f, 0.0f };
|
float axes[3] = { 0.0f, 0.0f, 0.0f };
|
||||||
axes[Doors[DOOR_BOOT].m_nAxis] = Doors[DOOR_BOOT].m_fAngle;
|
axes[Doors[DOOR_BOOT].m_nAxis] = Doors[DOOR_BOOT].m_fAngle;
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
|
|
||||||
class CObject;
|
class CObject;
|
||||||
|
|
||||||
// These are used for all the wheel arrays
|
|
||||||
// DON'T confuse with VEHWHEEL, which are vehicle components
|
|
||||||
enum {
|
enum {
|
||||||
CARWHEEL_FRONT_LEFT,
|
CARWHEEL_FRONT_LEFT,
|
||||||
CARWHEEL_REAR_LEFT,
|
CARWHEEL_REAR_LEFT,
|
||||||
|
|
|
@ -102,14 +102,6 @@ enum eLights
|
||||||
VEHLIGHT_REAR_RIGHT,
|
VEHLIGHT_REAR_RIGHT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eWheels
|
|
||||||
{
|
|
||||||
VEHWHEEL_FRONT_LEFT,
|
|
||||||
VEHWHEEL_FRONT_RIGHT,
|
|
||||||
VEHWHEEL_REAR_LEFT,
|
|
||||||
VEHWHEEL_REAR_RIGHT,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CAR_PIECE_BONNET = 1,
|
CAR_PIECE_BONNET = 1,
|
||||||
|
|
Loading…
Reference in a new issue