Fix unlimited rotation in Phnom Penh '86

This commit is contained in:
Sergeanur 2021-01-04 10:58:12 +02:00
parent 33f467453e
commit 1efbd7ead2
2 changed files with 8 additions and 5 deletions

View file

@ -1191,7 +1191,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
CollectParameters(&m_nIp, 8); CollectParameters(&m_nIp, 8);
CPed *pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]); CPed *pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
CVehicle *pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]); CVehicle *pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
pPed->AttachPedToEntity(pVehicle, *(CVector*)&ScriptParams[2], ScriptParams[5], DEGTORAD(ScriptParams[6]), (eWeaponType)ScriptParams[7]); pPed->AttachPedToEntity(pVehicle, *(CVector*)&ScriptParams[2], ScriptParams[5], DEGTORAD(*(float*)&ScriptParams[6]), (eWeaponType)ScriptParams[7]);
return 0; return 0;
} }
case COMMAND_DETACH_CHAR_FROM_CAR: case COMMAND_DETACH_CHAR_FROM_CAR:

View file

@ -2370,8 +2370,10 @@ CCam::Process_M16_1stPerson(const CVector &CameraTarget, float, float, float)
Beta += SQR(LookLeftRight/100.0f)*xdir*0.8f/14.0f * FOV/80.0f * CTimer::GetTimeStep(); Beta += SQR(LookLeftRight/100.0f)*xdir*0.8f/14.0f * FOV/80.0f * CTimer::GetTimeStep();
Alpha += SQR(LookUpDown/150.0f)*ydir*1.0f/14.0f * FOV/80.0f * CTimer::GetTimeStep(); Alpha += SQR(LookUpDown/150.0f)*ydir*1.0f/14.0f * FOV/80.0f * CTimer::GetTimeStep();
} }
while(Beta >= PI) Beta -= 2*PI; if (!isAttached) {
while(Beta < -PI) Beta += 2*PI; while(Beta >= TWOPI) Beta -= TWOPI;
while(Beta < 0) Beta += TWOPI;
}
if(Alpha > DEGTORAD(60.0f)) Alpha = DEGTORAD(60.0f); if(Alpha > DEGTORAD(60.0f)) Alpha = DEGTORAD(60.0f);
else if(Alpha < -DEGTORAD(89.5f)) Alpha = -DEGTORAD(89.5f); else if(Alpha < -DEGTORAD(89.5f)) Alpha = -DEGTORAD(89.5f);
@ -2414,13 +2416,14 @@ CCam::Process_M16_1stPerson(const CVector &CameraTarget, float, float, float)
} }
} }
}else{ }else{
while(Beta < -PI) Beta += 2*PI; while(Beta < -PI) Beta += TWOPI;
while(Beta >= PI) Beta -= 2*PI; while(Beta >= PI) Beta -= TWOPI;
} }
mat = TargetPed->m_attachedTo->GetMatrix(); mat = TargetPed->m_attachedTo->GetMatrix();
rot.SetRotateX(Alpha); rot.SetRotateX(Alpha);
switch(TargetPed->m_attachType){ switch(TargetPed->m_attachType){
case 0: rot.RotateZ(Beta); break;
case 1: rot.RotateZ(Beta + HALFPI); break; case 1: rot.RotateZ(Beta + HALFPI); break;
case 2: rot.RotateZ(Beta + PI); break; case 2: rot.RotateZ(Beta + PI); break;
case 3: rot.RotateZ(Beta - HALFPI); break; case 3: rot.RotateZ(Beta - HALFPI); break;