@@ -1020,10 +1020,13 @@ void CPlayer::ProcessRoomscaleMovement()
1020
1020
bool modalHudActive = g_pGame->GetHUD () && g_pGame->GetHUD ()->GetModalHUD ();
1021
1021
if (modalHudActive || !m_linkStats.CanRotate () || !g_pGameCVars->vr_enable_motion_controllers )
1022
1022
return ;
1023
- if (GetLinkedVehicle () || m_stats.isOnLadder || !GetEntity ()->GetPhysics () || m_stats.mountedWeaponID )
1023
+ if (GetLinkedVehicle () || m_stats.isOnLadder || !GetEntity ()->GetPhysics () || m_stats.mountedWeaponID || m_stats. isGrabbed || m_stats. isFrozen . Value () )
1024
1024
return ;
1025
1025
if (g_pGame->GetIGameFramework ()->GetIViewSystem ()->IsPlayingCutScene ())
1026
1026
return ;
1027
+ IViewSystem* system = g_pGame->GetIGameFramework ()->GetIViewSystem ();
1028
+ if (system && system->GetActiveView () && system->GetActiveView ()->GetLinkedId () != GetEntityId ())
1029
+ return ;
1027
1030
1028
1031
if (m_stats.inRest <= 0 || m_stats.jumped || m_stats.onGround <= 0 ) // don't do this while we are otherwise moving, or it will interfere
1029
1032
return ;
@@ -1082,13 +1085,17 @@ void CPlayer::ProcessRoomscaleRotation()
1082
1085
bool modalHudActive = g_pGame->GetHUD () && g_pGame->GetHUD ()->GetModalHUD ();
1083
1086
if (modalHudActive || !m_linkStats.CanRotate () || !g_pGameCVars->vr_enable_motion_controllers )
1084
1087
return ;
1085
- if (GetLinkedVehicle () || m_stats.isOnLadder || !GetEntity ()->GetPhysics () || m_stats.mountedWeaponID )
1088
+ if (GetLinkedVehicle () || m_stats.isOnLadder || !GetEntity ()->GetPhysics () || m_stats.mountedWeaponID || m_stats. isGrabbed || m_stats. isFrozen . Value () )
1086
1089
return ;
1087
1090
if (g_pGame->GetIGameFramework ()->GetIViewSystem ()->IsPlayingCutScene ())
1088
1091
return ;
1092
+ IViewSystem* system = g_pGame->GetIGameFramework ()->GetIViewSystem ();
1093
+ if (system && system->GetActiveView () && system->GetActiveView ()->GetLinkedId () != GetEntityId ())
1094
+ return ;
1089
1095
1090
-
1091
- if (m_stats.onGround <= 0 ) // fixme: roomscale rotation feels off during the initial parachute jump
1096
+ if (m_stats.onGround <= 0 ) // don't do this while we are otherwise moving, or it will interfere
1097
+ return ;
1098
+ if (m_params.vLimitRangeH > 0 .001f && m_params.vLimitDir .len () > 0 .01f )
1092
1099
return ;
1093
1100
1094
1101
float hmdYaw = gVR ->GetHmdYawOffset ();
0 commit comments