Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Modules/@babylonjs/react-native/EngineHook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ class DOMException {
declare const global: any;
global.atob = base64.decode;

// This global object is part of Babylon Native.
declare const _native: {
graphicsInitializationPromise: Promise<void>;
}

export function useEngine(): Engine | undefined {
const [engine, setEngine] = useState<Engine>();

Expand All @@ -72,6 +77,7 @@ export function useEngine(): Engine | undefined {
(async () => {
if (await BabylonModule.initialize() && !disposed)
{
await _native.graphicsInitializationPromise;
engine = new NativeEngine();
setEngine(engine);
}
Expand Down
1 change: 0 additions & 1 deletion Modules/@babylonjs/react-native/android/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ target_link_libraries(BabylonNative
AndroidExtensions
Graphics
JsRuntime
NativeWindow
NativeEngine
NativeInput
NativeXr
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

#include <Babylon/Graphics.h>
#include <Babylon/JsRuntime.h>
#include <Babylon/Plugins/NativeWindow.h>
#include <Babylon/Plugins/NativeEngine.h>
#include <Babylon/Plugins/NativeInput.h>
#include <Babylon/Plugins/NativeXr.h>
Expand Down Expand Up @@ -48,11 +47,10 @@ namespace Babylon
auto width = static_cast<size_t>(ANativeWindow_getWidth(windowPtr));
auto height = static_cast<size_t>(ANativeWindow_getHeight(windowPtr));

m_graphics = Graphics::InitializeFromWindow<void*>(windowPtr, width, height);
m_graphics = Graphics::CreateGraphics(reinterpret_cast<void*>(windowPtr), width, height);
m_graphics->AddToJavaScript(m_env);

Plugins::NativeEngine::Initialize(m_env);
Plugins::NativeWindow::Initialize(m_env, windowPtr, width, height);
Plugins::NativeEngine::Initialize(m_env, true);
Plugins::NativeXr::Initialize(m_env);

Polyfills::Window::Initialize(m_env);
Expand All @@ -73,8 +71,8 @@ namespace Babylon
{
auto width = static_cast<size_t>(ANativeWindow_getWidth(windowPtr));
auto height = static_cast<size_t>(ANativeWindow_getHeight(windowPtr));
m_graphics->ReinitializeFromWindow<void*>(windowPtr, width, height);
Plugins::NativeWindow::Reinitialize(m_env, windowPtr, width, height);
m_graphics->UpdateWindow<void*>(windowPtr);
m_graphics->UpdateSize(width, height);
}

void SetPointerButtonState(uint32_t pointerId, uint32_t buttonId, bool isDown, uint32_t x, uint32_t y)
Expand Down
12 changes: 5 additions & 7 deletions Modules/@babylonjs/react-native/ios/BabylonNative.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

#include <Babylon/Graphics.h>
#include <Babylon/JsRuntime.h>
#include <Babylon/Plugins/NativeWindow.h>
#include <Babylon/Plugins/NativeEngine.h>
#include <Babylon/Plugins/NativeInput.h>
#include <Babylon/Plugins/NativeXr.h>
Expand Down Expand Up @@ -45,7 +44,7 @@ namespace Babylon
: m_impl{ std::make_unique<Native::Impl>(jsiRuntime, callInvoker) }
{
dispatch_sync(dispatch_get_main_queue(), ^{
m_impl->m_graphics = Graphics::InitializeFromWindow<void*>(windowPtr, width, height);
m_impl->m_graphics = Graphics::CreateGraphics(reinterpret_cast<void*>(windowPtr), width, height);
});

m_impl->runtime = &JsRuntime::CreateForJavaScript(m_impl->env, CreateJsRuntimeDispatcher(m_impl->env, jsiRuntime, callInvoker));
Expand All @@ -57,8 +56,7 @@ namespace Babylon
// React Native's implementation, but rather adds a second one scoped to Babylon and used by WebRequest.ts.
Polyfills::XMLHttpRequest::Initialize(m_impl->env);

Plugins::NativeWindow::Initialize(m_impl->env, windowPtr, width, height);
Plugins::NativeEngine::Initialize(m_impl->env);
Plugins::NativeEngine::Initialize(m_impl->env, true);
Plugins::NativeXr::Initialize(m_impl->env);

m_impl->nativeInput = &Babylon::Plugins::NativeInput::CreateForJavaScript(m_impl->env);
Expand All @@ -70,13 +68,13 @@ namespace Babylon

void Native::Refresh(void* windowPtr, size_t width, size_t height)
{
m_impl->m_graphics->ReinitializeFromWindow<void*>(windowPtr, width, height);
Plugins::NativeWindow::Reinitialize(m_impl->env, windowPtr, width, height);
m_impl->m_graphics->UpdateWindow<void*>(windowPtr);
m_impl->m_graphics->UpdateSize(width, height);
}

void Native::Resize(size_t width, size_t height)
{
Plugins::NativeWindow::UpdateSize(m_impl->env, width, height);
m_impl->m_graphics->UpdateSize(width, height);
}

void Native::SetPointerButtonState(uint32_t pointerId, uint32_t buttonId, bool isDown, uint32_t x, uint32_t y)
Expand Down
1 change: 0 additions & 1 deletion Modules/@babylonjs/react-native/ios/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ target_link_libraries(BabylonNative
reactnative
BabylonReactNativeShared
JsRuntime
NativeWindow
NativeEngine
NativeInput
NativeXr
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ Pod::Spec.new do |s|
'napi',
'NativeEngine',
'NativeInput',
'NativeWindow',
'NativeXR',
'SPIRV',
'spirv-cross-core',
Expand Down
2 changes: 1 addition & 1 deletion Modules/@babylonjs/react-native/submodules/BabylonNative
Submodule BabylonNative updated 35 files
+0 −1 Apps/Playground/Android/app/CMakeLists.txt
+15 −6 Apps/Playground/Android/app/src/main/cpp/BabylonNativeJNI.cpp
+10 −0 Apps/Playground/Android/app/src/main/java/BabylonNative/BabylonView.java
+2 −0 Apps/Playground/Android/app/src/main/java/BabylonNative/Wrapper.java
+2 −1 Apps/Playground/CMakeLists.txt
+184 −181 Apps/Playground/Scripts/experience.js
+1 −8 Apps/Playground/UWP/App.cpp
+17 −9 Apps/Playground/Win32/App.cpp
+5 −10 Apps/Playground/X11/App.cpp
+3 −14 Apps/Playground/iOS/LibNativeBridge.mm
+35 −24 Apps/Playground/macOS/ViewController.mm
+0 −1 Apps/ValidationTests/CMakeLists.txt
+65 −58 Apps/ValidationTests/Scripts/validation_native.js
+4 −11 Apps/ValidationTests/Win32/App.cpp
+18 −10 Apps/ValidationTests/X11/App.cpp
+2 −1 Core/Graphics/CMakeLists.txt
+5 −5 Core/Graphics/Include/Babylon/Graphics.h
+145 −65 Core/Graphics/Source/Graphics.cpp
+19 −5 Core/Graphics/Source/GraphicsImpl.h
+11 −2 Core/JsRuntime/CMakeLists.txt
+5 −0 Core/JsRuntime/Include/Babylon/JsRuntime.h
+2 −0 Core/JsRuntime/Source/JsRuntime.cpp
+18 −0 Core/JsRuntime/Source/JsRuntimeInternalState.h
+1 −1 Dependencies/arcana.cpp
+1 −2 Plugins/CMakeLists.txt
+0 −2 Plugins/NativeEngine/CMakeLists.txt
+25 −31 Plugins/NativeEngine/Source/NativeEngine.cpp
+1 −7 Plugins/NativeEngine/Source/NativeEngine.h
+0 −2 Plugins/NativeEngine/Source/NativeEngineAPI.cpp
+0 −24 Plugins/NativeWindow/CMakeLists.txt
+0 −10 Plugins/NativeWindow/Include/Babylon/Plugins/NativeWindow.h
+0 −102 Plugins/NativeWindow/Source/NativeWindow.cpp
+0 −36 Plugins/NativeWindow/Source/NativeWindow.h
+4 −2 Plugins/NativeXr/Source/NativeXr.cpp
+4 −4 azure-pipelines.yml
1 change: 0 additions & 1 deletion Package/gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ Assembled/ios/libs/libWindow.a
Assembled/ios/libs/libbimg.a
Assembled/ios/libs/libOGLCompiler.a
Assembled/ios/libs/libastc.a
Assembled/ios/libs/libNativeWindow.a
Assembled/ios/libs/libNativeEngine.a
Assembled/ios/libs/libNativeXr.a
Assembled/ios/libs/libspirv-cross-glsl.a
Expand Down
1 change: 0 additions & 1 deletion Package/iOS/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ set(PACKAGED_LIBS
napi
NativeEngine
NativeInput
NativeWindow
NativeXr
SPIRV
spirv-cross-core
Expand Down