Merge pull request #334 from erorcun/erorcun

fix doors' swing direction and vehicle-bodycast collision
This commit is contained in:
erorcun 2020-02-23 02:08:12 +03:00 committed by GitHub
commit ff8fe7a261
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 9 deletions

View File

@ -9,7 +9,7 @@ enum {
PLAYERCONTROL_DISABLED_10 = 16, PLAYERCONTROL_DISABLED_10 = 16,
PLAYERCONTROL_DISABLED_20 = 32, // used on CPlayerInfo::MakePlayerSafe PLAYERCONTROL_DISABLED_20 = 32, // used on CPlayerInfo::MakePlayerSafe
PLAYERCONTROL_DISABLED_40 = 64, // used on phone calls PLAYERCONTROL_DISABLED_40 = 64, // used on phone calls
PLAYERCONTROL_DISABLED_80 = 128, PLAYERCONTROL_DISABLED_80 = 128,// used on cutscenes
}; };
class CControllerState class CControllerState

View File

@ -2177,7 +2177,7 @@ CAutomobile::ProcessEntityCollision(CEntity *ent, CColPoint *colpoints)
if(phys->bIsStatic){ if(phys->bIsStatic){
phys->bIsStatic = false; phys->bIsStatic = false;
phys->m_nStaticFrames = 0; phys->m_nStaticFrames = 0;
phys->ApplyMoveForce(m_vecMoveSpeed / speed); phys->ApplyMoveForce(m_vecMoveSpeed / Sqrt(speed));
phys->AddToMovingList(); phys->AddToMovingList();
} }
} }
@ -2318,7 +2318,7 @@ 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
if(CPad::GetPad(pad)->DisablePlayerControls){ if(CPad::GetPad(pad)->ArePlayerControlsDisabled()){
m_fBrakePedal = 1.0f; m_fBrakePedal = 1.0f;
bIsHandbrakeOn = true; bIsHandbrakeOn = true;
m_fGasPedal = 0.0f; m_fGasPedal = 0.0f;

View File

@ -119,7 +119,7 @@ CDamageManager::GetComponentGroup(tComponent component, tComponentGroup *compone
return true; return true;
}else if(component >= COMPONENT_DEFAULT){ }else if(component >= COMPONENT_DEFAULT){
*componentGroup = COMPGROUP_DEFAULT; *componentGroup = COMPGROUP_DEFAULT;
*subComp = component - COMPONENT_DEFAULT; *subComp = COMPONENT_DEFAULT;
return true; return true;
}else }else
return false; return false;
@ -141,7 +141,7 @@ bool
CDamageManager::ProgressDoorDamage(uint8 door) CDamageManager::ProgressDoorDamage(uint8 door)
{ {
int status = GetDoorStatus(door); int status = GetDoorStatus(door);
if(status == 3) if(status == PANEL_STATUS_MISSING)
return false; return false;
SetDoorStatus(door, status+1); SetDoorStatus(door, status+1);
return true; return true;
@ -163,7 +163,7 @@ bool
CDamageManager::ProgressPanelDamage(uint8 panel) CDamageManager::ProgressPanelDamage(uint8 panel)
{ {
int status = GetPanelStatus(panel); int status = GetPanelStatus(panel);
if(status == 3) if(status == DOOR_STATUS_MISSING)
return false; return false;
SetPanelStatus(panel, status+1); SetPanelStatus(panel, status+1);
return true; return true;
@ -197,7 +197,7 @@ bool
CDamageManager::ProgressWheelDamage(uint8 wheel) CDamageManager::ProgressWheelDamage(uint8 wheel)
{ {
int status = GetWheelStatus(wheel); int status = GetWheelStatus(wheel);
if(status == 3) if(status == WHEEL_STATUS_MISSING)
return false; return false;
SetWheelStatus(wheel, status+1); SetWheelStatus(wheel, status+1);
return true; return true;

View File

@ -47,9 +47,9 @@ CDoor::Process(CVehicle *vehicle)
case 2: // z-axis case 2: // z-axis
if(m_nDirn) if(m_nDirn)
fSpeedDiff = -(vecSpeedDiff.x + vecSpeedDiff.y); fSpeedDiff = -(vecSpeedDiff.y + vecSpeedDiff.x);
else else
fSpeedDiff = vecSpeedDiff.x + vecSpeedDiff.y; fSpeedDiff = vecSpeedDiff.y - vecSpeedDiff.x;
break; break;
} }
fSpeedDiff = clamp(fSpeedDiff, -0.2f, 0.2f); fSpeedDiff = clamp(fSpeedDiff, -0.2f, 0.2f);