Skip to content

Commit f416ee8

Browse files
authored
Merge pull request #274 from De-Panther/enable_more_webxr_rigs
Enable support for different WebXR rigs in different scenes
2 parents 7c03a8d + 6d7dbfb commit f416ee8

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

Packages/webxr/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88

9+
### Fixed
10+
- Issues when using more than one WebXRManager components.
11+
912
## [0.16.0] - 2023-02-02
1013
### Added
1114
- Support for Spectator Camera.

Packages/webxr/Runtime/Scripts/WebXRCamera.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,15 @@ public enum CameraID
2626

2727
private bool hasFollower = false;
2828

29-
private void Awake()
30-
{
31-
SwitchXRState();
32-
}
33-
3429
private void OnEnable()
3530
{
3631
WebXRManager.OnXRChange += OnXRChange;
3732
WebXRManager.OnHeadsetUpdate += OnHeadsetUpdate;
3833
hasFollower = cameraFollower != null;
34+
OnXRChange(WebXRManager.Instance.XRState,
35+
WebXRManager.Instance.ViewsCount,
36+
WebXRManager.Instance.ViewsLeftRect,
37+
WebXRManager.Instance.ViewsRightRect);
3938
}
4039

4140
private void OnDisable()

Packages/webxr/Runtime/Scripts/WebXRManager.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@ public enum WebXRVisibilityState
1313
[DefaultExecutionOrder(-2020)]
1414
public class WebXRManager : SubsystemLifecycleManager<WebXRSubsystem, WebXRSubsystemDescriptor>
1515
{
16+
private static readonly Rect defaultRect = new Rect(0, 0, 1, 1);
17+
1618
public static WebXRManager Instance { get; private set; }
1719

1820
public WebXRState XRState => subsystem == null ? WebXRState.NORMAL : subsystem.xrState;
21+
public int ViewsCount => subsystem == null ? 1 : subsystem.viewsCount;
22+
public Rect ViewsLeftRect => subsystem == null ? defaultRect : subsystem.leftRect;
23+
public Rect ViewsRightRect => subsystem == null ? defaultRect : subsystem.rightRect;
1924

2025
public static event WebXRSubsystem.XRCapabilitiesUpdate OnXRCapabilitiesUpdate
2126
{
@@ -120,6 +125,11 @@ public void StopViewerHitTest()
120125
protected override void Awake()
121126
{
122127
base.Awake();
128+
if (Instance != null)
129+
{
130+
Debug.LogError("More than one WebXRManager components in scene. Disabling previous one.");
131+
Instance.enabled = false;
132+
}
123133
Instance = this;
124134
enabled = subsystem != null;
125135
}

Packages/webxr/Runtime/XRPlugin/WebXRSubsystem.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,9 @@ public static extern void SetWebXREvents(StartXREvent on_start_ar,
218218
#endif
219219

220220
internal WebXRState xrState = WebXRState.NORMAL;
221-
private int viewsCount = 1;
222-
private Rect leftRect;
223-
private Rect rightRect;
221+
internal int viewsCount = 1;
222+
internal Rect leftRect;
223+
internal Rect rightRect;
224224
private bool reportedXRStateSwitch = true;
225225
internal WebXRVisibilityState visibilityState = WebXRVisibilityState.VISIBLE;
226226
private bool visibilityStateChanged = false;

0 commit comments

Comments
 (0)