From 36b3ea9f9edd256caf3802d43af8dfc85b9c0863 Mon Sep 17 00:00:00 2001 From: Chris Barth Date: Thu, 10 Jun 2021 10:32:22 -0700 Subject: [PATCH 1/2] add ability to declare xr anchor created externally --- .../react-native/shared/XrAnchorHelper.h | 36 +++++++++++++++++++ .../react-native/submodules/BabylonNative | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/Modules/@babylonjs/react-native/shared/XrAnchorHelper.h b/Modules/@babylonjs/react-native/shared/XrAnchorHelper.h index 1e9f61079..9c35a89f5 100644 --- a/Modules/@babylonjs/react-native/shared/XrAnchorHelper.h +++ b/Modules/@babylonjs/react-native/shared/XrAnchorHelper.h @@ -69,6 +69,36 @@ namespace Babylon::Plugins::NativeXr nativeAnchorPtr = static_cast(getNativeAnchor.Call({ anchor }).As().DoubleValue()); return true; } + + bool TryDeclareNativeAnchor(Napi::Env env, const Napi::Value& session, uintptr_t nativeAnchorPtr, Napi::Value& xrAnchor) + { + xrAnchor = env.Undefined(); + if (!session.IsObject()) + { + return false; + } + + if (!env.Global().Has("navigator")) + { + return false; + } + + auto navigator{ env.Global().Get("navigator").ToObject() }; + if (!navigator.Has("xr")) + { + return false; + } + + auto nativeXr{ navigator.Get("xr").ToObject() }; + if (!nativeXr.Has("declareNativeAnchor")) + { + return false; + } + + auto declareNativeAnchor{nativeXr.Get("declareNativeAnchor").As()}; + xrAnchor = declareNativeAnchor.Call({ session, Napi::Number::From(env, nativeAnchorPtr) }); + return true; + } } #endif @@ -144,6 +174,12 @@ namespace Babylon::Plugins::NativeXr return false; } + + bool TryDeclareNativeAnchor(Napi::Env env, const Napi::Value& session, ArAnchor* nativeAnchor, Napi::Value& xrAnchor) + { + uintptr_t nativeAnchorPtr{reinterpret_cast(nativeAnchor)}; + return TryDeclareNativeAnchor(env, session, nativeAnchorPtr, xrAnchor); + } } #endif #endif diff --git a/Modules/@babylonjs/react-native/submodules/BabylonNative b/Modules/@babylonjs/react-native/submodules/BabylonNative index befafc774..1ebf92821 160000 --- a/Modules/@babylonjs/react-native/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit befafc77497fceb8ea870f3f65f6420ac77f9392 +Subproject commit 1ebf92821a62bde80b064f7a15fd6bdf9bba2112 From f9de867fc792c5c811002257174cf05d2c507f84 Mon Sep 17 00:00:00 2001 From: Chris Barth Date: Fri, 11 Jun 2021 09:56:19 -0700 Subject: [PATCH 2/2] update babylonnative repo to pick up changes in master for declare anchor --- Modules/@babylonjs/react-native/submodules/BabylonNative | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/@babylonjs/react-native/submodules/BabylonNative b/Modules/@babylonjs/react-native/submodules/BabylonNative index 1ebf92821..647f572e7 160000 --- a/Modules/@babylonjs/react-native/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit 1ebf92821a62bde80b064f7a15fd6bdf9bba2112 +Subproject commit 647f572e76f25d07e9cacfa4c6cda38733c48dda