@@ -44,7 +44,6 @@ public bool ThirdPerson
44
44
protected Material _previewMaterial ;
45
45
protected Camera _cam ;
46
46
protected Transform _cameraCube ;
47
- protected float _lastRenderTime ;
48
47
protected ScreenCameraBehaviour _screenCamera ;
49
48
protected GameObject _cameraPreviewQuad ;
50
49
@@ -57,12 +56,10 @@ public virtual void Init(Camera mainCamera)
57
56
{
58
57
_mainCamera = mainCamera ;
59
58
60
- Camera . onPreCull += OnCameraPreCull ;
61
-
62
59
XRSettings . showDeviceView = false ;
63
60
64
61
Plugin . Instance . Config . ConfigChangedEvent += PluginOnConfigChangedEvent ;
65
- SceneManager . activeSceneChanged += SceneManagerOnActiveSceneChanged ;
62
+ SceneManager . sceneLoaded += SceneManagerOnSceneLoaded ;
66
63
67
64
var gameObj = Instantiate ( _mainCamera . gameObject ) ;
68
65
gameObj . SetActive ( false ) ;
@@ -88,7 +85,7 @@ public virtual void Init(Camera mainCamera)
88
85
89
86
_cam = gameObj . GetComponent < Camera > ( ) ;
90
87
_cam . stereoTargetEye = StereoTargetEyeMask . None ;
91
- _cam . enabled = false ;
88
+ _cam . enabled = true ;
92
89
93
90
gameObj . SetActive ( true ) ;
94
91
@@ -130,33 +127,13 @@ public virtual void Init(Camera mainCamera)
130
127
_cameraCube . eulerAngles = ThirdPersonRot ;
131
128
}
132
129
133
- SceneManagerOnActiveSceneChanged ( new Scene ( ) , new Scene ( ) ) ;
134
- }
135
-
136
- protected virtual void OnCameraPreCull ( Camera cam )
137
- {
138
- if ( cam != _mainCamera ) return ;
139
- var currentTime = Time . realtimeSinceStartup ;
140
- if ( _lastRenderTime + ( 1 / Plugin . Instance . Config . fps ) > currentTime ) return ;
141
-
142
- if ( Screen . width != _prevScreenWidth || Screen . height != _prevScreenHeight )
143
- {
144
- CreateScreenRenderTexture ( ) ;
145
- }
146
-
147
- if ( _cam . targetTexture != null )
148
- {
149
- _cam . Render ( ) ;
150
- }
151
-
152
- _lastRenderTime = currentTime ;
130
+ SceneManagerOnSceneLoaded ( new Scene ( ) , LoadSceneMode . Single ) ;
153
131
}
154
132
155
133
protected virtual void OnDestroy ( )
156
134
{
157
135
Plugin . Instance . Config . ConfigChangedEvent -= PluginOnConfigChangedEvent ;
158
- SceneManager . activeSceneChanged -= SceneManagerOnActiveSceneChanged ;
159
- Camera . onPreCull -= OnCameraPreCull ;
136
+ SceneManager . sceneLoaded -= SceneManagerOnSceneLoaded ;
160
137
}
161
138
162
139
protected virtual void PluginOnConfigChangedEvent ( Config config )
@@ -238,17 +215,21 @@ protected virtual void GetScaledScreenResolution(float scale, out int scaledWidt
238
215
scaledHeight = Mathf . Clamp ( Mathf . RoundToInt ( scaledWidth * ratio ) , 1 , int . MaxValue ) ;
239
216
}
240
217
241
- protected virtual void SceneManagerOnActiveSceneChanged ( Scene arg0 , Scene scene )
218
+ protected virtual void SceneManagerOnSceneLoaded ( Scene scene , LoadSceneMode mode )
242
219
{
243
220
var pointer = Resources . FindObjectsOfTypeAll < VRPointer > ( ) . FirstOrDefault ( ) ;
244
221
if ( pointer == null ) return ;
245
- var movePointer = ( CameraMoverPointer ) ReflectionUtil . CopyComponent ( pointer , typeof ( CameraMoverPointer ) , pointer . gameObject ) ;
246
- DestroyImmediate ( pointer ) ;
222
+ var movePointer = pointer . gameObject . AddComponent < CameraMoverPointer > ( ) ;
247
223
movePointer . Init ( this , _cameraCube ) ;
248
224
}
249
225
250
226
protected virtual void LateUpdate ( )
251
227
{
228
+ if ( Screen . width != _prevScreenWidth || Screen . height != _prevScreenHeight )
229
+ {
230
+ CreateScreenRenderTexture ( ) ;
231
+ }
232
+
252
233
var camera = _mainCamera . transform ;
253
234
254
235
if ( ThirdPerson )
0 commit comments