|
6 | 6 |
|
7 | 7 | namespace BabylonReactNative |
8 | 8 | { |
9 | | - bool TryGetXrContext(facebook::jsi::Runtime& jsiRuntime, const facebook::jsi::Value& xrSession, IXrContextOpenXR*& xrContext) |
| 9 | + bool TryGetXrContext(facebook::jsi::Runtime& jsiRuntime, IXrContextOpenXR*& xrContext) |
10 | 10 | { |
11 | 11 | xrContext = nullptr; |
12 | | - if (!xrSession.isObject() || |
13 | | - !xrSession.asObject(jsiRuntime).hasProperty(jsiRuntime, "nativeXrContext") || |
14 | | - !xrSession.asObject(jsiRuntime).hasProperty(jsiRuntime, "nativeXrContextType") || |
15 | | - xrSession.asObject(jsiRuntime).getProperty(jsiRuntime, "nativeXrContextType").asString(jsiRuntime).utf8(jsiRuntime) != "OpenXR") |
| 12 | + if (!jsiRuntime.global().hasProperty(jsiRuntime, "navigator")) |
16 | 13 | { |
17 | 14 | return false; |
18 | 15 | } |
19 | 16 |
|
20 | | - auto nativeExtensionPtr = static_cast<uintptr_t>(xrSession.asObject(jsiRuntime).getProperty(jsiRuntime, "nativeXrContext").asNumber()); |
| 17 | + auto navigator{ jsiRuntime.global().getProperty(jsiRuntime, "navigator").asObject(jsiRuntime) }; |
| 18 | + if (!navigator.hasProperty(jsiRuntime, "xr")) |
| 19 | + { |
| 20 | + return false; |
| 21 | + } |
| 22 | + |
| 23 | + auto nativeXr{ navigator.getProperty(jsiRuntime, "xr").asObject(jsiRuntime) }; |
| 24 | + if (!nativeXr.hasProperty(jsiRuntime, "nativeXrContext") || |
| 25 | + !nativeXr.hasProperty(jsiRuntime, "nativeXrContextType") || |
| 26 | + nativeXr.getProperty(jsiRuntime, "nativeXrContextType").asString(jsiRuntime).utf8(jsiRuntime) != "OpenXR") |
| 27 | + { |
| 28 | + return false; |
| 29 | + } |
| 30 | + |
| 31 | + auto nativeExtensionPtr = static_cast<uintptr_t>(nativeXr.getProperty(jsiRuntime, "nativeXrContext").asNumber()); |
21 | 32 | xrContext = reinterpret_cast<IXrContextOpenXR*>(nativeExtensionPtr); |
22 | 33 | return true; |
23 | 34 | } |
|
0 commit comments