From 9fefcb80ae4d747e9692b21c949df73613fcee2f Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Mon, 15 Mar 2021 16:38:14 -0700 Subject: [PATCH 01/12] update UWP engineView to use modified graphics contract --- .../windows/BabylonReactNative/EngineView.cpp | 2 +- .../react-native-windows/windows/CMakeLists.txt | 2 ++ .../@babylonjs/react-native/shared/BabylonNative.cpp | 10 ++++++++-- Modules/@babylonjs/react-native/shared/CMakeLists.txt | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp index 04d581e24..c9f079d77 100644 --- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp +++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp @@ -56,7 +56,7 @@ namespace winrt::BabylonReactNative::implementation { // 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(static_cast(windowPtr), _width, _height, windowTypePtr); } 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/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 1c777087d..8b67c53cd 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -61,13 +61,19 @@ namespace Babylon void UpdateView(void* windowPtr, void* windowTypePtr, size_t width, size_t height) { + GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); + graphicsConfig.windowPtr = static_cast(windowPtr); + graphicsConfig.windowTypePtr = windowTypePtr; + 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); } diff --git a/Modules/@babylonjs/react-native/shared/CMakeLists.txt b/Modules/@babylonjs/react-native/shared/CMakeLists.txt index 2744bc19c..94fa06e13 100644 --- a/Modules/@babylonjs/react-native/shared/CMakeLists.txt +++ b/Modules/@babylonjs/react-native/shared/CMakeLists.txt @@ -4,4 +4,4 @@ set(SHARED_INCLUDES set(SHARED_SOURCES "${CMAKE_CURRENT_LIST_DIR}/DispatchFunction.h" "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.h" - "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.cpp") \ No newline at end of file + "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.cpp") From 30935dfc3597af8ce9dcc7bd17999b1f8e684786 Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Wed, 24 Mar 2021 21:02:11 -0700 Subject: [PATCH 02/12] update react-native-windows, react-native BabylonNative graphics contract --- .../windows/BabylonReactNative/EngineView.cpp | 4 +--- .../@babylonjs/react-native/shared/BabylonNative.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp index c9f079d77..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(static_cast(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/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 8b67c53cd..3078ccd5a 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -1,6 +1,7 @@ #include "BabylonNative.h" #include +#include #include #include #include @@ -59,11 +60,10 @@ namespace Babylon Napi::Detach(m_env); } - void UpdateView(void* windowPtr, void* windowTypePtr, size_t width, size_t height) + void UpdateView(WindowType windowPtr, size_t width, size_t height) { GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); - graphicsConfig.windowPtr = static_cast(windowPtr); - graphicsConfig.windowTypePtr = windowTypePtr; + graphicsConfig.windowPtr = windowPtr; graphicsConfig.width = width; graphicsConfig.height = height; @@ -213,11 +213,11 @@ namespace Babylon g_nativeModule.reset(); } - void UpdateView(void* windowPtr, size_t width, size_t height, void* windowTypePtr) + void UpdateView(WindowType 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 { From 81099342d050a1747eb53df05cf5c5b8c3a457c9 Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Thu, 1 Apr 2021 14:54:16 -0700 Subject: [PATCH 03/12] Update BabylonNative to latest commit, remove void* from BabylonNative UpdateView contract --- .../android/src/main/cpp/BabylonNativeInterop.cpp | 2 +- Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm | 2 +- Modules/@babylonjs/react-native/shared/BabylonNative.cpp | 6 +++--- Modules/@babylonjs/react-native/shared/BabylonNative.h | 3 ++- Modules/@babylonjs/react-native/submodules/BabylonNative | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp b/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp index 727c6116b..d2702ff0a 100644 --- a/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp +++ b/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp @@ -66,7 +66,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_babylonreactnative_BabylonNativeInter extern "C" JNIEXPORT void JNICALL Java_com_babylonreactnative_BabylonNativeInterop_00024BabylonNative_updateView(JNIEnv* env, jclass obj, jobject surface) { - ANativeWindow* windowPtr{ ANativeWindow_fromSurface(env, surface) }; + ANativeWindow* windowPtr = ANativeWindow_fromSurface(env, surface); auto width{ static_cast(ANativeWindow_getWidth(windowPtr)) }; auto height{ static_cast(ANativeWindow_getHeight(windowPtr)) }; Babylon::UpdateView(windowPtr, width, height); diff --git a/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm b/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm index 9a5f54d91..44b9ef71f 100644 --- a/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm +++ b/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm @@ -58,7 +58,7 @@ + (void)updateView:(MTKView*)mtkView { const int width = static_cast(mtkView.bounds.size.width * UIScreen.mainScreen.scale); const int height = static_cast(mtkView.bounds.size.height * UIScreen.mainScreen.scale); if (width != 0 && height != 0) { - Babylon::UpdateView((__bridge void*)mtkView, width, height); + Babylon::UpdateView(mtkView, width, height); } } diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 12a89cf2e..64fb03398 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -65,9 +65,9 @@ namespace Babylon void UpdateView(WindowType windowPtr, size_t width, size_t height) { GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); - graphicsConfig.windowPtr = windowPtr; - graphicsConfig.width = width; - graphicsConfig.height = height; + graphicsConfig.WindowPtr = windowPtr; + graphicsConfig.Width = width; + graphicsConfig.Height = height; if (!g_graphics) { diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.h b/Modules/@babylonjs/react-native/shared/BabylonNative.h index f3f556d9a..08291c0e7 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.h +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.h @@ -1,6 +1,7 @@ #pragma once #include +#include namespace Babylon { @@ -8,7 +9,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(WindowType 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 66c97f911..8371b7980 160000 --- a/Modules/@babylonjs/react-native/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit 66c97f911eaf879022f10bbe22b113cee3e3f942 +Subproject commit 8371b79805f2647dc7c43aa1f3e0a5552f23e2f6 From 0c6a883f516f8cc8f347c80a0780ec6c6e86f107 Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Mon, 15 Mar 2021 16:38:14 -0700 Subject: [PATCH 04/12] update UWP engineView to use modified graphics contract --- .../windows/BabylonReactNative/EngineView.cpp | 2 +- .../react-native-windows/windows/CMakeLists.txt | 2 ++ .../@babylonjs/react-native/shared/BabylonNative.cpp | 10 ++++++++-- Modules/@babylonjs/react-native/shared/CMakeLists.txt | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp index 04d581e24..c9f079d77 100644 --- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp +++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp @@ -56,7 +56,7 @@ namespace winrt::BabylonReactNative::implementation { // 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(static_cast(windowPtr), _width, _height, windowTypePtr); } 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/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 61c2f0668..66a9c5ff2 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -63,13 +63,19 @@ namespace Babylon void UpdateView(void* windowPtr, void* windowTypePtr, size_t width, size_t height) { + GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); + graphicsConfig.windowPtr = static_cast(windowPtr); + graphicsConfig.windowTypePtr = windowTypePtr; + 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); } diff --git a/Modules/@babylonjs/react-native/shared/CMakeLists.txt b/Modules/@babylonjs/react-native/shared/CMakeLists.txt index 2744bc19c..94fa06e13 100644 --- a/Modules/@babylonjs/react-native/shared/CMakeLists.txt +++ b/Modules/@babylonjs/react-native/shared/CMakeLists.txt @@ -4,4 +4,4 @@ set(SHARED_INCLUDES set(SHARED_SOURCES "${CMAKE_CURRENT_LIST_DIR}/DispatchFunction.h" "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.h" - "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.cpp") \ No newline at end of file + "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.cpp") From e30c40db149724799fb9b181571761ffcfff9916 Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Wed, 24 Mar 2021 21:02:11 -0700 Subject: [PATCH 05/12] update react-native-windows, react-native BabylonNative graphics contract --- .../windows/BabylonReactNative/EngineView.cpp | 4 +--- .../@babylonjs/react-native/shared/BabylonNative.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp index c9f079d77..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(static_cast(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/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 66a9c5ff2..12a89cf2e 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -1,6 +1,7 @@ #include "BabylonNative.h" #include +#include #include #include #include @@ -61,11 +62,10 @@ namespace Babylon Napi::Detach(m_env); } - void UpdateView(void* windowPtr, void* windowTypePtr, size_t width, size_t height) + void UpdateView(WindowType windowPtr, size_t width, size_t height) { GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); - graphicsConfig.windowPtr = static_cast(windowPtr); - graphicsConfig.windowTypePtr = windowTypePtr; + graphicsConfig.windowPtr = windowPtr; graphicsConfig.width = width; graphicsConfig.height = height; @@ -228,11 +228,11 @@ namespace Babylon g_nativeModule.reset(); } - void UpdateView(void* windowPtr, size_t width, size_t height, void* windowTypePtr) + void UpdateView(WindowType 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 { From ff050a33088f26afcefa0962e8e174a3689babd0 Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Thu, 1 Apr 2021 14:54:16 -0700 Subject: [PATCH 06/12] Update BabylonNative to latest commit, remove void* from BabylonNative UpdateView contract --- .../android/src/main/cpp/BabylonNativeInterop.cpp | 2 +- Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm | 2 +- Modules/@babylonjs/react-native/shared/BabylonNative.cpp | 6 +++--- Modules/@babylonjs/react-native/shared/BabylonNative.h | 3 ++- Modules/@babylonjs/react-native/submodules/BabylonNative | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp b/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp index 727c6116b..d2702ff0a 100644 --- a/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp +++ b/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp @@ -66,7 +66,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_babylonreactnative_BabylonNativeInter extern "C" JNIEXPORT void JNICALL Java_com_babylonreactnative_BabylonNativeInterop_00024BabylonNative_updateView(JNIEnv* env, jclass obj, jobject surface) { - ANativeWindow* windowPtr{ ANativeWindow_fromSurface(env, surface) }; + ANativeWindow* windowPtr = ANativeWindow_fromSurface(env, surface); auto width{ static_cast(ANativeWindow_getWidth(windowPtr)) }; auto height{ static_cast(ANativeWindow_getHeight(windowPtr)) }; Babylon::UpdateView(windowPtr, width, height); diff --git a/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm b/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm index 9a5f54d91..44b9ef71f 100644 --- a/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm +++ b/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm @@ -58,7 +58,7 @@ + (void)updateView:(MTKView*)mtkView { const int width = static_cast(mtkView.bounds.size.width * UIScreen.mainScreen.scale); const int height = static_cast(mtkView.bounds.size.height * UIScreen.mainScreen.scale); if (width != 0 && height != 0) { - Babylon::UpdateView((__bridge void*)mtkView, width, height); + Babylon::UpdateView(mtkView, width, height); } } diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 12a89cf2e..64fb03398 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -65,9 +65,9 @@ namespace Babylon void UpdateView(WindowType windowPtr, size_t width, size_t height) { GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); - graphicsConfig.windowPtr = windowPtr; - graphicsConfig.width = width; - graphicsConfig.height = height; + graphicsConfig.WindowPtr = windowPtr; + graphicsConfig.Width = width; + graphicsConfig.Height = height; if (!g_graphics) { diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.h b/Modules/@babylonjs/react-native/shared/BabylonNative.h index f3f556d9a..08291c0e7 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.h +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.h @@ -1,6 +1,7 @@ #pragma once #include +#include namespace Babylon { @@ -8,7 +9,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(WindowType 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 4ea4accb8..8371b7980 160000 --- a/Modules/@babylonjs/react-native/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit 4ea4accb8b433b4f11e1ffa4df76c080624248f5 +Subproject commit 8371b79805f2647dc7c43aa1f3e0a5552f23e2f6 From 82e04baa4f2f92e88e52948cdc133f83c8312f9b Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Fri, 2 Apr 2021 08:39:23 -0700 Subject: [PATCH 07/12] remove WindowType from BabylonNative.h for now --- Modules/@babylonjs/react-native/shared/BabylonNative.cpp | 6 +++--- Modules/@babylonjs/react-native/shared/BabylonNative.h | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 64fb03398..03d060d2e 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -62,10 +62,10 @@ namespace Babylon Napi::Detach(m_env); } - void UpdateView(WindowType windowPtr, size_t width, size_t height) + void UpdateView(void* windowPtr, size_t width, size_t height) { GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); - graphicsConfig.WindowPtr = windowPtr; + graphicsConfig.WindowPtr = (WindowType)windowPtr; graphicsConfig.Width = width; graphicsConfig.Height = height; @@ -228,7 +228,7 @@ namespace Babylon g_nativeModule.reset(); } - void UpdateView(WindowType windowPtr, size_t width, size_t height) + void UpdateView(void* windowPtr, size_t width, size_t height) { if (auto nativeModule{ g_nativeModule.lock() }) { diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.h b/Modules/@babylonjs/react-native/shared/BabylonNative.h index 08291c0e7..f742878ef 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.h +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.h @@ -1,7 +1,6 @@ #pragma once #include -#include namespace Babylon { @@ -9,7 +8,7 @@ namespace Babylon void Initialize(facebook::jsi::Runtime& jsiRuntime, Dispatcher jsDispatcher); void Deinitialize(); - void UpdateView(WindowType windowPtr, size_t width, size_t height); + 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); From f098c112d1e904971231c004e1625762c16dec43 Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Fri, 2 Apr 2021 10:53:25 -0700 Subject: [PATCH 08/12] continue reverting to void*, use reinterpret_cast --- .../react-native/android/src/main/cpp/BabylonNativeInterop.cpp | 2 +- Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm | 2 +- Modules/@babylonjs/react-native/shared/BabylonNative.cpp | 2 +- Modules/@babylonjs/react-native/shared/CMakeLists.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp b/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp index d2702ff0a..727c6116b 100644 --- a/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp +++ b/Modules/@babylonjs/react-native/android/src/main/cpp/BabylonNativeInterop.cpp @@ -66,7 +66,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_babylonreactnative_BabylonNativeInter extern "C" JNIEXPORT void JNICALL Java_com_babylonreactnative_BabylonNativeInterop_00024BabylonNative_updateView(JNIEnv* env, jclass obj, jobject surface) { - ANativeWindow* windowPtr = ANativeWindow_fromSurface(env, surface); + ANativeWindow* windowPtr{ ANativeWindow_fromSurface(env, surface) }; auto width{ static_cast(ANativeWindow_getWidth(windowPtr)) }; auto height{ static_cast(ANativeWindow_getHeight(windowPtr)) }; Babylon::UpdateView(windowPtr, width, height); diff --git a/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm b/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm index 44b9ef71f..9a5f54d91 100644 --- a/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm +++ b/Modules/@babylonjs/react-native/ios/BabylonNativeInterop.mm @@ -58,7 +58,7 @@ + (void)updateView:(MTKView*)mtkView { const int width = static_cast(mtkView.bounds.size.width * UIScreen.mainScreen.scale); const int height = static_cast(mtkView.bounds.size.height * UIScreen.mainScreen.scale); if (width != 0 && height != 0) { - Babylon::UpdateView(mtkView, width, height); + Babylon::UpdateView((__bridge void*)mtkView, width, height); } } diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 03d060d2e..f605acaac 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -65,7 +65,7 @@ namespace Babylon void UpdateView(void* windowPtr, size_t width, size_t height) { GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); - graphicsConfig.WindowPtr = (WindowType)windowPtr; + graphicsConfig.WindowPtr = reinterpret_cast(windowPtr); graphicsConfig.Width = width; graphicsConfig.Height = height; diff --git a/Modules/@babylonjs/react-native/shared/CMakeLists.txt b/Modules/@babylonjs/react-native/shared/CMakeLists.txt index 94fa06e13..2744bc19c 100644 --- a/Modules/@babylonjs/react-native/shared/CMakeLists.txt +++ b/Modules/@babylonjs/react-native/shared/CMakeLists.txt @@ -4,4 +4,4 @@ set(SHARED_INCLUDES set(SHARED_SOURCES "${CMAKE_CURRENT_LIST_DIR}/DispatchFunction.h" "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.h" - "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.cpp") + "${CMAKE_CURRENT_LIST_DIR}/BabylonNative.cpp") \ No newline at end of file From fbaace7290b9ebdc21284103fcdb91b87851bdef Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Fri, 2 Apr 2021 11:22:18 -0700 Subject: [PATCH 09/12] Change openxr_loaderd library name, add static lib build target --- .../windows/BabylonReactNative/BabylonReactNative.vcxproj | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj index e11e63f3b..92a47987a 100644 --- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj +++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj @@ -192,7 +192,7 @@ NativeXr.lib; nvtt.lib; OGLCompilerd.lib; - openxr_loader.lib; + openxr_loaderd.lib; OSDependentd.lib; pvrtc.lib; spirv-cross-core.lib; @@ -328,4 +328,9 @@ + + + + \ No newline at end of file From dfc8de1c0326c40063316f9fe732041833e7affb Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Fri, 2 Apr 2021 14:50:25 -0700 Subject: [PATCH 10/12] Use objc++ compilation for re react-native-ios --- Modules/@babylonjs/react-native/ios/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) 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") From a8cb04dc941fe1fd2fa9d7f5a19915c903e90fba Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Mon, 5 Apr 2021 17:32:24 -0700 Subject: [PATCH 11/12] update BabylonNative to incorporate contract changes, remove GraphicsPlatform.h include --- Modules/@babylonjs/react-native/shared/BabylonNative.cpp | 1 - Modules/@babylonjs/react-native/submodules/BabylonNative | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index f605acaac..840e8accf 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -1,7 +1,6 @@ #include "BabylonNative.h" #include -#include #include #include #include diff --git a/Modules/@babylonjs/react-native/submodules/BabylonNative b/Modules/@babylonjs/react-native/submodules/BabylonNative index 8371b7980..3ecbb47e6 160000 --- a/Modules/@babylonjs/react-native/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit 8371b79805f2647dc7c43aa1f3e0a5552f23e2f6 +Subproject commit 3ecbb47e61124cf5e8464b34d1a7d5f899ff6f3f From 14bbcde00350edcaeeaa21b08036b19fd072b8bb Mon Sep 17 00:00:00 2001 From: Nicholas Barlow Date: Tue, 6 Apr 2021 04:48:56 -0700 Subject: [PATCH 12/12] Update Modules/@babylonjs/react-native/shared/BabylonNative.cpp Co-authored-by: Ryan Tremblay --- Modules/@babylonjs/react-native/shared/BabylonNative.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 840e8accf..fb6a1c88e 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -63,7 +63,7 @@ namespace Babylon void UpdateView(void* windowPtr, size_t width, size_t height) { - GraphicsConfiguration graphicsConfig = GraphicsConfiguration(); + GraphicsConfiguration graphicsConfig{}; graphicsConfig.WindowPtr = reinterpret_cast(windowPtr); graphicsConfig.Width = width; graphicsConfig.Height = height;