diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp index 04d581e24..7a148583c 100644 --- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp +++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp @@ -53,10 +53,8 @@ namespace winrt::BabylonReactNative::implementation { _width = static_cast(size.Width); _height = static_cast(size.Height); - // Use windowTypePtr == 2 for xaml swap chain panels - auto windowTypePtr = reinterpret_cast(2); auto windowPtr = get_abi(static_cast(*this)); - Babylon::UpdateView(windowPtr, _width, _height, windowTypePtr); + Babylon::UpdateView(windowPtr, _width, _height); } void EngineView::OnPointerPressed(IInspectable const& /*sender*/, PointerEventArgs const& args) diff --git a/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt b/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt index c27c56a51..46214a32c 100644 --- a/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt +++ b/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt @@ -12,6 +12,8 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(BABYLON_REACT_NATIVE_DIR "${CMAKE_CURRENT_LIST_DIR}/../../react-native") +set(BABYLON_NATIVE_WINDOWS_STORE_USE_SWAPCHAINPANEL 1) + include(${BABYLON_REACT_NATIVE_DIR}/shared/CMakeLists.txt) set(BABYLON_NATIVE_DIR "${BABYLON_REACT_NATIVE_DIR}/submodules/BabylonNative") diff --git a/Modules/@babylonjs/react-native/ios/CMakeLists.txt b/Modules/@babylonjs/react-native/ios/CMakeLists.txt index 42e85f974..66542e526 100644 --- a/Modules/@babylonjs/react-native/ios/CMakeLists.txt +++ b/Modules/@babylonjs/react-native/ios/CMakeLists.txt @@ -4,6 +4,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/../shared/CMakeLists.txt) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -x objective-c++") # configure Babylon Native to use JSI set(NAPI_JAVASCRIPT_ENGINE "JSI" CACHE STRING "The JavaScript engine to power N-API") diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 61c2f0668..fb6a1c88e 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -61,15 +61,20 @@ namespace Babylon Napi::Detach(m_env); } - void UpdateView(void* windowPtr, void* windowTypePtr, size_t width, size_t height) + void UpdateView(void* windowPtr, size_t width, size_t height) { + GraphicsConfiguration graphicsConfig{}; + graphicsConfig.WindowPtr = reinterpret_cast(windowPtr); + graphicsConfig.Width = width; + graphicsConfig.Height = height; + if (!g_graphics) { - g_graphics = Graphics::CreateGraphics(windowPtr, windowTypePtr, width, height); + g_graphics = Graphics::CreateGraphics(graphicsConfig); } else { - g_graphics->UpdateWindow(windowPtr, windowTypePtr); + g_graphics->UpdateWindow(graphicsConfig); g_graphics->UpdateSize(width, height); } @@ -222,11 +227,11 @@ namespace Babylon g_nativeModule.reset(); } - void UpdateView(void* windowPtr, size_t width, size_t height, void* windowTypePtr) + void UpdateView(void* windowPtr, size_t width, size_t height) { if (auto nativeModule{ g_nativeModule.lock() }) { - nativeModule->UpdateView(windowPtr, windowTypePtr, width, height); + nativeModule->UpdateView(windowPtr, width, height); } else { diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.h b/Modules/@babylonjs/react-native/shared/BabylonNative.h index f3f556d9a..f742878ef 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.h +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.h @@ -8,7 +8,7 @@ namespace Babylon void Initialize(facebook::jsi::Runtime& jsiRuntime, Dispatcher jsDispatcher); void Deinitialize(); - void UpdateView(void* windowPtr, size_t width, size_t height, void* windowTypePtr = nullptr); + void UpdateView(void* windowPtr, size_t width, size_t height); void RenderView(); void ResetView(); void SetMouseButtonState(uint32_t buttonId, bool isDown, uint32_t x, uint32_t y); diff --git a/Modules/@babylonjs/react-native/submodules/BabylonNative b/Modules/@babylonjs/react-native/submodules/BabylonNative index 11e741183..3ecbb47e6 160000 --- a/Modules/@babylonjs/react-native/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit 11e74118373bed93e1195da034af42cda49b376a +Subproject commit 3ecbb47e61124cf5e8464b34d1a7d5f899ff6f3f