Skip to content

Commit 404f0ff

Browse files
committed
Toggle XR from Unity
Added ToggleAR, ToggleVR, isSupportedAR and isSupportedVR to WebXRManager. Changed WebXRDisplayCapabilities class to struct. Removed hasExternalDisplay from WebXRDisplayCapabilities.
1 parent 831c067 commit 404f0ff

File tree

6 files changed

+68
-6
lines changed

6 files changed

+68
-6
lines changed

Packages/webxr/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Added
9+
- ToggleAR, ToggleVR, isSupportedAR and isSupportedVR to WebXRManager.
10+
11+
### Changed
12+
- WebXRDisplayCapabilities class to struct.
13+
14+
### Removed
15+
- hasExternalDisplay from WebXRDisplayCapabilities.
816

917
## [0.7.0] - 2020-02-13
1018
### Added

Packages/webxr/Runtime/Plugins/WebGL/webxr.jslib

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ mergeInto(LibraryManager.library, {
3030
Module.ViewerHitTestPoseArray = new Float32Array(buffer, byteOffset, length);
3131
},
3232

33+
ToggleAR: function() {
34+
document.dispatchEvent(new CustomEvent('toggleAR', {}));
35+
},
36+
37+
ToggleVR: function() {
38+
document.dispatchEvent(new CustomEvent('toggleVR', {}));
39+
},
40+
3341
ToggleViewerHitTest: function() {
3442
document.dispatchEvent(new CustomEvent('toggleHitTest', {}));
3543
},

Packages/webxr/Runtime/Plugins/WebGL/webxr.jspre

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -578,8 +578,7 @@ setTimeout(function () {
578578
this.gameModule.WebXR.OnXRCapabilities(
579579
JSON.stringify({
580580
canPresentAR: this.isARSupported,
581-
canPresentVR: this.isVRSupported,
582-
hasExternalDisplay: false // TODO: check this
581+
canPresentVR: this.isVRSupported
583582
})
584583
);
585584
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
namespace WebXR
22
{
33
[System.Serializable]
4-
public class WebXRDisplayCapabilities
4+
public struct WebXRDisplayCapabilities
55
{
66
public bool canPresentAR;
77
public bool canPresentVR;
8-
public bool hasExternalDisplay;
98
}
109
}

Packages/webxr/Runtime/Scripts/WebXRManager.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,33 @@ public static event WebXRSubsystem.HitTestUpdate OnViewerHitTestUpdate
4343
add => WebXRSubsystem.OnViewerHitTestUpdate += value;
4444
remove => WebXRSubsystem.OnViewerHitTestUpdate -= value;
4545
}
46-
46+
47+
public bool isSupportedAR
48+
{
49+
get
50+
{
51+
return subsystem.capabilities.canPresentAR;
52+
}
53+
}
54+
55+
public bool isSupportedVR
56+
{
57+
get
58+
{
59+
return subsystem.capabilities.canPresentVR;
60+
}
61+
}
62+
63+
public void ToggleAR()
64+
{
65+
subsystem.ToggleAR();
66+
}
67+
68+
public void ToggleVR()
69+
{
70+
subsystem.ToggleVR();
71+
}
72+
4773
public void HapticPulse(WebXRControllerHand hand, float intensity, float duration)
4874
{
4975
subsystem.HapticPulse(hand, intensity, duration);

Packages/webxr/Runtime/XRPlugin/WebXRSubsystem.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ private static class Native
180180
[DllImport("__Internal")]
181181
public static extern void InitViewerHitTestPoseArray(float[] array, int length);
182182

183+
[DllImport("__Internal")]
184+
public static extern void ToggleAR();
185+
186+
[DllImport("__Internal")]
187+
public static extern void ToggleVR();
188+
183189
[DllImport("__Internal")]
184190
public static extern void ToggleViewerHitTest();
185191

@@ -262,7 +268,7 @@ public delegate void HeadsetUpdate(
262268

263269
private WebXRHitPoseData viewerHitTestPose = new WebXRHitPoseData();
264270

265-
private WebXRDisplayCapabilities capabilities = new WebXRDisplayCapabilities();
271+
internal WebXRDisplayCapabilities capabilities = new WebXRDisplayCapabilities();
266272

267273
// Handles WebXR capabilities from browser
268274
[MonoPInvokeCallback(typeof(Action<string>))]
@@ -328,6 +334,22 @@ public static void OnEndXR()
328334
Instance.setXrState(WebXRState.NORMAL, 1, new Rect(), new Rect());
329335
}
330336

337+
public void ToggleAR()
338+
{
339+
if (capabilities.canPresentAR)
340+
{
341+
Native.ToggleAR();
342+
}
343+
}
344+
345+
public void ToggleVR()
346+
{
347+
if (capabilities.canPresentVR)
348+
{
349+
Native.ToggleVR();
350+
}
351+
}
352+
331353
public void StartViewerHitTest()
332354
{
333355
if (xrState == WebXRState.AR && !viewerHitTestOn)

0 commit comments

Comments
 (0)