@@ -1758,6 +1758,12 @@ public override void Reset()
17581758 XRadians = StartViewPointRotationXRadians ;
17591759 YRadians = StartViewPointRotationYRadians ;
17601760 }
1761+
1762+ public void SwitchSideCameraCar ( TrainCar car )
1763+ {
1764+ attachedLocation . X = - attachedLocation . X ;
1765+ RotationYRadians = - RotationYRadians ;
1766+ }
17611767 }
17621768
17631769 public class PassengerCamera : InsideThreeDimCamera
@@ -1814,12 +1820,6 @@ public override void HandleUserInput(ElapsedTime elapsedTime)
18141820 new CameraChangePassengerViewPointCommand ( Viewer . Log ) ;
18151821 }
18161822
1817- public void SwitchSideCameraCar ( TrainCar car )
1818- {
1819- attachedLocation . X = - attachedLocation . X ;
1820- RotationYRadians = - RotationYRadians ;
1821- }
1822-
18231823 public void ChangePassengerViewPoint ( TrainCar car )
18241824 {
18251825 ActViewPoint ++ ;
@@ -1890,7 +1890,7 @@ public void ChangeCab(TrainCar newCar)
18901890 var mstsLocomotive = newCar as MSTSLocomotive ;
18911891 if ( PrevCabWasRear != mstsLocomotive . UsingRearCab )
18921892 RotationYRadians += MathHelper . Pi ;
1893- ActViewPoint = mstsLocomotive . UsingRearCab ? 1 : 0 ;
1893+ ActViewPoint = mstsLocomotive . UsingRearCab && mstsLocomotive . HasFront3DCab ? 1 : 0 ;
18941894 PrevCabWasRear = mstsLocomotive . UsingRearCab ;
18951895 SetCameraCar ( newCar ) ;
18961896 }
@@ -1925,6 +1925,20 @@ public override bool IsUnderground
19251925 return attachedCar . WorldPosition . Location . Y + TerrainAltitudeMargin < elevationAtCameraTarget || attachedCar . CarTunnelData . LengthMOfTunnelAheadFront > 0 ;
19261926 }
19271927 }
1928+
1929+ public override void HandleUserInput ( ElapsedTime elapsedTime )
1930+ {
1931+ base . HandleUserInput ( elapsedTime ) ;
1932+ if ( UserInput . IsPressed ( UserCommand . CameraChange3DCabViewPoint ) )
1933+ new CameraChange3DCabViewPointCommand ( Viewer . Log ) ;
1934+ }
1935+
1936+ public void Change3DCabViewPoint ( TrainCar car )
1937+ {
1938+ ActViewPoint ++ ;
1939+ if ( ActViewPoint >= car . CabViewpoints . Count ) ActViewPoint = 0 ;
1940+ SetCameraCar ( car ) ;
1941+ }
19281942 }
19291943
19301944 public class HeadOutCamera : NonTrackingCamera
0 commit comments