@@ -7,6 +7,9 @@ public class WebXRCameraSettings : MonoBehaviour
7
7
[ SerializeField ]
8
8
private Camera m_camera ;
9
9
10
+ [ SerializeField ]
11
+ private Transform m_transform ;
12
+
10
13
[ SerializeField ]
11
14
private CameraClearFlags m_normalClearFlags ;
12
15
@@ -34,6 +37,27 @@ public class WebXRCameraSettings : MonoBehaviour
34
37
[ SerializeField ]
35
38
private LayerMask m_arCullingMask ;
36
39
40
+ [ SerializeField ]
41
+ private bool m_updateNormalFieldOfView = true ;
42
+
43
+ [ SerializeField ]
44
+ private bool m_useNormalFieldOfViewFromAwake = true ;
45
+
46
+ [ SerializeField ]
47
+ private float m_normalFieldOfView = 60f ;
48
+
49
+ [ SerializeField ]
50
+ private bool m_updateNormalLocalPose = true ;
51
+
52
+ [ SerializeField ]
53
+ private bool m_useNormalPoseFromAwake = true ;
54
+
55
+ [ SerializeField ]
56
+ private Vector3 m_normalLocalPosition = Vector3 . zero ;
57
+
58
+ [ SerializeField ]
59
+ private Quaternion m_normalLocalRotation = Quaternion . identity ;
60
+
37
61
public Camera Camera
38
62
{
39
63
get { return m_camera ; }
@@ -94,6 +118,66 @@ public LayerMask ARCullingMask
94
118
set { m_arCullingMask = value ; }
95
119
}
96
120
121
+ public bool UpdateNormalFieldOfView
122
+ {
123
+ get { return m_updateNormalFieldOfView ; }
124
+ set { m_updateNormalFieldOfView = value ; }
125
+ }
126
+
127
+ public bool UseNormalFieldOfViewFromAwake
128
+ {
129
+ get { return m_useNormalFieldOfViewFromAwake ; }
130
+ set { m_useNormalFieldOfViewFromAwake = value ; }
131
+ }
132
+
133
+ public float NormalFieldOfView
134
+ {
135
+ get { return m_normalFieldOfView ; }
136
+ set { m_normalFieldOfView = value ; }
137
+ }
138
+
139
+ public bool UpdateNormalLocalPose
140
+ {
141
+ get { return m_updateNormalLocalPose ; }
142
+ set { m_updateNormalLocalPose = value ; }
143
+ }
144
+
145
+ public bool UseNormalPoseFromAwake
146
+ {
147
+ get { return m_useNormalPoseFromAwake ; }
148
+ set { m_useNormalPoseFromAwake = value ; }
149
+ }
150
+
151
+ public Vector3 NormalLocalPosition
152
+ {
153
+ get { return m_normalLocalPosition ; }
154
+ set { m_normalLocalPosition = value ; }
155
+ }
156
+
157
+ public Quaternion NormalLocalRotation
158
+ {
159
+ get { return m_normalLocalRotation ; }
160
+ set { m_normalLocalRotation = value ; }
161
+ }
162
+
163
+ private void Awake ( )
164
+ {
165
+ if ( m_camera == null )
166
+ {
167
+ return ;
168
+ }
169
+ m_transform = m_camera . transform ;
170
+ if ( m_useNormalFieldOfViewFromAwake )
171
+ {
172
+ m_normalFieldOfView = m_camera . fieldOfView ;
173
+ }
174
+ if ( m_useNormalPoseFromAwake )
175
+ {
176
+ m_normalLocalPosition = m_transform . localPosition ;
177
+ m_normalLocalRotation = m_transform . localRotation ;
178
+ }
179
+ }
180
+
97
181
private void OnEnable ( )
98
182
{
99
183
WebXRManager . OnXRChange += OnXRChange ;
@@ -120,6 +204,20 @@ private void OnXRChange(WebXRState state, int viewsCount, Rect leftRect, Rect ri
120
204
m_camera . clearFlags = m_normalClearFlags ;
121
205
m_camera . backgroundColor = m_normalBackgroundColor ;
122
206
m_camera . cullingMask = m_normalCullingMask ;
207
+ if ( m_updateNormalFieldOfView )
208
+ {
209
+ m_camera . fieldOfView = m_normalFieldOfView ;
210
+ m_camera . ResetProjectionMatrix ( ) ;
211
+ }
212
+ if ( m_updateNormalLocalPose )
213
+ {
214
+ #if HAS_POSITION_AND_ROTATION
215
+ m_transform . SetLocalPositionAndRotation ( m_normalLocalPosition , m_normalLocalRotation ) ;
216
+ #else
217
+ m_transform . localPosition = m_normalLocalPosition ;
218
+ m_transform . localRotation = m_normalLocalRotation ;
219
+ #endif
220
+ }
123
221
break ;
124
222
case WebXRState . VR :
125
223
m_camera . clearFlags = m_vrClearFlags ;
0 commit comments