CCam fixes yet again
This commit is contained in:
parent
e6d2b49121
commit
5f3eb76cff
@ -432,11 +432,11 @@ CCam::ProcessSpecialHeightRoutines(void)
|
|||||||
float DistScale = (2.1f - dist)/2.1f;
|
float DistScale = (2.1f - dist)/2.1f;
|
||||||
if(Mode == MODE_FOLLOWPED){
|
if(Mode == MODE_FOLLOWPED){
|
||||||
if(TheCamera.PedZoomIndicator == CAM_ZOOM_1)
|
if(TheCamera.PedZoomIndicator == CAM_ZOOM_1)
|
||||||
Offset = 0.45*DistScale + PedZDist;
|
Offset = 0.45f*DistScale + PedZDist;
|
||||||
if(TheCamera.PedZoomIndicator == CAM_ZOOM_2)
|
if(TheCamera.PedZoomIndicator == CAM_ZOOM_2)
|
||||||
Offset = 0.35*DistScale + PedZDist;
|
Offset = 0.35f*DistScale + PedZDist;
|
||||||
if(TheCamera.PedZoomIndicator == CAM_ZOOM_3)
|
if(TheCamera.PedZoomIndicator == CAM_ZOOM_3)
|
||||||
Offset = 0.25*DistScale + PedZDist;
|
Offset = 0.25f*DistScale + PedZDist;
|
||||||
if(Abs(CGeneral::GetRadianAngleBetweenPoints(CamToPed.x, CamToPed.y, CamToTarget.x, CamToTarget.y)) > HALFPI)
|
if(Abs(CGeneral::GetRadianAngleBetweenPoints(CamToPed.x, CamToPed.y, CamToTarget.x, CamToTarget.y)) > HALFPI)
|
||||||
Offset += 0.3f;
|
Offset += 0.3f;
|
||||||
m_fPedBetweenCameraHeightOffset = Offset + 1.3f;
|
m_fPedBetweenCameraHeightOffset = Offset + 1.3f;
|
||||||
@ -808,7 +808,7 @@ CCam::ClipIfPedInFrontOfPlayer(void)
|
|||||||
while(DeltaAngle >= PI) DeltaAngle -= 2*PI;
|
while(DeltaAngle >= PI) DeltaAngle -= 2*PI;
|
||||||
while(DeltaAngle < -PI) DeltaAngle += 2*PI;
|
while(DeltaAngle < -PI) DeltaAngle += 2*PI;
|
||||||
if(Abs(DeltaAngle) < HALFPI){
|
if(Abs(DeltaAngle) < HALFPI){
|
||||||
fDist = Sqrt(SQR(vDist.x) + SQR(vDist.y));
|
fDist = vDist.Magnitude2D();
|
||||||
if(fDist < 1.25f){
|
if(fDist < 1.25f){
|
||||||
Near = DEFAULT_NEAR - (1.25f - fDist);
|
Near = DEFAULT_NEAR - (1.25f - fDist);
|
||||||
if(Near < 0.05f)
|
if(Near < 0.05f)
|
||||||
@ -835,9 +835,9 @@ CCam::KeepTrackOfTheSpeed(const CVector &source, const CVector &target, const CV
|
|||||||
PreviousUp = up;
|
PreviousUp = up;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cvecSourceSpeedOverOneFrame = PreviousSource - source;
|
m_cvecSourceSpeedOverOneFrame = source - PreviousSource;
|
||||||
m_cvecTargetSpeedOverOneFrame = PreviousTarget - target;
|
m_cvecTargetSpeedOverOneFrame = target - PreviousTarget;
|
||||||
m_cvecUpOverOneFrame = PreviousUp - up;
|
m_cvecUpOverOneFrame = up - PreviousUp;
|
||||||
m_fFovSpeedOverOneFrame = fov - PreviousFov;
|
m_fFovSpeedOverOneFrame = fov - PreviousFov;
|
||||||
m_fBetaSpeedOverOneFrame = beta - PreviousBeta;
|
m_fBetaSpeedOverOneFrame = beta - PreviousBeta;
|
||||||
MakeAngleLessThan180(m_fBetaSpeedOverOneFrame);
|
MakeAngleLessThan180(m_fBetaSpeedOverOneFrame);
|
||||||
@ -859,17 +859,13 @@ CCam::Using3rdPersonMouseCam(void)
|
|||||||
(Mode == MODE_FOLLOWPED ||
|
(Mode == MODE_FOLLOWPED ||
|
||||||
TheCamera.m_bPlayerIsInGarage &&
|
TheCamera.m_bPlayerIsInGarage &&
|
||||||
FindPlayerPed() && FindPlayerPed()->m_nPedState != PED_DRIVING &&
|
FindPlayerPed() && FindPlayerPed()->m_nPedState != PED_DRIVING &&
|
||||||
Mode != MODE_TOPDOWN && this->CamTargetEntity == FindPlayerPed());
|
Mode != MODE_TOPDOWN && CamTargetEntity == FindPlayerPed());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CCam::GetWeaponFirstPersonOn(void)
|
CCam::GetWeaponFirstPersonOn(void)
|
||||||
{
|
{
|
||||||
CEntity *target = this->CamTargetEntity;
|
return CamTargetEntity && CamTargetEntity->IsPed() && ((CPed*)CamTargetEntity)->GetWeapon()->m_bAddRotOffset;
|
||||||
if (target && target->IsPed())
|
|
||||||
return ((CPed*)target)->GetWeapon()->m_bAddRotOffset;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@ -2846,7 +2842,7 @@ CCam::Process_1rstPersonPedOnPC(const CVector&, float TargetOrientation, float,
|
|||||||
CVector Fwd = CamTargetEntity->GetForward();
|
CVector Fwd = CamTargetEntity->GetForward();
|
||||||
Fwd.z = 0.0f;
|
Fwd.z = 0.0f;
|
||||||
Fwd.Normalise();
|
Fwd.Normalise();
|
||||||
HeadPos = (HeadDelta*1.23f*Fwd + CamTargetEntity->GetPosition());
|
HeadPos = HeadDelta*1.23f*Fwd + CamTargetEntity->GetPosition();
|
||||||
HeadPos.z += 0.59f;
|
HeadPos.z += 0.59f;
|
||||||
}
|
}
|
||||||
Source = HeadPos;
|
Source = HeadPos;
|
||||||
@ -3183,6 +3179,12 @@ CCam::Process_Syphon_Crim_In_Front(const CVector &CameraTarget, float, float, fl
|
|||||||
while(AimingAngle >= PI) AimingAngle -= 2*PI;
|
while(AimingAngle >= PI) AimingAngle -= 2*PI;
|
||||||
while(AimingAngle < -PI) AimingAngle += 2*PI;
|
while(AimingAngle < -PI) AimingAngle += 2*PI;
|
||||||
|
|
||||||
|
if(ResetStatics){
|
||||||
|
if(AimingAngle > 0.0f)
|
||||||
|
m_fPlayerInFrontSyphonAngleOffSet = -m_fPlayerInFrontSyphonAngleOffSet;
|
||||||
|
ResetStatics = false;
|
||||||
|
}
|
||||||
|
|
||||||
if(TheCamera.PlayerWeaponMode.Mode == MODE_SYPHON)
|
if(TheCamera.PlayerWeaponMode.Mode == MODE_SYPHON)
|
||||||
Beta = AimingAngle + m_fPlayerInFrontSyphonAngleOffSet;
|
Beta = AimingAngle + m_fPlayerInFrontSyphonAngleOffSet;
|
||||||
|
|
||||||
@ -3577,8 +3579,7 @@ CCam::Process_FlyBy(const CVector&, float, float, float)
|
|||||||
CVector Left = CrossProduct(Up, Front);
|
CVector Left = CrossProduct(Up, Front);
|
||||||
Up = CrossProduct(Front, Left);
|
Up = CrossProduct(Front, Left);
|
||||||
Up.Normalise();
|
Up.Normalise();
|
||||||
FOV = PsuedoFOV;
|
}else if(uiTime >= uiFinishTime){
|
||||||
}else{
|
|
||||||
// end
|
// end
|
||||||
ArrayMarkerSource = (TheCamera.m_arrPathArray[2].m_arr_PathData[0] - 1)*10 + 1;
|
ArrayMarkerSource = (TheCamera.m_arrPathArray[2].m_arr_PathData[0] - 1)*10 + 1;
|
||||||
ArrayMarkerFront = (TheCamera.m_arrPathArray[3].m_arr_PathData[0] - 1)*10 + 1;
|
ArrayMarkerFront = (TheCamera.m_arrPathArray[3].m_arr_PathData[0] - 1)*10 + 1;
|
||||||
@ -3605,8 +3606,8 @@ CCam::Process_FlyBy(const CVector&, float, float, float)
|
|||||||
CVector Left = CrossProduct(Up, Front);
|
CVector Left = CrossProduct(Up, Front);
|
||||||
Up = CrossProduct(Front, Left);
|
Up = CrossProduct(Front, Left);
|
||||||
Up.Normalise();
|
Up.Normalise();
|
||||||
FOV = PsuedoFOV;
|
|
||||||
}
|
}
|
||||||
|
FOV = PsuedoFOV;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -3629,6 +3630,7 @@ CCam::Process_WheelCam(const CVector&, float, float, float)
|
|||||||
CVector Right = CrossProduct(Front, NewUp);
|
CVector Right = CrossProduct(Front, NewUp);
|
||||||
Right.Normalise();
|
Right.Normalise();
|
||||||
NewUp = CrossProduct(Right, Front);
|
NewUp = CrossProduct(Right, Front);
|
||||||
|
NewUp.Normalise();
|
||||||
|
|
||||||
float Roll = Cos((CTimer::GetTimeInMilliseconds()&0x1FFFF)/(float)0x1FFFF * TWOPI);
|
float Roll = Cos((CTimer::GetTimeInMilliseconds()&0x1FFFF)/(float)0x1FFFF * TWOPI);
|
||||||
Up = Cos(Roll*0.4f)*NewUp + Sin(Roll*0.4f)*Right;
|
Up = Cos(Roll*0.4f)*NewUp + Sin(Roll*0.4f)*Right;
|
||||||
@ -3652,7 +3654,7 @@ CCam::Process_Fixed(const CVector &CameraTarget, float, float, float)
|
|||||||
if(TheCamera.m_bUseSpecialFovTrain)
|
if(TheCamera.m_bUseSpecialFovTrain)
|
||||||
FOV = TheCamera.m_fFovForTrain;
|
FOV = TheCamera.m_fFovForTrain;
|
||||||
|
|
||||||
if(CMenuManager::m_ControlMethod == 0 && Using3rdPersonMouseCam()){
|
if(CMenuManager::m_ControlMethod == CONTROL_STANDARD && Using3rdPersonMouseCam()){
|
||||||
CPed *player = FindPlayerPed();
|
CPed *player = FindPlayerPed();
|
||||||
if(player && player->CanStrafeOrMouseControl()){
|
if(player && player->CanStrafeOrMouseControl()){
|
||||||
float Heading = Front.Heading();
|
float Heading = Front.Heading();
|
||||||
@ -3741,14 +3743,14 @@ CCam::Process_Debug(const CVector&, float, float, float)
|
|||||||
RwCameraSetNearClipPlane(Scene.camera, DEFAULT_NEAR);
|
RwCameraSetNearClipPlane(Scene.camera, DEFAULT_NEAR);
|
||||||
FOV = DefaultFOV;
|
FOV = DefaultFOV;
|
||||||
Alpha += DEGTORAD(CPad::GetPad(1)->GetLeftStickY()) / 50.0f;
|
Alpha += DEGTORAD(CPad::GetPad(1)->GetLeftStickY()) / 50.0f;
|
||||||
Beta += DEGTORAD(CPad::GetPad(1)->GetLeftStickX())*1.5f / 19.0f;
|
Beta += DEGTORAD(CPad::GetPad(1)->GetLeftStickX()*1.5f) / 19.0f;
|
||||||
if(CPad::GetPad(0)->GetLeftMouse()){
|
if(CPad::GetPad(0)->GetLeftMouse()){
|
||||||
Alpha += DEGTORAD(CPad::GetPad(0)->GetMouseY()/2.0f);
|
Alpha += DEGTORAD(CPad::GetPad(0)->GetMouseY()/2.0f);
|
||||||
Beta -= DEGTORAD(CPad::GetPad(0)->GetMouseX()/2.0f);
|
Beta += DEGTORAD(CPad::GetPad(0)->GetMouseX()/2.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
TargetCoors.x = Source.x + Cos(Alpha) * Cos(Beta) * 3.0f;
|
TargetCoors.x = Source.x + Cos(Alpha) * Sin(Beta) * 7.0f;
|
||||||
TargetCoors.y = Source.y + Cos(Alpha) * Sin(Beta) * 3.0f;
|
TargetCoors.y = Source.y + Cos(Alpha) * Cos(Beta) * 7.0f;
|
||||||
TargetCoors.z = Source.z + Sin(Alpha) * 3.0f;
|
TargetCoors.z = Source.z + Sin(Alpha) * 3.0f;
|
||||||
|
|
||||||
if(Alpha > DEGTORAD(89.5f)) Alpha = DEGTORAD(89.5f);
|
if(Alpha > DEGTORAD(89.5f)) Alpha = DEGTORAD(89.5f);
|
||||||
@ -3838,10 +3840,10 @@ CCam::Process_Debug(const CVector&, float, float, float)
|
|||||||
RwCameraSetNearClipPlane(Scene.camera, DEFAULT_NEAR);
|
RwCameraSetNearClipPlane(Scene.camera, DEFAULT_NEAR);
|
||||||
FOV = DefaultFOV;
|
FOV = DefaultFOV;
|
||||||
Alpha += DEGTORAD(CPad::GetPad(1)->GetLeftStickY()) / 50.0f;
|
Alpha += DEGTORAD(CPad::GetPad(1)->GetLeftStickY()) / 50.0f;
|
||||||
Beta += DEGTORAD(CPad::GetPad(1)->GetLeftStickX())*1.5f / 19.0f;
|
Beta += DEGTORAD(CPad::GetPad(1)->GetLeftStickX()*1.5f) / 19.0f;
|
||||||
|
|
||||||
TargetCoors.x = Source.x + Cos(Alpha) * Cos(Beta) * 3.0f;
|
TargetCoors.x = Source.x + Cos(Alpha) * Sin(Beta) * 7.0f;
|
||||||
TargetCoors.y = Source.y + Cos(Alpha) * Sin(Beta) * 3.0f;
|
TargetCoors.y = Source.y + Cos(Alpha) * Cos(Beta) * 7.0f;
|
||||||
TargetCoors.z = Source.z + Sin(Alpha) * 3.0f;
|
TargetCoors.z = Source.z + Sin(Alpha) * 3.0f;
|
||||||
|
|
||||||
if(Alpha > DEGTORAD(89.5f)) Alpha = DEGTORAD(89.5f);
|
if(Alpha > DEGTORAD(89.5f)) Alpha = DEGTORAD(89.5f);
|
||||||
@ -3910,13 +3912,13 @@ CCam::Process_Editor(const CVector&, float, float, float)
|
|||||||
RwCameraSetNearClipPlane(Scene.camera, DEFAULT_NEAR);
|
RwCameraSetNearClipPlane(Scene.camera, DEFAULT_NEAR);
|
||||||
FOV = DefaultFOV;
|
FOV = DefaultFOV;
|
||||||
Alpha += DEGTORAD(CPad::GetPad(1)->GetLeftStickY()) / 50.0f;
|
Alpha += DEGTORAD(CPad::GetPad(1)->GetLeftStickY()) / 50.0f;
|
||||||
Beta += DEGTORAD(CPad::GetPad(1)->GetLeftStickX())*1.5f / 19.0f;
|
Beta += DEGTORAD(CPad::GetPad(1)->GetLeftStickX()*1.5f) / 19.0f;
|
||||||
|
|
||||||
if(CamTargetEntity && CSceneEdit::m_bCameraFollowActor){
|
if(CamTargetEntity && CSceneEdit::m_bCameraFollowActor){
|
||||||
TargetCoors = CamTargetEntity->GetPosition();
|
TargetCoors = CamTargetEntity->GetPosition();
|
||||||
}else if(CSceneEdit::m_bRecording){
|
}else if(CSceneEdit::m_bRecording){
|
||||||
TargetCoors.x = Source.x + Cos(Alpha) * Cos(Beta) * 7.0f;
|
TargetCoors.x = Source.x + Cos(Alpha) * Sin(Beta) * 7.0f;
|
||||||
TargetCoors.y = Source.y + Cos(Alpha) * Sin(Beta) * 7.0f;
|
TargetCoors.y = Source.y + Cos(Alpha) * Cos(Beta) * 7.0f;
|
||||||
TargetCoors.z = Source.z + Sin(Alpha) * 7.0f;
|
TargetCoors.z = Source.z + Sin(Alpha) * 7.0f;
|
||||||
}else
|
}else
|
||||||
TargetCoors = CSceneEdit::m_vecCamHeading + Source;
|
TargetCoors = CSceneEdit::m_vecCamHeading + Source;
|
||||||
@ -4114,18 +4116,18 @@ CCam::ProcessArrestCamTwo(void)
|
|||||||
CVector TargetCoors, ToCamera;
|
CVector TargetCoors, ToCamera;
|
||||||
float BetaOffset;
|
float BetaOffset;
|
||||||
float SourceX, SourceY;
|
float SourceX, SourceY;
|
||||||
CCam *ActiveCam = &TheCamera.Cams[TheCamera.ActiveCam];
|
if(&TheCamera.Cams[TheCamera.ActiveCam] == this){
|
||||||
if(&ActiveCam[1] == this){
|
|
||||||
SourceX = TheCamera.Cams[(TheCamera.ActiveCam + 1) % 2].Source.x;
|
SourceX = TheCamera.Cams[(TheCamera.ActiveCam + 1) % 2].Source.x;
|
||||||
SourceY = TheCamera.Cams[(TheCamera.ActiveCam + 1) % 2].Source.y;
|
SourceY = TheCamera.Cams[(TheCamera.ActiveCam + 1) % 2].Source.y;
|
||||||
}else{
|
}else{
|
||||||
SourceX = ActiveCam[1].Source.x;
|
SourceX = TheCamera.Cams[TheCamera.ActiveCam].Source.x;
|
||||||
SourceY = ActiveCam[1].Source.y;
|
SourceY = TheCamera.Cams[TheCamera.ActiveCam].Source.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i <= 1; i++){
|
for(int i = 0; i <= 1; i++){
|
||||||
int Dir = i == 0 ? 1 : -1;
|
int Dir = i == 0 ? 1 : -1;
|
||||||
|
|
||||||
|
FOV = 60.0f;
|
||||||
TargetCoors = player->GetPosition();
|
TargetCoors = player->GetPosition();
|
||||||
Beta = CGeneral::GetATanOfXY(TargetCoors.x-SourceX, TargetCoors.y-SourceY);
|
Beta = CGeneral::GetATanOfXY(TargetCoors.x-SourceX, TargetCoors.y-SourceY);
|
||||||
BetaOffset = DEGTORAD(Dir*80);
|
BetaOffset = DEGTORAD(Dir*80);
|
||||||
|
@ -21,7 +21,7 @@ public:
|
|||||||
static uint32 GetTimeStepInMilliseconds() { return ms_fTimeStep / 50.0f * 1000.0f; }
|
static uint32 GetTimeStepInMilliseconds() { return ms_fTimeStep / 50.0f * 1000.0f; }
|
||||||
static const float &GetTimeStepNonClipped(void) { return ms_fTimeStepNonClipped; }
|
static const float &GetTimeStepNonClipped(void) { return ms_fTimeStepNonClipped; }
|
||||||
static float GetTimeStepNonClippedInSeconds(void) { return ms_fTimeStepNonClipped / 50.0f; }
|
static float GetTimeStepNonClippedInSeconds(void) { return ms_fTimeStepNonClipped / 50.0f; }
|
||||||
static uint32 GetTimeStepNonClippedInMilliseconds(void) { return ms_fTimeStepNonClipped / 50.0f * 1000.0f; }
|
static float GetTimeStepNonClippedInMilliseconds(void) { return ms_fTimeStepNonClipped / 50.0f * 1000.0f; }
|
||||||
static void SetTimeStepNonClipped(float ts) { ms_fTimeStepNonClipped = ts; }
|
static void SetTimeStepNonClipped(float ts) { ms_fTimeStepNonClipped = ts; }
|
||||||
static const uint32 &GetFrameCounter(void) { return m_FrameCounter; }
|
static const uint32 &GetFrameCounter(void) { return m_FrameCounter; }
|
||||||
static void SetFrameCounter(uint32 fc) { m_FrameCounter = fc; }
|
static void SetFrameCounter(uint32 fc) { m_FrameCounter = fc; }
|
||||||
|
Loading…
Reference in New Issue
Block a user