44using ReMod . Core . UI . QuickMenu ;
55using ReModCE . Managers ;
66using UnityEngine ;
7+ using CameraTakePhotoEnumerator = VRC . UserCamera . CameraUtil . _TakeScreenShot_d__5 ;
78
89namespace ReModCE . Components
910{
@@ -16,12 +17,12 @@ internal enum ThirdPersonMode
1617
1718 internal class ThirdPersonComponent : ModComponent
1819 {
19- private Camera _cameraBack ;
20- private Camera _cameraFront ;
20+ private static Camera _cameraBack ;
21+ private static Camera _cameraFront ;
2122 private Camera _referenceCamera ;
2223 private Camera _photoCamera ;
2324
24- private ThirdPersonMode _cameraSetup ;
25+ private static ThirdPersonMode _cameraSetup ;
2526
2627 private ConfigValue < bool > EnableThirdpersonHotkey ;
2728 private ReMenuToggle _hotkeyToggle ;
@@ -42,6 +43,9 @@ public ThirdPersonComponent()
4243 SetThirdPersonMode ( ThirdPersonMode . Off ) ;
4344 }
4445 } ;
46+
47+ ReModCE . Harmony . Patch ( typeof ( CameraTakePhotoEnumerator ) . GetMethod ( "MoveNext" ) ,
48+ GetLocalPatch ( nameof ( CameraEnumeratorMoveNextPatch ) ) ) ;
4549 }
4650
4751 public override void OnUiManagerInit ( UiManager uiManager )
@@ -158,5 +162,13 @@ public override void OnUpdate()
158162 HandleHotkeys ( ) ;
159163 HandleThirdperson ( ) ;
160164 }
165+
166+ private static void CameraEnumeratorMoveNextPatch ( ref CameraTakePhotoEnumerator __instance )
167+ {
168+ if ( _cameraSetup == ThirdPersonMode . Off )
169+ return ;
170+
171+ __instance . field_Public_Camera_0 = _cameraSetup == ThirdPersonMode . Back ? _cameraBack : _cameraFront ;
172+ }
161173 }
162174}
0 commit comments