4
4
using ReMod . Core . UI . QuickMenu ;
5
5
using ReModCE . Managers ;
6
6
using UnityEngine ;
7
+ using CameraTakePhotoEnumerator = VRC . UserCamera . CameraUtil . _TakeScreenShot_d__5 ;
7
8
8
9
namespace ReModCE . Components
9
10
{
@@ -16,12 +17,12 @@ internal enum ThirdPersonMode
16
17
17
18
internal class ThirdPersonComponent : ModComponent
18
19
{
19
- private Camera _cameraBack ;
20
- private Camera _cameraFront ;
20
+ private static Camera _cameraBack ;
21
+ private static Camera _cameraFront ;
21
22
private Camera _referenceCamera ;
22
23
private Camera _photoCamera ;
23
24
24
- private ThirdPersonMode _cameraSetup ;
25
+ private static ThirdPersonMode _cameraSetup ;
25
26
26
27
private ConfigValue < bool > EnableThirdpersonHotkey ;
27
28
private ReMenuToggle _hotkeyToggle ;
@@ -42,6 +43,9 @@ public ThirdPersonComponent()
42
43
SetThirdPersonMode ( ThirdPersonMode . Off ) ;
43
44
}
44
45
} ;
46
+
47
+ ReModCE . Harmony . Patch ( typeof ( CameraTakePhotoEnumerator ) . GetMethod ( "MoveNext" ) ,
48
+ GetLocalPatch ( nameof ( CameraEnumeratorMoveNextPatch ) ) ) ;
45
49
}
46
50
47
51
public override void OnUiManagerInit ( UiManager uiManager )
@@ -158,5 +162,13 @@ public override void OnUpdate()
158
162
HandleHotkeys ( ) ;
159
163
HandleThirdperson ( ) ;
160
164
}
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
+ }
161
173
}
162
174
}
0 commit comments