From b946cbbc0201f83a3cb99255d4f9f1d17d926696 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 29 Jun 2022 09:21:01 +0200
Subject: [PATCH 01/88] packages for 0.65

---
 .github/workflows/pr.yml | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index b00a2e773..f35ab0920 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -120,3 +120,21 @@ jobs:
       - name: Gulp Build ${{ matrix.platform }} ${{ matrix.config }} Playground (Windows)
         run: npx gulp buildUWPPlayground${{ matrix.platform }}${{ matrix.config }}
         working-directory: ./Package
+
+# Test packages
+  build-android-ios-065:
+    uses: ./.github/workflows/ios_android.yml
+    with:
+      react-native-version: 0.65
+      release-version: 2.0.0 # dummy version
+
+  build-windows-065:
+    uses: ./.github/workflows/windows.yml
+    with:
+      react-native-version: 0.65
+      release-version: 2.0.0
+
+  build-typescript:
+    uses: ./.github/workflows/typescript.yml
+    with:
+      release-version: 2.0.0
\ No newline at end of file

From ca107c09861b8455b40ac431dcec81aa7e561682 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 29 Jun 2022 12:20:42 +0200
Subject: [PATCH 02/88] add artifact

---
 .github/workflows/add_artifact_urls.yml | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 .github/workflows/add_artifact_urls.yml

diff --git a/.github/workflows/add_artifact_urls.yml b/.github/workflows/add_artifact_urls.yml
new file mode 100644
index 000000000..aa3320c89
--- /dev/null
+++ b/.github/workflows/add_artifact_urls.yml
@@ -0,0 +1,21 @@
+name: add artifact links to pull request and related issues
+on:
+  workflow_run:
+    workflows: ['PR Build']
+    types: [completed]
+
+jobs:
+  artifacts-url-comments:
+    name: add artifact links to pull request and related issues job
+    runs-on: windows-2019
+    steps:
+      - name: add artifact links to pull request and related issues step
+        uses: tonyhallett/artifacts-url-comments@main
+        env:
+            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+            prefix: Here are the build results
+            suffix: Artifacts will only be retained for 90 days.
+            format: name
+            addTo: pull
+        continue-on-error: true

From a96592416881375483b18a4d88797949b89cbbb6 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 10:36:31 +0100
Subject: [PATCH 03/88] testVersion

---
 .github/workflows/testVersion.yml | 35 +++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 .github/workflows/testVersion.yml

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
new file mode 100644
index 000000000..b2faac8db
--- /dev/null
+++ b/.github/workflows/testVersion.yml
@@ -0,0 +1,35 @@
+name: Publish Package For Preview
+on:
+  workflow_dispatch:
+    inputs:
+      RN_Version:
+        description: 'ReactNative Version'
+        required: true 
+        type: string
+        default: '0.69.0'
+      BRN_Version:
+        description: 'Babylon ReactNative Version'
+        required: true 
+        type: string
+        default: '0-69'
+
+jobs:
+  build:
+    runs-on: macos-latest
+
+    steps:
+    - name: Generate PG
+      run: |
+        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }} --template react-native-template-typescript
+        cd Playground
+        npm install @babylonjs/core
+        npm install @babylonjs/loaders
+        npm install @babylonjs/react-native
+        @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npm build android
+        npm build ios
+    - name: Upload Assembled
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'Assembled'
+        path: Playground
\ No newline at end of file

From a4a3765ff9ce6bad2ec6e0aaf88217d69a7ad962 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 10:37:22 +0100
Subject: [PATCH 04/88] title

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index b2faac8db..b5b989ecd 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -1,4 +1,4 @@
-name: Publish Package For Preview
+name: Test RN/BRN Version
 on:
   workflow_dispatch:
     inputs:

From 3db221650e0a2b08f8028dba3ea72c40e7f986aa Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 10:41:56 +0100
Subject: [PATCH 05/88] template

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index b5b989ecd..eb6710fb3 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -20,7 +20,7 @@ jobs:
     steps:
     - name: Generate PG
       run: |
-        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }} --template react-native-template-typescript
+        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground
         npm install @babylonjs/core
         npm install @babylonjs/loaders

From 80054d4e34ff58cd405390a697804fbefc5ae2d1 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:19:22 +0100
Subject: [PATCH 06/88] ubuntu

---
 .github/workflows/testVersion.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index eb6710fb3..13323a79c 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -15,11 +15,12 @@ on:
 
 jobs:
   build:
-    runs-on: macos-latest
+    runs-on: ubuntu-latest
 
     steps:
     - name: Generate PG
       run: |
+#        brew install ruby@2.7
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground
         npm install @babylonjs/core
@@ -27,7 +28,7 @@ jobs:
         npm install @babylonjs/react-native
         @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
         npm build android
-        npm build ios
+#        npm build ios
     - name: Upload Assembled
       uses: actions/upload-artifact@v2
       with:

From d0ac717a2b4f8a903aaf991074bf447bc54518da Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:20:28 +0100
Subject: [PATCH 07/88] comments

---
 .github/workflows/testVersion.yml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 13323a79c..996d07e4f 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -20,7 +20,6 @@ jobs:
     steps:
     - name: Generate PG
       run: |
-#        brew install ruby@2.7
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground
         npm install @babylonjs/core
@@ -28,7 +27,6 @@ jobs:
         npm install @babylonjs/react-native
         @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
         npm build android
-#        npm build ios
     - name: Upload Assembled
       uses: actions/upload-artifact@v2
       with:

From 4f7d05a7bec28ef511185dd43e145cc254472c86 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:25:02 +0100
Subject: [PATCH 08/88] react-native iosandroid

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 996d07e4f..8ca1580d3 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -25,7 +25,7 @@ jobs:
         npm install @babylonjs/core
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
-        @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
         npm build android
     - name: Upload Assembled
       uses: actions/upload-artifact@v2

From 9663758b2b97c25f6c76cb182ad0e4e8e6884f08 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:28:47 +0100
Subject: [PATCH 09/88] npm build

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 8ca1580d3..4ce3c8b22 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -26,7 +26,7 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npm build android
+        npm build
     - name: Upload Assembled
       uses: actions/upload-artifact@v2
       with:

From 9b60a48940e5b14468821406c77ca4182b820a33 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:33:04 +0100
Subject: [PATCH 10/88] run android

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 4ce3c8b22..f2522ae9d 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -26,7 +26,7 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npm build
+        npm run android
     - name: Upload Assembled
       uses: actions/upload-artifact@v2
       with:

From 3df66646215a2eb2eb88806a47b03ace75325b82 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:42:06 +0100
Subject: [PATCH 11/88] gradlew

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index f2522ae9d..87f88612b 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -26,7 +26,8 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npm run android
+        cd android
+        ./gradlew Playground:assembleRelease --stacktrace --info
     - name: Upload Assembled
       uses: actions/upload-artifact@v2
       with:

From 8dd8a6eb40d04c9b7f590afbd7272384d78e6d83 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:48:39 +0100
Subject: [PATCH 12/88] app

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 87f88612b..03e86c8e7 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -27,7 +27,7 @@ jobs:
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
         cd android
-        ./gradlew Playground:assembleRelease --stacktrace --info
+        ./gradlew app:assembleRelease --stacktrace --info
     - name: Upload Assembled
       uses: actions/upload-artifact@v2
       with:

From 0349f0763148399baea65598253ccfd9fbd70c94 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 25 Jan 2023 11:58:13 +0100
Subject: [PATCH 13/88] apk

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 03e86c8e7..6a6e6cc72 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -32,4 +32,4 @@ jobs:
       uses: actions/upload-artifact@v2
       with:
         name: 'Assembled'
-        path: Playground
\ No newline at end of file
+        path: Playground/android/app/build/outputs/apk/release/app-release.apk
\ No newline at end of file

From d736625b1133a0ed555616cf2dbf429ad7aa9a28 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 10:38:35 +0100
Subject: [PATCH 14/88] windows build

---
 .github/workflows/testVersion.yml | 41 +++++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 6a6e6cc72..c9476a181 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -14,11 +14,31 @@ on:
         default: '0-69'
 
 jobs:
-  build:
+
+  build-windows:
+    runs-on: windows-latest
+    steps:
+      - name: Generate PG Windows
+        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        cd Playground
+        npm install @babylonjs/core
+        npm install @babylonjs/loaders
+        npm install @babylonjs/react-native
+        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npx react-native-windows-init --overwrite
+        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
+
+    - name: Upload UWP x64
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'WindowsUWPx64'
+        path: Playground/windows
+
+  build-android:
     runs-on: ubuntu-latest
 
     steps:
-    - name: Generate PG
+    - name: Generate PG Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground
@@ -26,10 +46,21 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npx react-native-windows-init --overwrite
+        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./Playground.sln"
         cd android
         ./gradlew app:assembleRelease --stacktrace --info
-    - name: Upload Assembled
+
+    - name: Upload APK
       uses: actions/upload-artifact@v2
       with:
-        name: 'Assembled'
-        path: Playground/android/app/build/outputs/apk/release/app-release.apk
\ No newline at end of file
+        name: 'AndroidAPK'
+        path: Playground/android/app/build/outputs/apk/release/app-release.apk
+
+  package:
+    needs: [build-windows, build-android]
+    runs-on: macos-latest
+    steps:
+      - name: Gather 
+      run: |
+        ls -l -a
\ No newline at end of file

From a26918ed6177261c8fdb0d87c29e3e0630e8e7a0 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 10:40:29 +0100
Subject: [PATCH 15/88] indents

---
 .github/workflows/testVersion.yml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index c9476a181..d9289b8f8 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -18,7 +18,8 @@ jobs:
   build-windows:
     runs-on: windows-latest
     steps:
-      - name: Generate PG Windows
+    - name: Generate PG Windows
+      run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground
         npm install @babylonjs/core
@@ -36,7 +37,6 @@ jobs:
 
   build-android:
     runs-on: ubuntu-latest
-
     steps:
     - name: Generate PG Android
       run: |
@@ -62,5 +62,5 @@ jobs:
     runs-on: macos-latest
     steps:
       - name: Gather 
-      run: |
-        ls -l -a
\ No newline at end of file
+        run: |
+          ls -l -a
\ No newline at end of file

From 0d5fd88da9bbb4a3e4dad241e2b0b829b79d178a Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 10:57:25 +0100
Subject: [PATCH 16/88] msbuild

---
 .github/workflows/testVersion.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index d9289b8f8..830339eb2 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -18,6 +18,8 @@ jobs:
   build-windows:
     runs-on: windows-latest
     steps:
+    - name: Add msbuild to PATH
+      uses: microsoft/setup-msbuild@v1.1
     - name: Generate PG Windows
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
@@ -46,8 +48,6 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npx react-native-windows-init --overwrite
-        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./Playground.sln"
         cd android
         ./gradlew app:assembleRelease --stacktrace --info
 

From 8943303e0aced7a658c485d5a55b7e4e5d42adfe Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 11:19:42 +0100
Subject: [PATCH 17/88] windows 2019

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 830339eb2..57dad9412 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -16,7 +16,7 @@ on:
 jobs:
 
   build-windows:
-    runs-on: windows-latest
+    runs-on: windows-2019
     steps:
     - name: Add msbuild to PATH
       uses: microsoft/setup-msbuild@v1.1

From 6a7b5f5fd769e0fd7d74251fbee553b00aae379e Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 11:43:31 +0100
Subject: [PATCH 18/88] nuget restore

---
 .github/workflows/testVersion.yml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 57dad9412..22c0b47a9 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -16,11 +16,11 @@ on:
 jobs:
 
   build-windows:
-    runs-on: windows-2019
+    runs-on: windows-latest
     steps:
     - name: Add msbuild to PATH
       uses: microsoft/setup-msbuild@v1.1
-    - name: Generate PG Windows
+    - name: Build Playground Windows x64
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground
@@ -29,6 +29,7 @@ jobs:
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
         npx react-native-windows-init --overwrite
+        msbuild.exe /r "./windows/Playground.sln"
         msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
 
     - name: Upload UWP x64
@@ -40,7 +41,7 @@ jobs:
   build-android:
     runs-on: ubuntu-latest
     steps:
-    - name: Generate PG Android
+    - name: Build Playground Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cd Playground

From 215641e0c00d1598bc65d95a84833065fd4602e8 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 12:07:58 +0100
Subject: [PATCH 19/88] back to 2019

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 22c0b47a9..2cffd67cc 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -16,7 +16,7 @@ on:
 jobs:
 
   build-windows:
-    runs-on: windows-latest
+    runs-on: windows-2019
     steps:
     - name: Add msbuild to PATH
       uses: microsoft/setup-msbuild@v1.1

From 77937fda93f121404f00428cdddf72f62a81ecef Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Thu, 26 Jan 2023 14:42:32 +0100
Subject: [PATCH 20/88] windows package path

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 2cffd67cc..6c11de3f6 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -36,7 +36,7 @@ jobs:
       uses: actions/upload-artifact@v2
       with:
         name: 'WindowsUWPx64'
-        path: Playground/windows
+        path: Playground/windows/x64/Release/Playground
 
   build-android:
     runs-on: ubuntu-latest

From f70ad573acab24d415e7a3a70518a5365af4068d Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 10:32:04 +0100
Subject: [PATCH 21/88] test emulator

---
 .github/workflows/testVersion.yml | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 6c11de3f6..bdbabd617 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -58,8 +58,30 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
+    - name: Install Android Emulator
+      run: |
+        echo Install Android image
+        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
+        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
+        echo Create AVD
+        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
+
+    - name: Start emulator
+      run: |
+        echo Start emulator
+        nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
+        echo Wait for emulator
+        $ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
+        $ANDROID_HOME/platform-tools/adb devices
+
+    -name: Install & Run .APK
+      run: |
+        adb install -t Playground/android/app/build/outputs/apk/release/app-release.apk
+        adb shell am start -n com.playground/com.playground.MainActivity
+
   package:
-    needs: [build-windows, build-android]
+    #needs: [build-windows, build-android]
+    needs: [build-android]
     runs-on: macos-latest
     steps:
       - name: Gather 

From 2acdfd20e59fd9c0da04b19d3d9eece9754f9fc9 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 10:33:50 +0100
Subject: [PATCH 22/88] typo

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index bdbabd617..9fd07c3d5 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -74,7 +74,7 @@ jobs:
         $ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
         $ANDROID_HOME/platform-tools/adb devices
 
-    -name: Install & Run .APK
+    - name: Install & Run .APK
       run: |
         adb install -t Playground/android/app/build/outputs/apk/release/app-release.apk
         adb shell am start -n com.playground/com.playground.MainActivity

From a7f41bacd7a57bc7e7759c63a4239e096556dc7f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 10:48:02 +0100
Subject: [PATCH 23/88] macos

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 9fd07c3d5..21c647983 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -39,7 +39,7 @@ jobs:
         path: Playground/windows/x64/Release/Playground
 
   build-android:
-    runs-on: ubuntu-latest
+    runs-on: macos-latest
     steps:
     - name: Build Playground Android
       run: |

From 56b3d45d2418b47f3359fd9b1f0f30952212b20f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 10:48:51 +0100
Subject: [PATCH 24/88] no windows

---
 .github/workflows/testVersion.yml | 44 +++++++++++++++----------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 21c647983..0c5b4f2e2 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -15,28 +15,28 @@ on:
 
 jobs:
 
-  build-windows:
-    runs-on: windows-2019
-    steps:
-    - name: Add msbuild to PATH
-      uses: microsoft/setup-msbuild@v1.1
-    - name: Build Playground Windows x64
-      run: |
-        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
-        cd Playground
-        npm install @babylonjs/core
-        npm install @babylonjs/loaders
-        npm install @babylonjs/react-native
-        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npx react-native-windows-init --overwrite
-        msbuild.exe /r "./windows/Playground.sln"
-        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
-
-    - name: Upload UWP x64
-      uses: actions/upload-artifact@v2
-      with:
-        name: 'WindowsUWPx64'
-        path: Playground/windows/x64/Release/Playground
+#  build-windows:
+#    runs-on: windows-2019
+#    steps:
+#    - name: Add msbuild to PATH
+#      uses: microsoft/setup-msbuild@v1.1
+#    - name: Build Playground Windows x64
+#      run: |
+#        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+#        cd Playground
+#        npm install @babylonjs/core
+#        npm install @babylonjs/loaders
+#        npm install @babylonjs/react-native
+#        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+#        npx react-native-windows-init --overwrite
+#        msbuild.exe /r "./windows/Playground.sln"
+#        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
+#
+#    - name: Upload UWP x64
+#      uses: actions/upload-artifact@v2
+#      with:
+#        name: 'WindowsUWPx64'
+#        path: Playground/windows/x64/Release/Playground
 
   build-android:
     runs-on: macos-latest

From d8e085dd17d17166bce9f71dfc5be721e9d0063d Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 10:56:29 +0100
Subject: [PATCH 25/88] separate build & test

---
 .github/workflows/testVersion.yml | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 0c5b4f2e2..b033efca5 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -39,7 +39,7 @@ jobs:
 #        path: Playground/windows/x64/Release/Playground
 
   build-android:
-    runs-on: macos-latest
+    runs-on: ubuntu-latest
     steps:
     - name: Build Playground Android
       run: |
@@ -58,6 +58,15 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
+  test-android:
+    needs: [build-android]
+    runs-on: macos-latest
+    steps:
+    - name: Download APK
+      uses: actions/download-artifact@v2
+      with:
+        name: 'AndroidAPK'
+        path: ./
     - name: Install Android Emulator
       run: |
         echo Install Android image
@@ -81,7 +90,7 @@ jobs:
 
   package:
     #needs: [build-windows, build-android]
-    needs: [build-android]
+    needs: [test-android]
     runs-on: macos-latest
     steps:
       - name: Gather 

From 370b5b9ef2a6a02dcfcec523fc3c1bb7d20ad076 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 11:08:31 +0100
Subject: [PATCH 26/88] apk path

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index b033efca5..e8116f66f 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -85,7 +85,7 @@ jobs:
 
     - name: Install & Run .APK
       run: |
-        adb install -t Playground/android/app/build/outputs/apk/release/app-release.apk
+        adb install -t ./app-release.apk
         adb shell am start -n com.playground/com.playground.MainActivity
 
   package:

From 3c21c537bed5455fad92e4ba68a42b1aefb1b370 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 11:41:14 +0100
Subject: [PATCH 27/88] default paths

---
 .github/workflows/testVersion.yml | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index e8116f66f..9540b66c4 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -70,23 +70,25 @@ jobs:
     - name: Install Android Emulator
       run: |
         echo Install Android image
-        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
-        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
+        echo "y" | sdkmanager --install "system-images;android-27;default;x86_64"
+        echo "y" | sdkmanager --licenses
         echo Create AVD
-        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
+        avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
 
     - name: Start emulator
       run: |
         echo Start emulator
         nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
         echo Wait for emulator
-        $ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
-        $ANDROID_HOME/platform-tools/adb devices
+        adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
+        adb devices
 
     - name: Install & Run .APK
       run: |
         adb install -t ./app-release.apk
         adb shell am start -n com.playground/com.playground.MainActivity
+        sleep 2
+        adb shell pidof com.playground.MainActivity
 
   package:
     #needs: [build-windows, build-android]

From b71ab0e19a1d107aa958c0c50d9039f2bc4953e1 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 12:01:43 +0100
Subject: [PATCH 28/88] check running

---
 .github/workflows/testVersion.yml | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 9540b66c4..606d294e5 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -70,10 +70,10 @@ jobs:
     - name: Install Android Emulator
       run: |
         echo Install Android image
-        echo "y" | sdkmanager --install "system-images;android-27;default;x86_64"
-        echo "y" | sdkmanager --licenses
+        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
+        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
         echo Create AVD
-        avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
+        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
 
     - name: Start emulator
       run: |
@@ -87,8 +87,12 @@ jobs:
       run: |
         adb install -t ./app-release.apk
         adb shell am start -n com.playground/com.playground.MainActivity
-        sleep 2
-        adb shell pidof com.playground.MainActivity
+        # wait not ready
+        adb wait-for-device shell 'while [[ -z $(pidof com.playground | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
+        # wait a bit more
+        sleep 10
+        # check it's still alive
+        if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit(1); fi
 
   package:
     #needs: [build-windows, build-android]

From 94b032db967019457f2443f729b66f42ffe29321 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 12:16:30 +0100
Subject: [PATCH 29/88] script

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 606d294e5..139baa6c7 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -92,7 +92,7 @@ jobs:
         # wait a bit more
         sleep 10
         # check it's still alive
-        if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit(1); fi
+        if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit 1; fi
 
   package:
     #needs: [build-windows, build-android]

From 33ff0e50ee550ca149ec14e976708613a888268d Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 13:09:28 +0100
Subject: [PATCH 30/88] strings

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 139baa6c7..a5f4bb45f 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -88,7 +88,8 @@ jobs:
         adb install -t ./app-release.apk
         adb shell am start -n com.playground/com.playground.MainActivity
         # wait not ready
-        adb wait-for-device shell 'while [[ -z $(pidof com.playground | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
+        adb shell "pidof com.playground"
+        adb shell "while [[ -z $(pidof com.playground | tr -d '\r') ]]; do echo '.''; sleep 1; done; input keyevent 82"
         # wait a bit more
         sleep 10
         # check it's still alive

From 356988c777b8a3863fcc51f4656d953a851e994c Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 13:33:06 +0100
Subject: [PATCH 31/88] verbose checks

---
 .github/workflows/testVersion.yml | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index a5f4bb45f..7476b9185 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -86,14 +86,17 @@ jobs:
     - name: Install & Run .APK
       run: |
         adb install -t ./app-release.apk
+        echo APK installation done.
         adb shell am start -n com.playground/com.playground.MainActivity
-        # wait not ready
+        echo Activity started.
         adb shell "pidof com.playground"
+        echo Activity PID
         adb shell "while [[ -z $(pidof com.playground | tr -d '\r') ]]; do echo '.''; sleep 1; done; input keyevent 82"
-        # wait a bit more
+        echo Activity is running. Waiting 10s.
         sleep 10
-        # check it's still alive
+        echo Checking it's still alive
         if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit 1; fi
+        echo Checks done.
 
   package:
     #needs: [build-windows, build-android]

From eba9baa0ecf67c9e00f58f92e05413fcc20e11ea Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 13:48:33 +0100
Subject: [PATCH 32/88] strings again

---
 .github/workflows/testVersion.yml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 7476b9185..2be075b7d 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -70,15 +70,15 @@ jobs:
     - name: Install Android Emulator
       run: |
         echo Install Android image
-        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
+        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-29;default;x86_64"
         echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
         echo Create AVD
-        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
+        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_29 -d pixel -k "system-images;android-29;default;x86_64"
 
     - name: Start emulator
       run: |
         echo Start emulator
-        nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
+        nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_29 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
         echo Wait for emulator
         adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
         adb devices
@@ -87,11 +87,11 @@ jobs:
       run: |
         adb install -t ./app-release.apk
         echo APK installation done.
-        adb shell am start -n com.playground/com.playground.MainActivity
+        adb wait-for-device shell 'am start -n com.playground/com.playground.MainActivity'
         echo Activity started.
-        adb shell "pidof com.playground"
+        adb wait-for-device shell 'pidof com.playground'
         echo Activity PID
-        adb shell "while [[ -z $(pidof com.playground | tr -d '\r') ]]; do echo '.''; sleep 1; done; input keyevent 82"
+        adb wait-for-device shell 'while [[ -z $(pidof com.playground | tr -d "\r") ]]; do echo "."; sleep 1; done; input keyevent 82'
         echo Activity is running. Waiting 10s.
         sleep 10
         echo Checking it's still alive

From c960ca30c6fa77e8e7954403bd012f2dd5bf1211 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 14:19:24 +0100
Subject: [PATCH 33/88] back to android 27

---
 .github/workflows/testVersion.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 2be075b7d..f558cb2cd 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -70,15 +70,15 @@ jobs:
     - name: Install Android Emulator
       run: |
         echo Install Android image
-        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-29;default;x86_64"
+        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
         echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
         echo Create AVD
-        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_29 -d pixel -k "system-images;android-29;default;x86_64"
+        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
 
     - name: Start emulator
       run: |
         echo Start emulator
-        nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_29 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
+        nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
         echo Wait for emulator
         adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
         adb devices

From 3038f9ffa20f88759de529614125f104a79e657e Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 14:40:13 +0100
Subject: [PATCH 34/88] strings

---
 .github/workflows/testVersion.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index f558cb2cd..3bb27239a 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -87,11 +87,11 @@ jobs:
       run: |
         adb install -t ./app-release.apk
         echo APK installation done.
-        adb wait-for-device shell 'am start -n com.playground/com.playground.MainActivity'
+        adb wait-for-device shell am start -n com.playground/com.playground.MainActivity
         echo Activity started.
-        adb wait-for-device shell 'pidof com.playground'
+        adb wait-for-device shell pidof com.playground
         echo Activity PID
-        adb wait-for-device shell 'while [[ -z $(pidof com.playground | tr -d "\r") ]]; do echo "."; sleep 1; done; input keyevent 82'
+        adb wait-for-device shell while [[ -z $(pidof com.playground | tr -d "\r") ]]; do echo "."; sleep 1; done; input keyevent 82
         echo Activity is running. Waiting 10s.
         sleep 10
         echo Checking it's still alive

From 7a0041dfd4999d816c66ad941c3ffcc57a31de62 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Fri, 27 Jan 2023 15:02:34 +0100
Subject: [PATCH 35/88] mix

---
 .github/workflows/testVersion.yml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 3bb27239a..66450bc5b 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -82,9 +82,6 @@ jobs:
         echo Wait for emulator
         adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
         adb devices
-
-    - name: Install & Run .APK
-      run: |
         adb install -t ./app-release.apk
         echo APK installation done.
         adb wait-for-device shell am start -n com.playground/com.playground.MainActivity

From 237e4c021f6556da184ef3e091798d05405f05b6 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 10:27:49 +0100
Subject: [PATCH 36/88] WIP

---
 .github/workflows/testVersion.yml | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 66450bc5b..5153b9f82 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -58,6 +58,13 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
+    - name: Upload Playground App
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'Playground App'
+        path: Playground/
+
+# test jobs not working
   test-android:
     needs: [build-android]
     runs-on: macos-latest
@@ -96,8 +103,7 @@ jobs:
         echo Checks done.
 
   package:
-    #needs: [build-windows, build-android]
-    needs: [test-android]
+    needs: [build-android]
     runs-on: macos-latest
     steps:
       - name: Gather 

From c5c6004fd63f471bc7c5e48bdb23a9c9cf7b522d Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 10:30:02 +0100
Subject: [PATCH 37/88] remove test android

---
 .github/workflows/testVersion.yml | 72 +++++++++++++++----------------
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 5153b9f82..a4889613f 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -65,42 +65,42 @@ jobs:
         path: Playground/
 
 # test jobs not working
-  test-android:
-    needs: [build-android]
-    runs-on: macos-latest
-    steps:
-    - name: Download APK
-      uses: actions/download-artifact@v2
-      with:
-        name: 'AndroidAPK'
-        path: ./
-    - name: Install Android Emulator
-      run: |
-        echo Install Android image
-        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
-        echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
-        echo Create AVD
-        $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
-
-    - name: Start emulator
-      run: |
-        echo Start emulator
-        nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
-        echo Wait for emulator
-        adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
-        adb devices
-        adb install -t ./app-release.apk
-        echo APK installation done.
-        adb wait-for-device shell am start -n com.playground/com.playground.MainActivity
-        echo Activity started.
-        adb wait-for-device shell pidof com.playground
-        echo Activity PID
-        adb wait-for-device shell while [[ -z $(pidof com.playground | tr -d "\r") ]]; do echo "."; sleep 1; done; input keyevent 82
-        echo Activity is running. Waiting 10s.
-        sleep 10
-        echo Checking it's still alive
-        if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit 1; fi
-        echo Checks done.
+# test-android:
+#   needs: [build-android]
+#   runs-on: macos-latest
+#   steps:
+#   - name: Download APK
+#     uses: actions/download-artifact@v2
+#     with:
+#       name: 'AndroidAPK'
+#       path: ./
+#   - name: Install Android Emulator
+#     run: |
+#       echo Install Android image
+#       echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-27;default;x86_64"
+#       echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses
+#       echo Create AVD
+#       $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k "system-images;android-27;default;x86_64"
+#
+#   - name: Start emulator
+#     run: |
+#       echo Start emulator
+#       nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-audio -no-boot-anim -camera-back none -camera-front none -qemu -m 2048 2>&1 &
+#       echo Wait for emulator
+#       adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do echo "."; sleep 1; done; input keyevent 82'
+#       adb devices
+#       adb install -t ./app-release.apk
+#       echo APK installation done.
+#       adb wait-for-device shell am start -n com.playground/com.playground.MainActivity
+#       echo Activity started.
+#       adb wait-for-device shell pidof com.playground
+#       echo Activity PID
+#       adb wait-for-device shell while [[ -z $(pidof com.playground | tr -d "\r") ]]; do echo "."; sleep 1; done; input keyevent 82
+#       echo Activity is running. Waiting 10s.
+#       sleep 10
+#       echo Checking it's still alive
+#       if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit 1; fi
+#       echo Checks done.
 
   package:
     needs: [build-android]

From b41fc6961d1864bc911edf2e4213fc7def791003 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 11:18:35 +0100
Subject: [PATCH 38/88] update app TS

---
 .github/workflows/testVersion.yml | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index a4889613f..a024bf1a0 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -41,6 +41,11 @@ jobs:
   build-android:
     runs-on: ubuntu-latest
     steps:
+    - name: Checkout Repo
+      uses: actions/checkout@v2.3.3
+    - name: Update App scripts
+      run: |
+        cp Apps/Playground/playground-shared/* ./Playground/
     - name: Build Playground Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
@@ -49,6 +54,7 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npm install @react-native-community/slider
         cd android
         ./gradlew app:assembleRelease --stacktrace --info
 
@@ -58,11 +64,11 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
-    - name: Upload Playground App
-      uses: actions/upload-artifact@v2
-      with:
-        name: 'Playground App'
-        path: Playground/
+#   - name: Upload Playground App
+#     uses: actions/upload-artifact@v2
+#     with:
+#       name: 'Playground App'
+#       path: Playground/
 
 # test jobs not working
 # test-android:

From 35d9166b8522babbf63efa9875bf44899f56f09c Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 11:24:06 +0100
Subject: [PATCH 39/88] cp script

---
 .github/workflows/testVersion.yml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index a024bf1a0..c9f97f894 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -43,12 +43,10 @@ jobs:
     steps:
     - name: Checkout Repo
       uses: actions/checkout@v2.3.3
-    - name: Update App scripts
-      run: |
-        cp Apps/Playground/playground-shared/* ./Playground/
     - name: Build Playground Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        cp Apps/Playground/playground-shared/* ./Playground/
         cd Playground
         npm install @babylonjs/core
         npm install @babylonjs/loaders

From 2062bb44c65b4addeecef9d4b0e56567042b4f0f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 11:30:42 +0100
Subject: [PATCH 40/88] again

---
 .github/workflows/testVersion.yml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index c9f97f894..ff6369748 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -38,6 +38,8 @@ jobs:
 #        name: 'WindowsUWPx64'
 #        path: Playground/windows/x64/Release/Playground
 
+#        npm install @react-native-community/slider
+
   build-android:
     runs-on: ubuntu-latest
     steps:
@@ -48,11 +50,11 @@ jobs:
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cp Apps/Playground/playground-shared/* ./Playground/
         cd Playground
+        ls -R
         npm install @babylonjs/core
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npm install @react-native-community/slider
         cd android
         ./gradlew app:assembleRelease --stacktrace --info
 

From c848c851b435377b1c72b81d1f488ae3fae777b9 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 11:36:00 +0100
Subject: [PATCH 41/88] config crash

---
 .github/workflows/testVersion.yml | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index ff6369748..73ad7de73 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -6,12 +6,12 @@ on:
         description: 'ReactNative Version'
         required: true 
         type: string
-        default: '0.69.0'
+        default: '0.71.0'
       BRN_Version:
         description: 'Babylon ReactNative Version'
         required: true 
         type: string
-        default: '0-69'
+        default: '0-70'
 
 jobs:
 
@@ -38,8 +38,8 @@ jobs:
 #        name: 'WindowsUWPx64'
 #        path: Playground/windows/x64/Release/Playground
 
-#        npm install @react-native-community/slider
-
+#        
+cp Apps/Playground/playground-shared/* ./Playground/
   build-android:
     runs-on: ubuntu-latest
     steps:
@@ -48,13 +48,14 @@ jobs:
     - name: Build Playground Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
-        cp Apps/Playground/playground-shared/* ./Playground/
+        
         cd Playground
         ls -R
         npm install @babylonjs/core
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npm install @react-native-community/slider
         cd android
         ./gradlew app:assembleRelease --stacktrace --info
 

From 93f06131254083db8b4b62dedce8aba6e984ae0b Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 11:38:04 +0100
Subject: [PATCH 42/88] removed copy

---
 .github/workflows/testVersion.yml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 73ad7de73..e528a5495 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -39,7 +39,7 @@ jobs:
 #        path: Playground/windows/x64/Release/Playground
 
 #        
-cp Apps/Playground/playground-shared/* ./Playground/
+# cp Apps/Playground/playground-shared/* ./Playground/
   build-android:
     runs-on: ubuntu-latest
     steps:
@@ -48,7 +48,6 @@ cp Apps/Playground/playground-shared/* ./Playground/
     - name: Build Playground Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
-        
         cd Playground
         ls -R
         npm install @babylonjs/core

From 08c0d34e5c16ce5055e3c27aece5e82db35c8f37 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 11:45:12 +0100
Subject: [PATCH 43/88] try copy again

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index e528a5495..e053fbf64 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -39,7 +39,7 @@ jobs:
 #        path: Playground/windows/x64/Release/Playground
 
 #        
-# cp Apps/Playground/playground-shared/* ./Playground/
+# 
   build-android:
     runs-on: ubuntu-latest
     steps:
@@ -48,6 +48,7 @@ jobs:
     - name: Build Playground Android
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         ls -R
         npm install @babylonjs/core

From 2b885c4871ffa42237d2eea3f33585790b57c2d1 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 12:17:45 +0100
Subject: [PATCH 44/88] version quotes

---
 .github/workflows/testVersion.yml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index e053fbf64..57afdfdf8 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -47,10 +47,9 @@ jobs:
       uses: actions/checkout@v2.3.3
     - name: Build Playground Android
       run: |
-        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}"
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
-        ls -R
         npm install @babylonjs/core
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native

From d96e0bb5f708817ee6ec6ae60935eb2940fa187c Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 13:43:14 +0100
Subject: [PATCH 45/88] verbose

---
 .github/workflows/testVersion.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 57afdfdf8..1c6958aee 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -6,7 +6,7 @@ on:
         description: 'ReactNative Version'
         required: true 
         type: string
-        default: '0.71.0'
+        default: '0.70.7'
       BRN_Version:
         description: 'Babylon ReactNative Version'
         required: true 
@@ -47,7 +47,7 @@ jobs:
       uses: actions/checkout@v2.3.3
     - name: Build Playground Android
       run: |
-        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}"
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core

From c63ca9cab08359f886eee6c27a68b017389b40da Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 13:55:07 +0100
Subject: [PATCH 46/88] list versions

---
 .github/workflows/testVersion.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 1c6958aee..a4b9baf7a 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -47,6 +47,8 @@ jobs:
       uses: actions/checkout@v2.3.3
     - name: Build Playground Android
       run: |
+        npm view react-native versions
+        npm uninstall -g react-native-cli @react-native-community/cli
         npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground

From 3b7a6966d06d0cdc367a1647c09217b1cc0e7573 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 14:08:50 +0100
Subject: [PATCH 47/88] an 1

---
 .github/workflows/testVersion.yml | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index a4b9baf7a..f4cec7a1e 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -47,7 +47,6 @@ jobs:
       uses: actions/checkout@v2.3.3
     - name: Build Playground Android
       run: |
-        npm view react-native versions
         npm uninstall -g react-native-cli @react-native-community/cli
         npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
@@ -66,11 +65,11 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
-#   - name: Upload Playground App
-#     uses: actions/upload-artifact@v2
-#     with:
-#       name: 'Playground App'
-#       path: Playground/
+    - name: Upload Playground App
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'Playground App'
+        path: Playground/
 
 # test jobs not working
 # test-android:

From ba8c1c18d6317769cbb7173e3825c5543a999ea4 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 14:53:16 +0100
Subject: [PATCH 48/88] template

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index f4cec7a1e..03490d526 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -48,7 +48,7 @@ jobs:
     - name: Build Playground Android
       run: |
         npm uninstall -g react-native-cli @react-native-community/cli
-        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core

From 4c94ee9f684996137bba9498e6a57cb65c1f2b41 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 14:53:55 +0100
Subject: [PATCH 49/88] no upload

---
 .github/workflows/testVersion.yml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 03490d526..51f95d6f1 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -65,11 +65,11 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
-    - name: Upload Playground App
-      uses: actions/upload-artifact@v2
-      with:
-        name: 'Playground App'
-        path: Playground/
+#    - name: Upload Playground App
+#      uses: actions/upload-artifact@v2
+#      with:
+#        name: 'Playground App'
+#        path: Playground/
 
 # test jobs not working
 # test-android:

From 6bd01fcc275681edf082dbedd355d4bb99e6c363 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 14:58:49 +0100
Subject: [PATCH 50/88] version

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 51f95d6f1..15e55d41b 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -48,7 +48,7 @@ jobs:
     - name: Build Playground Android
       run: |
         npm uninstall -g react-native-cli @react-native-community/cli
-        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
+        npx react-native init Playground --verbose --template react-native-template-typescript@${{ github.event.inputs.RN_Version }}
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core

From 088aac3ca2f5c63c325d7c54f1f2d4dba35c876d Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 15:08:09 +0100
Subject: [PATCH 51/88] and again

---
 .github/workflows/testVersion.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 15e55d41b..51f95d6f1 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -48,7 +48,7 @@ jobs:
     - name: Build Playground Android
       run: |
         npm uninstall -g react-native-cli @react-native-community/cli
-        npx react-native init Playground --verbose --template react-native-template-typescript@${{ github.event.inputs.RN_Version }}
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core

From a5f1831ea322299ba9a289b69d32a73e04417c26 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 15:21:20 +0100
Subject: [PATCH 52/88] template

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 51f95d6f1..52c40eb6b 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -48,7 +48,8 @@ jobs:
     - name: Build Playground Android
       run: |
         npm uninstall -g react-native-cli @react-native-community/cli
-        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
+# npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
+        npx react-native init Playground --template react-native-template-typescript@6.12.10
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core

From 5e67e073c709353a0df0868f4da342a490358595 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 15:22:13 +0100
Subject: [PATCH 53/88] comment

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 52c40eb6b..25f3e83b4 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -40,6 +40,8 @@ jobs:
 
 #        
 # 
+# npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
+
   build-android:
     runs-on: ubuntu-latest
     steps:
@@ -48,7 +50,6 @@ jobs:
     - name: Build Playground Android
       run: |
         npm uninstall -g react-native-cli @react-native-community/cli
-# npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
         npx react-native init Playground --template react-native-template-typescript@6.12.10
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground

From fb9b544ea0c99da15fcd9a683f5de51682c8c7ba Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Wed, 8 Feb 2023 15:43:50 +0100
Subject: [PATCH 54/88] 0.71.2

---
 .github/workflows/testVersion.yml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 25f3e83b4..9719d0365 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -6,7 +6,7 @@ on:
         description: 'ReactNative Version'
         required: true 
         type: string
-        default: '0.70.7'
+        default: '0.71.2'
       BRN_Version:
         description: 'Babylon ReactNative Version'
         required: true 
@@ -40,7 +40,8 @@ jobs:
 
 #        
 # 
-# npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --template react-native-template-typescript
+#  --template react-native-template-typescript
+# npx react-native init Playground --template react-native-template-typescript@6.12.10
 
   build-android:
     runs-on: ubuntu-latest
@@ -50,7 +51,7 @@ jobs:
     - name: Build Playground Android
       run: |
         npm uninstall -g react-native-cli @react-native-community/cli
-        npx react-native init Playground --template react-native-template-typescript@6.12.10
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core

From ffbd50b66c93e1ab1fa30496da36026f02c98cc1 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <ceguille@microsoft.com>
Date: Mon, 20 Feb 2023 09:47:41 +0100
Subject: [PATCH 55/88] PG gen

---
 .github/workflows/testVersion.yml | 46 ++++++++++++++++---------------
 1 file changed, 24 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 9719d0365..9fd263198 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -15,34 +15,36 @@ on:
 
 jobs:
 
-#  build-windows:
-#    runs-on: windows-2019
-#    steps:
-#    - name: Add msbuild to PATH
-#      uses: microsoft/setup-msbuild@v1.1
-#    - name: Build Playground Windows x64
-#      run: |
-#        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
-#        cd Playground
-#        npm install @babylonjs/core
-#        npm install @babylonjs/loaders
-#        npm install @babylonjs/react-native
-#        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-#        npx react-native-windows-init --overwrite
-#        msbuild.exe /r "./windows/Playground.sln"
-#        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
-#
-#    - name: Upload UWP x64
-#      uses: actions/upload-artifact@v2
-#      with:
-#        name: 'WindowsUWPx64'
-#        path: Playground/windows/x64/Release/Playground
+  build-windows:
+    runs-on: windows-2019
+    steps:
+    - name: Add msbuild to PATH
+      uses: microsoft/setup-msbuild@v1.1
+    - name: Build Playground Windows x64
+      run: |
+        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        cd Playground
+        npm install @babylonjs/core
+        npm install @babylonjs/loaders
+        npm install @babylonjs/react-native
+        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npx react-native-windows-init --overwrite
+
+    - name: Upload UWP x64
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'PG'
+        path: Playground
 
 #        
 # 
 #  --template react-native-template-typescript
 # npx react-native init Playground --template react-native-template-typescript@6.12.10
 
+        #msbuild.exe /r "./windows/Playground.sln"
+        #msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
+
+
   build-android:
     runs-on: ubuntu-latest
     steps:

From af32bf2dcbad25f3a89981885de236ee6cd7d93f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 6 Mar 2023 17:35:20 +0100
Subject: [PATCH 56/88] postfix package

---
 .github/workflows/testVersion.yml | 51 +++++++++++++++++--------------
 1 file changed, 28 insertions(+), 23 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 9fd263198..26aa573dc 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -6,35 +6,40 @@ on:
         description: 'ReactNative Version'
         required: true 
         type: string
-        default: '0.71.2'
+        default: '0.71.0'
       BRN_Version:
-        description: 'Babylon ReactNative Version'
+        description: 'BRN package version'
         required: true 
         type: string
-        default: '0-70'
+        default: '1.5.2-preview'
+      BRN_Postfix:
+        description: 'BRN package postfix'
+        required: true 
+        type: string
+        default: '0-71'
 
 jobs:
 
-  build-windows:
-    runs-on: windows-2019
-    steps:
-    - name: Add msbuild to PATH
-      uses: microsoft/setup-msbuild@v1.1
-    - name: Build Playground Windows x64
-      run: |
-        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
-        cd Playground
-        npm install @babylonjs/core
-        npm install @babylonjs/loaders
-        npm install @babylonjs/react-native
-        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
-        npx react-native-windows-init --overwrite
-
-    - name: Upload UWP x64
-      uses: actions/upload-artifact@v2
-      with:
-        name: 'PG'
-        path: Playground
+#  build-windows:
+#    runs-on: windows-2019
+#    steps:
+#    - name: Add msbuild to PATH
+#      uses: microsoft/setup-msbuild@v1.1
+#    - name: Build Playground Windows x64
+#      run: |
+#        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+#        cd Playground
+#        npm install @babylonjs/core
+#        npm install @babylonjs/loaders
+#        npm install @babylonjs/react-native
+#        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
+#        npx react-native-windows-init --overwrite
+#
+#    - name: Upload UWP x64
+#      uses: actions/upload-artifact@v2
+#      with:
+#        name: 'PG'
+#        path: Playground
 
 #        
 # 

From 6848f051e9d23445f0ca99a13821d3c425a3fcec Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 6 Mar 2023 17:36:18 +0100
Subject: [PATCH 57/88] fix android

---
 .github/workflows/testVersion.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 26aa573dc..872ed3fca 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -63,8 +63,8 @@ jobs:
         cd Playground
         npm install @babylonjs/core
         npm install @babylonjs/loaders
-        npm install @babylonjs/react-native
-        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Version }}
+        npm install @babylonjs/react-native@${{ github.event.inputs.BRN_Version }}
+        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
         npm install @react-native-community/slider
         cd android
         ./gradlew app:assembleRelease --stacktrace --info

From 6ba61d61e98554a718dc3e2fc531bd89cc625c7b Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 10:20:45 +0100
Subject: [PATCH 58/88] windows build

---
 .github/workflows/testVersion.yml | 61 ++++++++++++-------------------
 1 file changed, 23 insertions(+), 38 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 872ed3fca..be011713f 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -11,7 +11,7 @@ on:
         description: 'BRN package version'
         required: true 
         type: string
-        default: '1.5.2-preview'
+        default: '1.5.3-preview'
       BRN_Postfix:
         description: 'BRN package postfix'
         required: true 
@@ -19,30 +19,29 @@ on:
         default: '0-71'
 
 jobs:
+  build-windows:
+    runs-on: windows-2019
+    steps:
+    - name: Add msbuild to PATH
+      uses: microsoft/setup-msbuild@v1.1
+    - name: Build Playground Windows x64
+      run: |
+        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        cd Playground
+        npm install @babylonjs/core
+        npm install @babylonjs/loaders
+        npm install @babylonjs/react-native
+        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
+        npx react-native-windows-init --overwrite
+        msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
 
-#  build-windows:
-#    runs-on: windows-2019
-#    steps:
-#    - name: Add msbuild to PATH
-#      uses: microsoft/setup-msbuild@v1.1
-#    - name: Build Playground Windows x64
-#      run: |
-#        npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
-#        cd Playground
-#        npm install @babylonjs/core
-#        npm install @babylonjs/loaders
-#        npm install @babylonjs/react-native
-#        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
-#        npx react-native-windows-init --overwrite
-#
-#    - name: Upload UWP x64
-#      uses: actions/upload-artifact@v2
-#      with:
-#        name: 'PG'
-#        path: Playground
-
-#        
-# 
+    - name: Upload UWP x64
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'PG'
+        path: Playground
+        
+ 
 #  --template react-native-template-typescript
 # npx react-native init Playground --template react-native-template-typescript@6.12.10
 
@@ -75,12 +74,6 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
-#    - name: Upload Playground App
-#      uses: actions/upload-artifact@v2
-#      with:
-#        name: 'Playground App'
-#        path: Playground/
-
 # test jobs not working
 # test-android:
 #   needs: [build-android]
@@ -118,11 +111,3 @@ jobs:
 #       echo Checking it's still alive
 #       if [[ -z "$(pidof com.playground | tr -d '\r')" ]]; then echo "com.playground is not running."; exit 1; fi
 #       echo Checks done.
-
-  package:
-    needs: [build-android]
-    runs-on: macos-latest
-    steps:
-      - name: Gather 
-        run: |
-          ls -l -a
\ No newline at end of file

From 060d90cb15c2059e50e46da7f6d264b927e5162a Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 10:38:57 +0100
Subject: [PATCH 59/88] nuget restore

---
 .github/workflows/testVersion.yml | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index be011713f..fc2babe5e 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -30,9 +30,10 @@ jobs:
         cd Playground
         npm install @babylonjs/core
         npm install @babylonjs/loaders
-        npm install @babylonjs/react-native
+        npm install @babylonjs/react-native@${{ github.event.inputs.BRN_Version }}
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
         npx react-native-windows-init --overwrite
+        msbuild.exe /r "./windows/Playground.sln"
         msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
 
     - name: Upload UWP x64
@@ -40,14 +41,6 @@ jobs:
       with:
         name: 'PG'
         path: Playground
-        
- 
-#  --template react-native-template-typescript
-# npx react-native init Playground --template react-native-template-typescript@6.12.10
-
-        #msbuild.exe /r "./windows/Playground.sln"
-        #msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
-
 
   build-android:
     runs-on: ubuntu-latest

From fdf1d2d0d630e7bba41226840c6cb0a5ea92352f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 14:45:43 +0100
Subject: [PATCH 60/88] up windows

---
 .github/workflows/testVersion.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index fc2babe5e..c8e2b7f16 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -27,6 +27,7 @@ jobs:
     - name: Build Playground Windows x64
       run: |
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
+        cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
         npm install @babylonjs/core
         npm install @babylonjs/loaders
@@ -39,8 +40,8 @@ jobs:
     - name: Upload UWP x64
       uses: actions/upload-artifact@v2
       with:
-        name: 'PG'
-        path: Playground
+        name: Upload appx
+        path: Playground/windows/AppPackages/Playground/Playground_1.0.0.0_x64_Test/Playground_1.0.0.0_x64.appx
 
   build-android:
     runs-on: ubuntu-latest

From 13aca4f3f49dcba062e09cab9798796394a8a6ab Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 15:31:57 +0100
Subject: [PATCH 61/88] missing windows checkout

---
 .github/workflows/testVersion.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index c8e2b7f16..ae2c5b97a 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -22,6 +22,8 @@ jobs:
   build-windows:
     runs-on: windows-2019
     steps:
+    - name: Checkout Repo
+      uses: actions/checkout@v2.3.3
     - name: Add msbuild to PATH
       uses: microsoft/setup-msbuild@v1.1
     - name: Build Playground Windows x64

From 3f14305c376bed1380d82dc6bdb01c017eb0abcd Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 16:32:08 +0100
Subject: [PATCH 62/88] more packages

---
 .github/workflows/testVersion.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index ae2c5b97a..7f9fc7596 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -35,6 +35,8 @@ jobs:
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native@${{ github.event.inputs.BRN_Version }}
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
+        npm install @react-native-community/slider@4.0.0-rc.3
+        npm install react-native-permissions@3.0.0
         npx react-native-windows-init --overwrite
         msbuild.exe /r "./windows/Playground.sln"
         msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"

From ea6933d8751cdd24db8cfdbbcb030d548b4c328f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 17:24:58 +0100
Subject: [PATCH 63/88] autolink

---
 .github/workflows/testVersion.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 7f9fc7596..68f0cedec 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -38,6 +38,7 @@ jobs:
         npm install @react-native-community/slider@4.0.0-rc.3
         npm install react-native-permissions@3.0.0
         npx react-native-windows-init --overwrite
+        npx react-native autolink-windows
         msbuild.exe /r "./windows/Playground.sln"
         msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
 

From 38b8731017d28ca4717607ecd01afd730e91c982 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 17:49:23 +0100
Subject: [PATCH 64/88] ios build

---
 .github/workflows/testVersion.yml | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 68f0cedec..3055b7ab4 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -73,6 +73,37 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
+build-ios:
+    runs-on: macos-latest
+    steps:
+    - name: Checkout Repo
+      uses: actions/checkout@v2.3.3
+    - name: Clone iOS Toolchain
+      run: |
+        git clone https://github.com/leetal/ios-cmake.git
+    - name: Build Playground iOS
+      run: |
+        npm uninstall -g react-native-cli @react-native-community/cli
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
+        cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
+        cd Playground
+        npm install @babylonjs/core
+        npm install @babylonjs/loaders
+        npm install @babylonjs/react-native@${{ github.event.inputs.BRN_Version }}
+        npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
+        npm install @react-native-community/slider
+        mkdir ios/build
+        cd ios/build
+        cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../../../ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64COMBINED -DENABLE_ARC=0 -DENABLE_BITCODE=1 -DDEPLOYMENT_TARGET=12 -DENABLE_PCH=OFF ..
+        xcodebuild -sdk iphoneos -configuration Release -project ReactNativeBabylon.xcodeproj -scheme BabylonNative build CODE_SIGNING_ALLOWED=NO
+        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -project ReactNativeBabylon.xcodeproj -scheme BabylonNative build CODE_SIGNING_ALLOWED=NO
+
+    - name: Upload iOS App
+      uses: actions/upload-artifact@v2
+      with:
+        name: 'iOSApp'
+        path: Playground/ios/build
+
 # test jobs not working
 # test-android:
 #   needs: [build-android]

From 3603139fdf2c66120c53e038de4a847437308d4e Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 17:50:40 +0100
Subject: [PATCH 65/88] indent

---
 .github/workflows/testVersion.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 3055b7ab4..ef4dc78ca 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -73,7 +73,7 @@ jobs:
         name: 'AndroidAPK'
         path: Playground/android/app/build/outputs/apk/release/app-release.apk
 
-build-ios:
+  build-ios:
     runs-on: macos-latest
     steps:
     - name: Checkout Repo
@@ -103,7 +103,7 @@ build-ios:
       with:
         name: 'iOSApp'
         path: Playground/ios/build
-
+ 
 # test jobs not working
 # test-android:
 #   needs: [build-android]

From 79f349b209aa0a0280d100f579440567160fa79f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 18:29:10 +0100
Subject: [PATCH 66/88] and again

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index ef4dc78ca..d63a84a21 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -38,8 +38,8 @@ jobs:
         npm install @react-native-community/slider@4.0.0-rc.3
         npm install react-native-permissions@3.0.0
         npx react-native-windows-init --overwrite
-        npx react-native autolink-windows
         msbuild.exe /r "./windows/Playground.sln"
+        npx react-native autolink-windows
         msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
 
     - name: Upload UWP x64
@@ -83,6 +83,7 @@ jobs:
         git clone https://github.com/leetal/ios-cmake.git
     - name: Build Playground iOS
       run: |
+        brew install cocoapods
         npm uninstall -g react-native-cli @react-native-community/cli
         npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx

From 6380a6f0c0bab859c9eecb31b37c365c942dd4f4 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 18:43:47 +0100
Subject: [PATCH 67/88] pods

---
 .github/workflows/testVersion.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index d63a84a21..96883a74c 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -83,7 +83,8 @@ jobs:
         git clone https://github.com/leetal/ios-cmake.git
     - name: Build Playground iOS
       run: |
-        brew install cocoapods
+        brew install node
+        brew install watchman
         npm uninstall -g react-native-cli @react-native-community/cli
         npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx

From 90b72e6e3d28c260acd226b89df4c935c0f5785b Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Wed, 8 Mar 2023 19:15:43 +0100
Subject: [PATCH 68/88] ios install

---
 .github/workflows/testVersion.yml | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 96883a74c..d28ab2296 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -86,16 +86,19 @@ jobs:
         brew install node
         brew install watchman
         npm uninstall -g react-native-cli @react-native-community/cli
-        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose
+        npx react-native init Playground --version "${{ github.event.inputs.RN_Version }}" --verbose --skip-install
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
+        yarn install
         npm install @babylonjs/core
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native@${{ github.event.inputs.BRN_Version }}
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
         npm install @react-native-community/slider
-        mkdir ios/build
-        cd ios/build
+        cd ios
+        pod install
+        mkdir build
+        cd build
         cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../../../ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64COMBINED -DENABLE_ARC=0 -DENABLE_BITCODE=1 -DDEPLOYMENT_TARGET=12 -DENABLE_PCH=OFF ..
         xcodebuild -sdk iphoneos -configuration Release -project ReactNativeBabylon.xcodeproj -scheme BabylonNative build CODE_SIGNING_ALLOWED=NO
         xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -project ReactNativeBabylon.xcodeproj -scheme BabylonNative build CODE_SIGNING_ALLOWED=NO

From 18ac18c1901a2d5838235fc02ce4d6f12242b7b1 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Thu, 9 Mar 2023 10:01:46 +0100
Subject: [PATCH 69/88] ios build

---
 .github/workflows/testVersion.yml | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index d28ab2296..9f2346875 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -97,11 +97,8 @@ jobs:
         npm install @react-native-community/slider
         cd ios
         pod install
-        mkdir build
-        cd build
-        cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../../../ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64COMBINED -DENABLE_ARC=0 -DENABLE_BITCODE=1 -DDEPLOYMENT_TARGET=12 -DENABLE_PCH=OFF ..
-        xcodebuild -sdk iphoneos -configuration Release -project ReactNativeBabylon.xcodeproj -scheme BabylonNative build CODE_SIGNING_ALLOWED=NO
-        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -project ReactNativeBabylon.xcodeproj -scheme BabylonNative build CODE_SIGNING_ALLOWED=NO
+        xcodebuild -sdk iphoneos -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
+        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
 
     - name: Upload iOS App
       uses: actions/upload-artifact@v2

From d73df40d7593c4ff8fd2bb387d07e451df63a54b Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Thu, 9 Mar 2023 12:06:20 +0100
Subject: [PATCH 70/88] more tests

---
 .github/workflows/testVersion.yml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 9f2346875..94c21c35e 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -31,15 +31,15 @@ jobs:
         npx react-native init Playground --version ${{ github.event.inputs.RN_Version }}
         cp Apps/Playground/playground-shared/App.tsx ./Playground/App.tsx
         cd Playground
+        npx react-native-windows-init --overwrite
         npm install @babylonjs/core
         npm install @babylonjs/loaders
         npm install @babylonjs/react-native@${{ github.event.inputs.BRN_Version }}
         npm install @babylonjs/react-native-iosandroid-${{ github.event.inputs.BRN_Postfix }}@${{ github.event.inputs.BRN_Version }}
-        npm install @react-native-community/slider@4.0.0-rc.3
-        npm install react-native-permissions@3.0.0
-        npx react-native-windows-init --overwrite
-        msbuild.exe /r "./windows/Playground.sln"
+        npm install @react-native-community/slider
+        #npm install react-native-permissions@3.0.0
         npx react-native autolink-windows
+        msbuild.exe /r "./windows/Playground.sln"
         msbuild.exe /p:Configuration="Release" /p:Platform="x64" /m "./windows/Playground.sln"
 
     - name: Upload UWP x64
@@ -97,14 +97,14 @@ jobs:
         npm install @react-native-community/slider
         cd ios
         pod install
-        xcodebuild -sdk iphoneos -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
-        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
+        #xcodebuild -sdk iphoneos -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
+        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO -archivePath ./playgroundSimulator.xcarchive archive
 
     - name: Upload iOS App
       uses: actions/upload-artifact@v2
       with:
         name: 'iOSApp'
-        path: Playground/ios/build
+        path: Playground/ios/playgroundSimulator.xcarchive
  
 # test jobs not working
 # test-android:

From ff7dc8626749562fedfadc0e1034961f509dcceb Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Thu, 9 Mar 2023 15:28:56 +0100
Subject: [PATCH 71/88] test ios-build-action

---
 .github/workflows/testVersion.yml | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 94c21c35e..41b0c61f2 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -45,7 +45,7 @@ jobs:
     - name: Upload UWP x64
       uses: actions/upload-artifact@v2
       with:
-        name: Upload appx
+        name: 'WindowsAppx'
         path: Playground/windows/AppPackages/Playground/Playground_1.0.0.0_x64_Test/Playground_1.0.0.0_x64.appx
 
   build-android:
@@ -98,13 +98,23 @@ jobs:
         cd ios
         pod install
         #xcodebuild -sdk iphoneos -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
-        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO -archivePath ./playgroundSimulator.xcarchive archive
+        #xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO -archivePath ./playgroundSimulator.xcarchive archive
+
+    - uses: sparkfabrik/ios-build-action@v2.1.0
+      with:
+        upload-to-testflight: false
+        workspace-path: Playground/ios/Playground.xcworkspace
+        export-method: ad-hoc
+        configuration: Release
+        scheme: Playground
+        output-path: Playground/build-${{ github.sha }}.ipa
 
     - name: Upload iOS App
       uses: actions/upload-artifact@v2
       with:
         name: 'iOSApp'
-        path: Playground/ios/playgroundSimulator.xcarchive
+        path: Playground/build-${{ github.sha }}.ipa
+        #Playground/ios/playgroundSimulator.xcarchive
  
 # test jobs not working
 # test-android:

From 6a4dbbffb06df7eaba17d93262819abb90e6d306 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Thu, 9 Mar 2023 16:00:18 +0100
Subject: [PATCH 72/88] back to xcodebuild

---
 .github/workflows/testVersion.yml | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/.github/workflows/testVersion.yml b/.github/workflows/testVersion.yml
index 41b0c61f2..e57670d00 100644
--- a/.github/workflows/testVersion.yml
+++ b/.github/workflows/testVersion.yml
@@ -98,23 +98,13 @@ jobs:
         cd ios
         pod install
         #xcodebuild -sdk iphoneos -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO
-        #xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO -archivePath ./playgroundSimulator.xcarchive archive
-
-    - uses: sparkfabrik/ios-build-action@v2.1.0
-      with:
-        upload-to-testflight: false
-        workspace-path: Playground/ios/Playground.xcworkspace
-        export-method: ad-hoc
-        configuration: Release
-        scheme: Playground
-        output-path: Playground/build-${{ github.sha }}.ipa
+        xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace Playground.xcworkspace -scheme Playground build CODE_SIGNING_ALLOWED=NO -archivePath ./playgroundSimulator.xcarchive archive
 
     - name: Upload iOS App
       uses: actions/upload-artifact@v2
       with:
         name: 'iOSApp'
-        path: Playground/build-${{ github.sha }}.ipa
-        #Playground/ios/playgroundSimulator.xcarchive
+        path: Playground/ios/playgroundSimulator.xcarchive
  
 # test jobs not working
 # test-android:

From 8e0bf52fb8f47257ef94abfd4d614d4bcc56eb19 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 13 Mar 2023 10:48:46 +0100
Subject: [PATCH 73/88] test BN protocol tool and github action

---
 .github/workflows/test_protocol.yml |  29 ++
 Apps/TestProtocol/package-lock.json | 415 ++++++++++++++++++++++++++++
 Apps/TestProtocol/package.json      |  15 +
 Apps/TestProtocol/testBNProtocol.js | 130 +++++++++
 4 files changed, 589 insertions(+)
 create mode 100644 .github/workflows/test_protocol.yml
 create mode 100644 Apps/TestProtocol/package-lock.json
 create mode 100644 Apps/TestProtocol/package.json
 create mode 100644 Apps/TestProtocol/testBNProtocol.js

diff --git a/.github/workflows/test_protocol.yml b/.github/workflows/test_protocol.yml
new file mode 100644
index 000000000..d804794f2
--- /dev/null
+++ b/.github/workflows/test_protocol.yml
@@ -0,0 +1,29 @@
+name: Test BabylonNative Protocol compatibility
+on:
+  workflow_dispatch:
+    inputs:
+      NPM_Mask:
+        description: 'NPM versions mask'
+        required: true 
+        type: string
+        default: 5.*.*
+
+jobs:
+  build:
+    runs-on: windows-2019
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout@master
+    - name: NPM Install
+      run: npm install
+      working-directory: ./Apps/TestProtocol
+    - name: Run tests
+      run: npm run testPackages ${{ github.event.inputs.NPM_Mask }}
+      working-directory: ./Apps/TestProtocol
+    - name: Upload Result 
+      uses: actions/upload-artifact@v2
+      with:
+          name: NPMCompatibility
+          path: |
+            ./compatibility.json
\ No newline at end of file
diff --git a/Apps/TestProtocol/package-lock.json b/Apps/TestProtocol/package-lock.json
new file mode 100644
index 000000000..49c1b455a
--- /dev/null
+++ b/Apps/TestProtocol/package-lock.json
@@ -0,0 +1,415 @@
+{
+  "name": "testcompatibility",
+  "version": "0.0.1",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "testcompatibility",
+      "version": "0.0.1",
+      "dependencies": {
+        "babylonjs": "^5.0.3",
+        "babylonjs-gui": "^5.0.3",
+        "babylonjs-loaders": "^5.0.3",
+        "babylonjs-materials": "^5.0.3",
+        "shelljs": "^0.8.4"
+      }
+    },
+    "node_modules/babylonjs": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs/-/babylonjs-5.0.3.tgz",
+      "integrity": "sha512-FcvNJHOn9wJ+geohPCFOa2RwwADz3Ep1gyPeWui8C96KwbKXrW/k02N1Uh5MyMu8s2P9thPCHr298lrTs5pwnQ=="
+    },
+    "node_modules/babylonjs-gltf2interface": {
+      "version": "5.50.1",
+      "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-5.50.1.tgz",
+      "integrity": "sha512-FgXTm/N0Vz/K4FA0X5OoHxQ7tyacxRvfd8MBYMEtvSSTyDpYEiEqhEmcUgAON0OGGJ3fBYl9jZXromXO2NG7ow=="
+    },
+    "node_modules/babylonjs-gui": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs-gui/-/babylonjs-gui-5.0.3.tgz",
+      "integrity": "sha512-kyeNLfZ3hrK2MLkhX9VBy40Y0B7b7IqZhqQwK36BULKie7i6cL7PZbCh5jRndW1m19qT+nb0ePmbV27zAxZjNg==",
+      "dependencies": {
+        "babylonjs": "^5.0.3"
+      }
+    },
+    "node_modules/babylonjs-loaders": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs-loaders/-/babylonjs-loaders-5.0.3.tgz",
+      "integrity": "sha512-3OAP06RsTj+DNVcVZyIOkJdU1SeJzrnHm5EiIS0EtSChAFVSJimY3q6MVm1VzSxqJtrdbe3AOG4qI5NOnSja/w==",
+      "dependencies": {
+        "babylonjs": "^5.0.3",
+        "babylonjs-gltf2interface": "^5.0.3"
+      }
+    },
+    "node_modules/babylonjs-materials": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs-materials/-/babylonjs-materials-5.0.3.tgz",
+      "integrity": "sha512-VQ4Z5VU11AjjK+/ragkVdiIjvnCDzsYULTdKNDiKBmKxU1Idq9DM2TI9AO2LipZauXXvd0YhJSlVX5fCkG+Ubg==",
+      "dependencies": {
+        "babylonjs": "^5.0.3"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "node_modules/interpret": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+      "dependencies": {
+        "has": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+    },
+    "node_modules/rechoir": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+      "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+      "dependencies": {
+        "resolve": "^1.1.6"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/resolve": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "dependencies": {
+        "is-core-module": "^2.9.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/shelljs": {
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+      "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+      "dependencies": {
+        "glob": "^7.0.0",
+        "interpret": "^1.0.0",
+        "rechoir": "^0.6.2"
+      },
+      "bin": {
+        "shjs": "bin/shjs"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+    }
+  },
+  "dependencies": {
+    "babylonjs": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs/-/babylonjs-5.0.3.tgz",
+      "integrity": "sha512-FcvNJHOn9wJ+geohPCFOa2RwwADz3Ep1gyPeWui8C96KwbKXrW/k02N1Uh5MyMu8s2P9thPCHr298lrTs5pwnQ=="
+    },
+    "babylonjs-gltf2interface": {
+      "version": "5.50.1",
+      "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-5.50.1.tgz",
+      "integrity": "sha512-FgXTm/N0Vz/K4FA0X5OoHxQ7tyacxRvfd8MBYMEtvSSTyDpYEiEqhEmcUgAON0OGGJ3fBYl9jZXromXO2NG7ow=="
+    },
+    "babylonjs-gui": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs-gui/-/babylonjs-gui-5.0.3.tgz",
+      "integrity": "sha512-kyeNLfZ3hrK2MLkhX9VBy40Y0B7b7IqZhqQwK36BULKie7i6cL7PZbCh5jRndW1m19qT+nb0ePmbV27zAxZjNg==",
+      "requires": {
+        "babylonjs": "^5.0.3"
+      }
+    },
+    "babylonjs-loaders": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs-loaders/-/babylonjs-loaders-5.0.3.tgz",
+      "integrity": "sha512-3OAP06RsTj+DNVcVZyIOkJdU1SeJzrnHm5EiIS0EtSChAFVSJimY3q6MVm1VzSxqJtrdbe3AOG4qI5NOnSja/w==",
+      "requires": {
+        "babylonjs": "^5.0.3",
+        "babylonjs-gltf2interface": "^5.0.3"
+      }
+    },
+    "babylonjs-materials": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/babylonjs-materials/-/babylonjs-materials-5.0.3.tgz",
+      "integrity": "sha512-VQ4Z5VU11AjjK+/ragkVdiIjvnCDzsYULTdKNDiKBmKxU1Idq9DM2TI9AO2LipZauXXvd0YhJSlVX5fCkG+Ubg==",
+      "requires": {
+        "babylonjs": "^5.0.3"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "interpret": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
+    },
+    "is-core-module": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+    },
+    "rechoir": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+      "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+      "requires": {
+        "resolve": "^1.1.6"
+      }
+    },
+    "resolve": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "requires": {
+        "is-core-module": "^2.9.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "shelljs": {
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+      "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+      "requires": {
+        "glob": "^7.0.0",
+        "interpret": "^1.0.0",
+        "rechoir": "^0.6.2"
+      }
+    },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+    }
+  }
+}
diff --git a/Apps/TestProtocol/package.json b/Apps/TestProtocol/package.json
new file mode 100644
index 000000000..88b87511b
--- /dev/null
+++ b/Apps/TestProtocol/package.json
@@ -0,0 +1,15 @@
+{
+  "name": "testcompatibility",
+  "version": "0.0.1",
+  "private": true,
+  "scripts": {
+    "testPackages": "node testBNProtocol.js"
+  },
+  "dependencies": {
+    "babylonjs": "^5.0.3",
+    "babylonjs-gui": "^5.0.3",
+    "babylonjs-loaders": "^5.0.3",
+    "babylonjs-materials": "^5.0.3",
+    "shelljs": "^0.8.4"
+  }
+}
diff --git a/Apps/TestProtocol/testBNProtocol.js b/Apps/TestProtocol/testBNProtocol.js
new file mode 100644
index 000000000..5c347d28d
--- /dev/null
+++ b/Apps/TestProtocol/testBNProtocol.js
@@ -0,0 +1,130 @@
+const fs = require('fs');
+const shelljs = require('shelljs');
+
+let compatibility = [];
+function execute(command, workingDirectory, callback){
+    const res = shelljs.exec(command, { fatal: false, cwd: workingDirectory, async: false });
+    callback(res.code, res.stdout, res.stderr);
+};
+
+function copy(source, destination) {
+    fs.copyFileSync(source, destination);
+    console.log(`${source} was copied to ${destination}`);
+}
+
+const protocolChecker = "//BRNCHECK\r\nconsole.log(' * Checking Babylon.js / BabylonNative protocols');\r\n"+
+    "if (_native.Engine.PROTOCOL_VERSION !== BABYLON.NativeEngine.PROTOCOL_VERSION) {\r\n"+
+    "console.log(` * Protocol version mismatch: ${_native.Engine.PROTOCOL_VERSION} (Native) !== ${BABYLON.NativeEngine.PROTOCOL_VERSION} (JS)`);\r\n"+
+    "TestUtils.exit(-1); } else { console.log(' * Protocol version OK! '); }\r\n"+
+    "console.error = function(errorMsg) { console.log(errorMsg); TestUtils.exit(-1);}\r\n";
+
+const exeFolder = './BabylonNative/build/Apps/ValidationTests/Release';
+const filesToCopy = [
+    {source:'babylonjs', files:['babylon.max.js', 'babylon.max.js.map']},
+    {source:'babylonjs-gui', files:['babylon.gui.js', 'babylon.gui.js.map']},
+    {source:'babylonjs-loaders', files:['babylonjs.loaders.js', 'babylonjs.loaders.js.map']},
+    {source:'babylonjs-materials', files:['babylonjs.materials.js', 'babylonjs.materials.js.map']}];
+
+const BRNVersions = [
+    {tag:'1.4.0', hash:'5859ffa'},
+    {tag:'1.4.1', hash:'70bb77a'},
+    {tag:'1.4.2', hash:'5990087'},
+    {tag:'1.4.3', hash:'301ab90'},
+    {tag:'1.4.4', hash:'75954f4'},
+    {tag:'1.5.0', hash:'75954f4'},
+    {tag:'1.5.1', hash:'a2cf1c7'},
+    {tag:'1.5.4-preview', hash:'409bc4b'}];
+
+function patchTestScript() {
+    const filePath = `${exeFolder}/Scripts/validation_native.js`;
+    console.log("Patching test script.");
+    const testScript = fs.readFileSync(filePath);
+    if (testScript.includes("//BRNCHECK")) {
+        // already patched
+        return;
+    }
+    const newContent = protocolChecker + testScript;
+    fs.writeFileSync(filePath, newContent);
+}
+
+function checkoutAndBuildBN(tag, hash, callback) {
+    console.log("Git clone.");
+    execute('git clone https://github.com/BabylonJS/BabylonNative.git', './', (error, stdout, stderr) => {
+        console.log("Submodule update.");
+        execute('git submodule update --init --recursive', './BabylonNative', (error, stdout, stderr) => {
+            //if (error) throw error;
+            console.log(`Checkout tag ${hash}.`);
+            execute(`git checkout ${hash}`, "./BabylonNative", (error, stdout, stderr) => {
+                if (error) throw error;
+                execute('git submodule update --recursive', './BabylonNative', (error, stdout, stderr) => {
+                    console.log('Making build directory.');
+                    fs.rmSync('./BabylonNative/build', { recursive: true, force: true });
+                    execute(`mkdir build`, "./BabylonNative", (error, stdout, stderr) => {
+                        if (error) throw error;
+                        execute(`npm install`, "./BabylonNative/Apps", (error, stdout, stderr) => {
+                            if (error) throw error;
+                            console.log('Building win32 project.');
+
+                            execute(`cmake -G "Visual Studio 16 2019" -A x64 ..`, "./BabylonNative/build", (error, stdout, stderr) => {
+                                if (error) throw error;
+                                console.log('Building win32 apps.');
+                                execute(`cmake --build build --config Release`, "./BabylonNative", (error, stdout, stderr) => {
+                                    if (error) throw error;
+                                    patchTestScript();
+                                    callback(tag, hash);
+                                });
+                            });
+                        });
+                    });
+                });
+            });
+        });
+    });
+}
+
+function testPackages(tag, hash) {
+    let compatiblePackageVersions = [];
+    console.log("Getting NPM versions ...");
+    execute("npm show babylonjs@5.*.* version --json", "./", (error, stdout, stderr) => {
+        if (error) throw error;
+    
+        const versions = JSON.parse(stdout);
+    
+        versions.forEach(version => {
+            console.log("-".repeat(30));
+            console.log(`Installing packages for ${version}`);
+            execute(`npm install babylonjs@${version} babylonjs-gui@${version} babylonjs-loaders@${version} babylonjs-materials@${version}`, "./", (error, stdout, stderr) => {
+                if (error) throw error;
+                    
+                // copy package .js
+                console.log("Copying packages files.");
+                filesToCopy.forEach(entry => {
+                    entry.files.forEach(file => {
+                        copy(`node_modules/${entry.source}/${file}`, `${exeFolder}/Scripts/${file}`);
+                    });
+                });
+    
+                // run validation test
+                console.log("Running validation tests.");
+                execute("ValidationTests", exeFolder, (error, stdout, stderr) => {
+                    console.log(`Error Code ${error}`);
+                    if (!!error) {
+                        console.log(`${version} Failed!`);
+                    } else {
+                        compatiblePackageVersions.push(version);
+                        console.log(`${version} OK!`);
+                    }
+                });
+            });
+        });
+    });
+    console.log(`Compatible versions for BabylonReactNative ${tag} using BabylonNative ${hash}:`, compatiblePackageVersions);
+    compatibility.push({tag:tag, hash:hash, npms:compatiblePackageVersions});
+}
+
+BRNVersions.forEach((versionToTest) =>{
+    checkoutAndBuildBN(versionToTest.tag, versionToTest.hash,(tag, hash) => { testPackages(tag, hash); });
+});
+
+// and out!
+fs.writeFileSync("compatibility.json", JSON.stringify(compatibility));
\ No newline at end of file

From f2cd81f3819541fbf32f528c943f519037a9686f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 13 Mar 2023 10:54:24 +0100
Subject: [PATCH 74/88] pr.yml fix

---
 .github/workflows/pr.yml | 46 +++++++++++++++++++++++++++++++++++-----
 1 file changed, 41 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index b3f5e396e..db9e10c25 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -145,16 +145,52 @@ jobs:
   build-android-ios-065:
     uses: ./.github/workflows/ios_android.yml
     with:
-      react-native-version: 0.65
-      release-version: 2.0.0 # dummy version
+      react-native-version: '0.65'
+      release-version: 0.0.${GITHUB_SHA::8}
+
+  build-android-ios-069:
+    uses: ./.github/workflows/ios_android.yml
+    with:
+      react-native-version: '0.69'
+      release-version: 0.0.${GITHUB_SHA::8}
+
+  build-android-ios-070:
+    uses: ./.github/workflows/ios_android.yml
+    with:
+      react-native-version: '0.70'
+      release-version: 0.0.${GITHUB_SHA::8}
+
+  build-android-ios-071:
+    uses: ./.github/workflows/ios_android.yml
+    with:
+      react-native-version: '0.71'
+      release-version: 0.0.${GITHUB_SHA::8}
 
   build-windows-065:
     uses: ./.github/workflows/windows.yml
     with:
-      react-native-version: 0.65
-      release-version: 2.0.0
+      react-native-version: '0.65'
+      release-version: 0.0.${GITHUB_SHA::8}
+
+  build-windows-069:
+    uses: ./.github/workflows/windows.yml
+    with:
+      react-native-version: '0.69'
+      release-version: 0.0.${GITHUB_SHA::8}
+
+  build-windows-070:
+    uses: ./.github/workflows/windows.yml
+    with:
+      react-native-version: '0.70'
+      release-version: 0.0.${GITHUB_SHA::8}
+
+  build-windows-071:
+    uses: ./.github/workflows/windows.yml
+    with:
+      react-native-version: '0.71'
+      release-version: 0.0.${GITHUB_SHA::8}
 
   build-typescript:
     uses: ./.github/workflows/typescript.yml
     with:
-      release-version: 2.0.0
+      release-version: 0.0.${GITHUB_SHA::8}
\ No newline at end of file

From d754efd6daa6036177fa6496b09d74e170f57ebf Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 13 Mar 2023 10:55:32 +0100
Subject: [PATCH 75/88] EoL

---
 .github/workflows/pr.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index db9e10c25..eb34d5003 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -193,4 +193,4 @@ jobs:
   build-typescript:
     uses: ./.github/workflows/typescript.yml
     with:
-      release-version: 0.0.${GITHUB_SHA::8}
\ No newline at end of file
+      release-version: 0.0.${GITHUB_SHA::8}

From 9c28c0dc654208a03a0af63864cb0ac39ecdbb11 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 13 Mar 2023 11:14:52 +0100
Subject: [PATCH 76/88] documentation

---
 Documentation/Images/protocolTest.jpg | Bin 0 -> 118085 bytes
 Documentation/TestingProtocol.md      |  35 ++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)
 create mode 100644 Documentation/Images/protocolTest.jpg
 create mode 100644 Documentation/TestingProtocol.md

diff --git a/Documentation/Images/protocolTest.jpg b/Documentation/Images/protocolTest.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ad04734fc39ab32745255f3ff79c1ed411093111
GIT binary patch
literal 118085
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
T;T6T4tcVAoDk_ie=h(jibO`V0

literal 0
HcmV?d00001

diff --git a/Documentation/TestingProtocol.md b/Documentation/TestingProtocol.md
new file mode 100644
index 000000000..3e3f4b7c7
--- /dev/null
+++ b/Documentation/TestingProtocol.md
@@ -0,0 +1,35 @@
+# Testing BabylonNative Protocol
+
+`Apps/TestProtocol` is a semi-automated tool to test compatibility between BabylonReactNative (more specificaly BabylonNative)
+and Babylon.js NPM packages.
+It checkouts, build and run validation tests for every BabylonNative hash version from a list and every Babylon.js NPM package.
+NPM Package version must correspond to a mask provided to the script.
+
+## Testing localy
+
+Testing takes time and multiple windows get opened and closed. This will make working in parrallel a bit difficult. Best is to leave running script without using the PC.
+
+Clone BabylonReactNative repo then :
+```
+cd Apps/TestProtocol
+npm i
+npm run testPackages
+```
+
+Result is a JSON file named `compatibility.json`.
+
+## Testing on CI
+
+Go to GitHub Action.
+
+![Preview](./Images/protocolTest.jpg)
+
+Result is the same .JSON as earlier than can be download as an artifact
+
+## Results
+
+Resulting JSON is an array that contains a list of Babylon.js NPM versions compatible with the BabylonNative commit hash.
+There is a 1-1 link between a BabylonReactNative released version and a BabylonNative commit.
+
+Note: The script test is very restrictive. Any protocol version mismatch, a crash, a bad Validation test ,... will result in that specific version to not be compatible.
+This means that a version marked as compatible is sure to run, at least, all the validation tests.
\ No newline at end of file

From aec9e530b1171a47537487a6534ae2aa2f40ba95 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Mon, 13 Mar 2023 15:43:05 +0100
Subject: [PATCH 77/88] path fix for compatibility

---
 .github/workflows/test_protocol.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/test_protocol.yml b/.github/workflows/test_protocol.yml
index d804794f2..6c281fbe5 100644
--- a/.github/workflows/test_protocol.yml
+++ b/.github/workflows/test_protocol.yml
@@ -26,4 +26,4 @@ jobs:
       with:
           name: NPMCompatibility
           path: |
-            ./compatibility.json
\ No newline at end of file
+            ./Apps/TestProtocol/compatibility.json
\ No newline at end of file

From e48945f6dfcb05fda50a2e63a824154ad55c3ca6 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Tue, 14 Mar 2023 16:54:46 +0100
Subject: [PATCH 78/88] removed protocol word

---
 .../package-lock.json                               |   0
 .../package.json                                    |   2 +-
 .../testBNCompatibility.js}                         |   0
 .../{protocolTest.jpg => compatibilityTest.jpg}     | Bin
 .../{TestingProtocol.md => TestingCompatibility.md} |  10 +++++-----
 5 files changed, 6 insertions(+), 6 deletions(-)
 rename Apps/{TestProtocol => TestCompatibility}/package-lock.json (100%)
 rename Apps/{TestProtocol => TestCompatibility}/package.json (83%)
 rename Apps/{TestProtocol/testBNProtocol.js => TestCompatibility/testBNCompatibility.js} (100%)
 rename Documentation/Images/{protocolTest.jpg => compatibilityTest.jpg} (100%)
 rename Documentation/{TestingProtocol.md => TestingCompatibility.md} (70%)

diff --git a/Apps/TestProtocol/package-lock.json b/Apps/TestCompatibility/package-lock.json
similarity index 100%
rename from Apps/TestProtocol/package-lock.json
rename to Apps/TestCompatibility/package-lock.json
diff --git a/Apps/TestProtocol/package.json b/Apps/TestCompatibility/package.json
similarity index 83%
rename from Apps/TestProtocol/package.json
rename to Apps/TestCompatibility/package.json
index 88b87511b..58294d01d 100644
--- a/Apps/TestProtocol/package.json
+++ b/Apps/TestCompatibility/package.json
@@ -3,7 +3,7 @@
   "version": "0.0.1",
   "private": true,
   "scripts": {
-    "testPackages": "node testBNProtocol.js"
+    "testCompatibility": "node testBNCompatibility.js"
   },
   "dependencies": {
     "babylonjs": "^5.0.3",
diff --git a/Apps/TestProtocol/testBNProtocol.js b/Apps/TestCompatibility/testBNCompatibility.js
similarity index 100%
rename from Apps/TestProtocol/testBNProtocol.js
rename to Apps/TestCompatibility/testBNCompatibility.js
diff --git a/Documentation/Images/protocolTest.jpg b/Documentation/Images/compatibilityTest.jpg
similarity index 100%
rename from Documentation/Images/protocolTest.jpg
rename to Documentation/Images/compatibilityTest.jpg
diff --git a/Documentation/TestingProtocol.md b/Documentation/TestingCompatibility.md
similarity index 70%
rename from Documentation/TestingProtocol.md
rename to Documentation/TestingCompatibility.md
index 3e3f4b7c7..48bfb97df 100644
--- a/Documentation/TestingProtocol.md
+++ b/Documentation/TestingCompatibility.md
@@ -1,6 +1,6 @@
-# Testing BabylonNative Protocol
+# Testing BabylonNative Compatibility
 
-`Apps/TestProtocol` is a semi-automated tool to test compatibility between BabylonReactNative (more specificaly BabylonNative)
+`Apps/TestCompatibility` is a semi-automated tool to test compatibility between BabylonReactNative (more specificaly BabylonNative)
 and Babylon.js NPM packages.
 It checkouts, build and run validation tests for every BabylonNative hash version from a list and every Babylon.js NPM package.
 NPM Package version must correspond to a mask provided to the script.
@@ -11,7 +11,7 @@ Testing takes time and multiple windows get opened and closed. This will make wo
 
 Clone BabylonReactNative repo then :
 ```
-cd Apps/TestProtocol
+cd Apps/TestCompatibility
 npm i
 npm run testPackages
 ```
@@ -22,7 +22,7 @@ Result is a JSON file named `compatibility.json`.
 
 Go to GitHub Action.
 
-![Preview](./Images/protocolTest.jpg)
+![Preview](./Images/compatibilityTest.jpg)
 
 Result is the same .JSON as earlier than can be download as an artifact
 
@@ -31,5 +31,5 @@ Result is the same .JSON as earlier than can be download as an artifact
 Resulting JSON is an array that contains a list of Babylon.js NPM versions compatible with the BabylonNative commit hash.
 There is a 1-1 link between a BabylonReactNative released version and a BabylonNative commit.
 
-Note: The script test is very restrictive. Any protocol version mismatch, a crash, a bad Validation test ,... will result in that specific version to not be compatible.
+Note: The script test is very restrictive. Any compatibility version mismatch, a crash, a bad Validation test ,... will result in that specific version to not be compatible.
 This means that a version marked as compatible is sure to run, at least, all the validation tests.
\ No newline at end of file

From b168e48b5c6107ac57d59bcb7b5c37bfdb5b56cf Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <cedric.guillemet@gmail.com>
Date: Tue, 14 Mar 2023 16:56:57 +0100
Subject: [PATCH 79/88] even more compat

---
 .../{test_protocol.yml => test_compatibility.yml}         | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
 rename .github/workflows/{test_protocol.yml => test_compatibility.yml} (73%)

diff --git a/.github/workflows/test_protocol.yml b/.github/workflows/test_compatibility.yml
similarity index 73%
rename from .github/workflows/test_protocol.yml
rename to .github/workflows/test_compatibility.yml
index 6c281fbe5..a76d443a2 100644
--- a/.github/workflows/test_protocol.yml
+++ b/.github/workflows/test_compatibility.yml
@@ -1,4 +1,4 @@
-name: Test BabylonNative Protocol compatibility
+name: Test BabylonNative Compatibility
 on:
   workflow_dispatch:
     inputs:
@@ -17,13 +17,13 @@ jobs:
       uses: actions/checkout@master
     - name: NPM Install
       run: npm install
-      working-directory: ./Apps/TestProtocol
+      working-directory: ./Apps/TestCompatibility
     - name: Run tests
       run: npm run testPackages ${{ github.event.inputs.NPM_Mask }}
-      working-directory: ./Apps/TestProtocol
+      working-directory: ./Apps/TestCompatibility
     - name: Upload Result 
       uses: actions/upload-artifact@v2
       with:
           name: NPMCompatibility
           path: |
-            ./Apps/TestProtocol/compatibility.json
\ No newline at end of file
+            ./Apps/TestCompatibility/compatibility.json
\ No newline at end of file

From 3ea15e837c967c4a690a0e39b2844e58b239bc00 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Tue, 23 May 2023 15:47:17 +0200
Subject: [PATCH 80/88] fix test bjs mask as parameter

---
 Apps/TestCompatibility/testBNCompatibility.js | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/Apps/TestCompatibility/testBNCompatibility.js b/Apps/TestCompatibility/testBNCompatibility.js
index 5c347d28d..da1b97e74 100644
--- a/Apps/TestCompatibility/testBNCompatibility.js
+++ b/Apps/TestCompatibility/testBNCompatibility.js
@@ -26,14 +26,11 @@ const filesToCopy = [
     {source:'babylonjs-materials', files:['babylonjs.materials.js', 'babylonjs.materials.js.map']}];
 
 const BRNVersions = [
-    {tag:'1.4.0', hash:'5859ffa'},
-    {tag:'1.4.1', hash:'70bb77a'},
-    {tag:'1.4.2', hash:'5990087'},
     {tag:'1.4.3', hash:'301ab90'},
     {tag:'1.4.4', hash:'75954f4'},
     {tag:'1.5.0', hash:'75954f4'},
     {tag:'1.5.1', hash:'a2cf1c7'},
-    {tag:'1.5.4-preview', hash:'409bc4b'}];
+    {tag:'1.6.0', hash:'409bc4b'}];
 
 function patchTestScript() {
     const filePath = `${exeFolder}/Scripts/validation_native.js`;
@@ -84,8 +81,15 @@ function checkoutAndBuildBN(tag, hash, callback) {
 
 function testPackages(tag, hash) {
     let compatiblePackageVersions = [];
+
+    let bjsMask = '5.*.*';
+    const [bjsVersion] = process.argv.slice(2);
+    if (bjsVersion != '') {
+        bjsMask = bjsVersion;
+    }
+
     console.log("Getting NPM versions ...");
-    execute("npm show babylonjs@5.*.* version --json", "./", (error, stdout, stderr) => {
+    execute(`npm show babylonjs@${bjsMask} version --json`, "./", (error, stdout, stderr) => {
         if (error) throw error;
     
         const versions = JSON.parse(stdout);

From 7c7c844cc1bc9e4c044d745e70afa0f9721e53b4 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Tue, 23 May 2023 16:15:45 +0200
Subject: [PATCH 81/88] Update Documentation/TestingCompatibility.md

Co-authored-by: Andy Fillebrown <andy@docEdub.com>
---
 Documentation/TestingCompatibility.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/TestingCompatibility.md b/Documentation/TestingCompatibility.md
index 48bfb97df..72a06d2a9 100644
--- a/Documentation/TestingCompatibility.md
+++ b/Documentation/TestingCompatibility.md
@@ -31,5 +31,5 @@ Result is the same .JSON as earlier than can be download as an artifact
 Resulting JSON is an array that contains a list of Babylon.js NPM versions compatible with the BabylonNative commit hash.
 There is a 1-1 link between a BabylonReactNative released version and a BabylonNative commit.
 
-Note: The script test is very restrictive. Any compatibility version mismatch, a crash, a bad Validation test ,... will result in that specific version to not be compatible.
+Note: The script test is very restrictive. Any compatibility version mismatch, a crash, a bad Validation test ,... will result in that specific version being incompatible.
 This means that a version marked as compatible is sure to run, at least, all the validation tests.
\ No newline at end of file

From 6aa53712f41baa74b68364daf6ab30aea9e64e69 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Tue, 23 May 2023 16:15:51 +0200
Subject: [PATCH 82/88] Update Documentation/TestingCompatibility.md

Co-authored-by: Andy Fillebrown <andy@docEdub.com>
---
 Documentation/TestingCompatibility.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/TestingCompatibility.md b/Documentation/TestingCompatibility.md
index 72a06d2a9..ce7104cb5 100644
--- a/Documentation/TestingCompatibility.md
+++ b/Documentation/TestingCompatibility.md
@@ -2,7 +2,7 @@
 
 `Apps/TestCompatibility` is a semi-automated tool to test compatibility between BabylonReactNative (more specificaly BabylonNative)
 and Babylon.js NPM packages.
-It checkouts, build and run validation tests for every BabylonNative hash version from a list and every Babylon.js NPM package.
+It checks out, builds and runs validation tests for every BabylonNative hash version from a list and every Babylon.js NPM package.
 NPM Package version must correspond to a mask provided to the script.
 
 ## Testing localy

From 76388a0d1a83414326a2e0b614ab0e6bf05d09d1 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Wed, 24 May 2023 09:30:25 +0200
Subject: [PATCH 83/88] SLA update for 1.6.0 package (#579)

---
 README.md | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/README.md b/README.md
index 82b323d29..4da6c93a5 100644
--- a/README.md
+++ b/README.md
@@ -227,11 +227,11 @@ For iOS the XCode project needs to be generated with `CMake` as described [above
 
 | React Native | Babylon React Native |
 |---|---|
-| 0.64 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.5.4-preview|
-| 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.5.4-preview |
-| 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.5.4-preview |
-| 0.70 | 1.5.0, 1.5.1, 1.5.4-preview |
-| 0.71 | 1.5.4-preview |
+| 0.64 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0|
+| 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0 |
+| 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0 |
+| 0.70 | 1.5.0, 1.5.1, 1.6.0 |
+| 0.71 | 1.6.0 |
 
 Here are the package names for Android/iOS and Windows:
 
@@ -254,11 +254,11 @@ Depending on the Babylon React Native NPM package version, some Babylon.js NPM d
 | 1.4.0  | 5.27.1 |
 | 1.4.1  | 5.32.2, 5.33.0, 5.33.1, 5.33.2, 5.34.0, 5.35.0 |
 | 1.4.2  | 5.35.1, 5.36.0, 5.37.0, 5.38.0, 5.39.0, 5.42.0, 5.42.1 |
-| 1.4.3  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1 |
-| 1.4.4  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1 |
-| 1.5.0  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1 |
-| 1.5.1  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1 |
-| 1.5.4-preview  | 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1 |
+| 1.4.3  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.4.4  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.5.0  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.5.1  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.6.0  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
 
 ## Security
 

From dfc218eb0a5b47c4443e31ae06b3f514c0154b0f Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Thu, 1 Jun 2023 17:50:28 +0200
Subject: [PATCH 84/88] Agnostic toolset for VS project + std link issue with
 MSVC 17.2+ (#580)

* Agnostic toolset for VS project

* platform tool version

* pragma for std

* Update Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj

Co-authored-by: Gary Hsu <bghgary@users.noreply.github.com>

* update windows readme

---------

Co-authored-by: Gary Hsu <bghgary@users.noreply.github.com>
---
 Modules/@babylonjs/react-native-windows/README.md         | 8 ++++++++
 .../windows/BabylonReactNative/BabylonModule.cpp          | 6 ++++++
 .../windows/BabylonReactNative/BabylonReactNative.vcxproj | 4 ++--
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/Modules/@babylonjs/react-native-windows/README.md b/Modules/@babylonjs/react-native-windows/README.md
index 4a84b9a19..e9ff6dc1f 100644
--- a/Modules/@babylonjs/react-native-windows/README.md
+++ b/Modules/@babylonjs/react-native-windows/README.md
@@ -10,3 +10,11 @@ This package has several **peer dependencies**. If these dependencies are unmet,
 
 This package will not work without installing the `@babylonjs/react-native` peer dependency.
 The `react-native-permissions` dependency is required for XR capabilities of Babylon.js.
+
+### Toolset
+
+Default toolset is v142. It's possible to change it using project variable named `BabylonReactNativeToolset`.
+There are multiple ways to specify it:
+- environment variable
+- msbuild property (`msbuild /p:BabylonReactNativeToolset=v143` for example)
+- customize the build by folder (https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-directory?view=vs-2022)
\ No newline at end of file
diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonModule.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonModule.cpp
index 240cbc662..6cb24ca85 100644
--- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonModule.cpp
+++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonModule.cpp
@@ -2,6 +2,12 @@
 #include "BabylonModule.h"
 #include "JSI/JsiApiContext.h"
 
+// see https://developercommunity.visualstudio.com/t/-imp-std-init-once-complete-unresolved-external-sy/1684365
+#if _MSC_VER >= 1932 // Visual Studio 2022 version 17.2+
+#    pragma comment(linker, "/alternatename:__imp___std_init_once_complete=__imp_InitOnceComplete")
+#    pragma comment(linker, "/alternatename:__imp___std_init_once_begin_initialize=__imp_InitOnceBeginInitialize")
+#endif
+
 using namespace winrt::BabylonReactNative::implementation;
 
 REACT_INIT(Initialize);
diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj
index 6960fe7a2..818b25733 100644
--- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj
+++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj
@@ -77,8 +77,8 @@
   <PropertyGroup Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <PlatformToolset>v142</PlatformToolset>
-    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-    <PlatformToolset Condition="'$(VisualStudioVersion)' == '16.0'">v142</PlatformToolset>
+    <PlatformToolset Condition="'$(BabylonReactNativeToolset)'!=''">$(BabylonReactNativeToolset)</PlatformToolset>
+
     <CharacterSet>Unicode</CharacterSet>
     <GenerateManifest>false</GenerateManifest>
     <PreferredToolArchitecture>x64</PreferredToolArchitecture>

From 1033c2fb7178468926816bc13a15b304664c5e08 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Thu, 1 Jun 2023 19:54:18 +0200
Subject: [PATCH 85/88] 1.6.1 SLA update (#581)

* 1.6.1 SLA update

* removed empty space
---
 README.md | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index 4da6c93a5..108b6029c 100644
--- a/README.md
+++ b/README.md
@@ -227,11 +227,11 @@ For iOS the XCode project needs to be generated with `CMake` as described [above
 
 | React Native | Babylon React Native |
 |---|---|
-| 0.64 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0|
-| 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0 |
-| 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0 |
-| 0.70 | 1.5.0, 1.5.1, 1.6.0 |
-| 0.71 | 1.6.0 |
+| 0.64 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
+| 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
+| 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
+| 0.70 | 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
+| 0.71 | 1.6.0, 1.6.1 |
 
 Here are the package names for Android/iOS and Windows:
 
@@ -251,14 +251,15 @@ Depending on the Babylon React Native NPM package version, some Babylon.js NPM d
 
 | Babylon React Native | Babylon.js ([@babylonjs/core](https://www.npmjs.com/package/@babylonjs/core), [@babylonjs/loaders](https://www.npmjs.com/package/@babylonjs/loaders), ...) |
 |---|---|
-| 1.4.0  | 5.27.1 |
-| 1.4.1  | 5.32.2, 5.33.0, 5.33.1, 5.33.2, 5.34.0, 5.35.0 |
-| 1.4.2  | 5.35.1, 5.36.0, 5.37.0, 5.38.0, 5.39.0, 5.42.0, 5.42.1 |
-| 1.4.3  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.1, 6.4.0, 6.4.1 |
-| 1.4.4  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
-| 1.5.0  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
-| 1.5.1  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
-| 1.6.0  | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
+| 1.4.0 | 5.27.1 |
+| 1.4.1 | 5.32.2, 5.33.0, 5.33.1, 5.33.2, 5.34.0, 5.35.0 |
+| 1.4.2 | 5.35.1, 5.36.0, 5.37.0, 5.38.0, 5.39.0, 5.42.0, 5.42.1 |
+| 1.4.3 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.4.4 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.5.0 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.5.1 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
+| 1.6.0 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
+| 1.6.1 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
 
 ## Security
 

From aafbad864d6eb6b08c4461caa8d77583e9aa4da3 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Thu, 22 Jun 2023 17:53:41 +0200
Subject: [PATCH 86/88] SLA for RN 0.72 (#584)

---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 108b6029c..9ed4c90ff 100644
--- a/README.md
+++ b/README.md
@@ -231,7 +231,7 @@ For iOS the XCode project needs to be generated with `CMake` as described [above
 | 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
 | 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
 | 0.70 | 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
-| 0.71 | 1.6.0, 1.6.1 |
+| 0.71 -> 0.72 | 1.6.0, 1.6.1 |
 
 Here are the package names for Android/iOS and Windows:
 
@@ -241,7 +241,7 @@ Here are the package names for Android/iOS and Windows:
 | 0.65 -> 0.68 | [@babylonjs/react-native-iosandroid-0-65](https://www.npmjs.com/package/@babylonjs/react-native-iosandroid-0-65) | [@babylonjs/react-native-windows-0-65](https://www.npmjs.com/package/@babylonjs/react-native-windows-0-65) |
 | 0.69 | [@babylonjs/react-native-iosandroid-0-69](https://www.npmjs.com/package/@babylonjs/react-native-iosandroid-0-69) | [@babylonjs/react-native-windows-0-69](https://www.npmjs.com/package/@babylonjs/react-native-windows-0-69) |
 | 0.70 | [@babylonjs/react-native-iosandroid-0-70](https://www.npmjs.com/package/@babylonjs/react-native-iosandroid-0-70) | [@babylonjs/react-native-windows-0-70](https://www.npmjs.com/package/@babylonjs/react-native-windows-0-70) |
-| 0.71 | [@babylonjs/react-native-iosandroid-0-71](https://www.npmjs.com/package/@babylonjs/react-native-iosandroid-0-71) | [@babylonjs/react-native-windows-0-71](https://www.npmjs.com/package/@babylonjs/react-native-windows-0-71) |
+| 0.71 -> 0.72 | [@babylonjs/react-native-iosandroid-0-71](https://www.npmjs.com/package/@babylonjs/react-native-iosandroid-0-71) | [@babylonjs/react-native-windows-0-71](https://www.npmjs.com/package/@babylonjs/react-native-windows-0-71) |
 
 Also, [@babylonjs/react-native](https://www.npmjs.com/package/@babylonjs/react-native) is a needed dependency for all platforms.
 

From ca1663ffda25c47d731a313705ced28308b09245 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Thu, 20 Jul 2023 18:02:15 +0200
Subject: [PATCH 87/88] Update BN submodule (#589)

* Update BN submodule

* BN #883ba13

* a676d6df117cb6cdebc5c347b8aa37f2fed852fb

* cmake + brn up

* cmake update

* removed comment

* comment

* GraphicsDevice

* graphics init

* android rn 0.71

* back to 0.64
---
 .github/workflows/bn_master_commit.yml        |  2 +-
 .github/workflows/ios_android.yml             |  2 +-
 .github/workflows/pr.yml                      |  4 +-
 .../android/CMakeLists.txt                    |  4 +-
 .../android/build.gradle                      |  2 +-
 .../ios/CMakeLists.txt                        |  2 +-
 .../submodules/BabylonNative                  |  2 +-
 .../windows/CMakeLists.txt                    |  2 +-
 .../react-native/shared/BabylonNative.cpp     | 48 +++++++++----------
 9 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/.github/workflows/bn_master_commit.yml b/.github/workflows/bn_master_commit.yml
index 85b2f9cf3..beaf3270c 100644
--- a/.github/workflows/bn_master_commit.yml
+++ b/.github/workflows/bn_master_commit.yml
@@ -23,7 +23,7 @@ jobs:
       - name: Setup CMake
         uses: jwlawson/actions-setup-cmake@v1.8
         with:
-          cmake-version: '3.19.6' # See https://gitlab.kitware.com/cmake/cmake/-/issues/22021
+          cmake-version: '3.26.3'
       - name: Setup Ninja
         run: brew install ninja
       - name: NPM Install (Playground)
diff --git a/.github/workflows/ios_android.yml b/.github/workflows/ios_android.yml
index 12d6316cc..f501f8e61 100644
--- a/.github/workflows/ios_android.yml
+++ b/.github/workflows/ios_android.yml
@@ -28,7 +28,7 @@ jobs:
       - name: Setup CMake
         uses: jwlawson/actions-setup-cmake@v1.8
         with:
-          cmake-version: '3.19.6' # See https://gitlab.kitware.com/cmake/cmake/-/issues/22021
+          cmake-version: '3.26.3'
       - name: Setup Ninja
         run: brew install ninja
       - name: 'Select XCode ${{ inputs.xcode-version }}'
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index eb34d5003..0d762adbd 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -21,7 +21,7 @@ jobs:
       - name: Setup CMake
         uses: jwlawson/actions-setup-cmake@v1.8
         with:
-          cmake-version: '3.19.6' # See https://gitlab.kitware.com/cmake/cmake/-/issues/22021
+          cmake-version: '3.26.3'
       - name: Setup Ninja
         run: brew install ninja
       - name: NPM Install (Playground)
@@ -77,7 +77,7 @@ jobs:
       - name: Setup CMake
         uses: jwlawson/actions-setup-cmake@v1.8
         with:
-          cmake-version: '3.19.6' # See https://gitlab.kitware.com/cmake/cmake/-/issues/22021
+          cmake-version: '3.26.3'
       - name: Setup Ninja
         run: brew install ninja
       - name: NPM Install (Playground)
diff --git a/Modules/@babylonjs/react-native-iosandroid/android/CMakeLists.txt b/Modules/@babylonjs/react-native-iosandroid/android/CMakeLists.txt
index 99bd84ed3..1396477f9 100644
--- a/Modules/@babylonjs/react-native-iosandroid/android/CMakeLists.txt
+++ b/Modules/@babylonjs/react-native-iosandroid/android/CMakeLists.txt
@@ -134,7 +134,7 @@ if (EXISTS "${TURBOMODULE_DIR}/CMakeLists.txt")
         turbomodulejsijni                   # prefab ready
         yoga                                # prefab ready
         AndroidExtensions
-        Graphics
+        GraphicsDevice
         JsRuntime
         NativeCamera
         NativeCapture
@@ -196,7 +196,7 @@ else()
         jsi
         turbomodulejsijni
         AndroidExtensions
-        Graphics
+        GraphicsDevice
         JsRuntime
         NativeCamera
         NativeCapture
diff --git a/Modules/@babylonjs/react-native-iosandroid/android/build.gradle b/Modules/@babylonjs/react-native-iosandroid/android/build.gradle
index e7dfd3fd0..c64e1ec91 100644
--- a/Modules/@babylonjs/react-native-iosandroid/android/build.gradle
+++ b/Modules/@babylonjs/react-native-iosandroid/android/build.gradle
@@ -109,7 +109,7 @@ android {
     }
     externalNativeBuild {
         cmake {
-            version '3.19.6'
+            version '3.19.6+'
             path 'CMakeLists.txt'
         }
     }
diff --git a/Modules/@babylonjs/react-native-iosandroid/ios/CMakeLists.txt b/Modules/@babylonjs/react-native-iosandroid/ios/CMakeLists.txt
index fadbf2538..23ff53114 100644
--- a/Modules/@babylonjs/react-native-iosandroid/ios/CMakeLists.txt
+++ b/Modules/@babylonjs/react-native-iosandroid/ios/CMakeLists.txt
@@ -42,7 +42,7 @@ target_include_directories(BabylonNative PUBLIC ${CMAKE_CURRENT_LIST_DIR})
 target_link_libraries(BabylonNative
     z
     arcana
-    Graphics
+    GraphicsDevice
     jsi
     reactnative
     JsRuntime
diff --git a/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative b/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative
index 409bc4b31..c89031ec5 160000
--- a/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative
+++ b/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative
@@ -1 +1 @@
-Subproject commit 409bc4b3178a5140462c618293e5ff984dfe5bd5
+Subproject commit c89031ec58bca5faffa92d3498230c5484175e57
diff --git a/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt b/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt
index a23b717ff..7dcada09c 100644
--- a/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt
+++ b/Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt
@@ -30,7 +30,7 @@ target_include_directories(BabylonNative PRIVATE ${SHARED_INCLUDES})
 
 target_link_libraries(BabylonNative
     arcana
-    Graphics
+    GraphicsDevice
     jsi
     JsRuntime
     NativeCamera
diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp
index a42f83bee..f1042c3b0 100644
--- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp
+++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp
@@ -23,8 +23,8 @@ namespace BabylonNative
     namespace
     {
         Dispatcher g_inlineDispatcher{ [](const std::function<void()>& func) { func(); } };
-        std::unique_ptr<Babylon::Graphics::Device> g_graphics{};
-        std::unique_ptr<Babylon::Graphics::DeviceUpdate> g_update{};
+        std::optional<Babylon::Graphics::Device> g_graphicsDevice{};
+        std::optional<Babylon::Graphics::DeviceUpdate> g_update{};
         std::unique_ptr<Babylon::Polyfills::Canvas> g_nativeCanvas{};
     }
 
@@ -75,34 +75,34 @@ namespace BabylonNative
 
         void UpdateView(WindowType window, size_t width, size_t height)
         {
-            m_windowConfig.Window = window;
-            m_windowConfig.Width = width;
-            m_windowConfig.Height = height;
+            m_graphicsConfig.Window = window;
+            m_graphicsConfig.Width = width;
+            m_graphicsConfig.Height = height;
             UpdateGraphicsConfiguration();
         }
 
         void UpdateGraphicsConfiguration()
         {
-            if (!g_graphics)
+            if (!g_graphicsDevice)
             {
-                g_graphics = Babylon::Graphics::Device::Create(m_windowConfig);
-                g_update = std::make_unique<Babylon::Graphics::DeviceUpdate>(g_graphics->GetUpdate("update"));
+                g_graphicsDevice.emplace(m_graphicsConfig);
+                g_update.emplace(g_graphicsDevice->GetUpdate("update"));
             }
             else
             {
-                g_graphics->UpdateWindow(m_windowConfig);
-                g_graphics->UpdateSize(m_windowConfig.Width, m_windowConfig.Height);
+                g_graphicsDevice->UpdateWindow(m_graphicsConfig.Window);
+                g_graphicsDevice->UpdateSize(m_graphicsConfig.Width, m_graphicsConfig.Height);
             }
-            g_graphics->UpdateMSAA(mMSAAValue);
-            g_graphics->UpdateAlphaPremultiplied(mAlphaPremultiplied);
+            g_graphicsDevice->UpdateMSAA(mMSAAValue);
+            g_graphicsDevice->UpdateAlphaPremultiplied(mAlphaPremultiplied);
 
-            g_graphics->EnableRendering();
+            g_graphicsDevice->EnableRendering();
 
             std::call_once(m_isGraphicsInitialized, [this]()
             {
                 m_jsDispatcher([this]()
                 {
-                    g_graphics->AddToJavaScript(m_env);
+                    g_graphicsDevice->AddToJavaScript(m_env);
                     Babylon::Plugins::NativeEngine::Initialize(m_env);
                 });
             });
@@ -121,18 +121,18 @@ namespace BabylonNative
         void UpdateMSAA(uint8_t value)
         {
             mMSAAValue = value;
-            if (g_graphics)
+            if (g_graphicsDevice)
             {
-                g_graphics->UpdateMSAA(value);
+                g_graphicsDevice->UpdateMSAA(value);
             }
         }
 
         void UpdateAlphaPremultiplied(bool enabled)
         {
             mAlphaPremultiplied = enabled;
-            if (g_graphics)
+            if (g_graphicsDevice)
             {
-                g_graphics->UpdateAlphaPremultiplied(enabled);
+                g_graphicsDevice->UpdateAlphaPremultiplied(enabled);
             }
         }
 
@@ -144,12 +144,12 @@ namespace BabylonNative
             }
             // If rendering has not been explicitly enabled, or has been explicitly disabled, then don't try to render.
             // Otherwise rendering can be implicitly enabled, which may not be desirable (e.g. after the engine is disposed).
-            if (g_graphics && m_isRenderingEnabled)
+            if (g_graphicsDevice && m_isRenderingEnabled)
             {
-                g_graphics->StartRenderingCurrentFrame();
+                g_graphicsDevice->StartRenderingCurrentFrame();
                 g_update->Start();
                 g_update->Finish();
-                g_graphics->FinishRenderingCurrentFrame();
+                g_graphicsDevice->FinishRenderingCurrentFrame();
             }
         }
 
@@ -160,10 +160,10 @@ namespace BabylonNative
 
         void ResetView()
         {
-            if (g_graphics)
+            if (g_graphicsDevice)
             {
                 g_nativeCanvas->FlushGraphicResources();
-                g_graphics->DisableRendering();
+                g_graphicsDevice->DisableRendering();
             }
 
             m_isRenderingEnabled = false;
@@ -264,7 +264,7 @@ namespace BabylonNative
         Babylon::Plugins::NativeInput* m_nativeInput{};
         std::optional<Babylon::Plugins::NativeXr> m_nativeXr{};
 
-        Babylon::Graphics::WindowConfiguration m_windowConfig{};
+        Babylon::Graphics::Configuration m_graphicsConfig{};
 
         std::shared_ptr<bool> m_isXRActive{};
         uint8_t mMSAAValue{};

From f90faebe3d3dc7a28a47f432857c6b1add24d648 Mon Sep 17 00:00:00 2001
From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com>
Date: Mon, 24 Jul 2023 10:30:08 +0200
Subject: [PATCH 88/88] SLA 1.6.3 (#591)

---
 README.md | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 9ed4c90ff..f67b23db7 100644
--- a/README.md
+++ b/README.md
@@ -227,11 +227,11 @@ For iOS the XCode project needs to be generated with `CMake` as described [above
 
 | React Native | Babylon React Native |
 |---|---|
-| 0.64 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
-| 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
-| 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
-| 0.70 | 1.5.0, 1.5.1, 1.6.0, 1.6.1 |
-| 0.71 -> 0.72 | 1.6.0, 1.6.1 |
+| 0.64 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.3 |
+| 0.65 -> 0.68 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.3 |
+| 0.69 | 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.3 |
+| 0.70 | 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.3 |
+| 0.71 -> 0.72 | 1.6.0, 1.6.1, 1.6.3 |
 
 Here are the package names for Android/iOS and Windows:
 
@@ -260,6 +260,7 @@ Depending on the Babylon React Native NPM package version, some Babylon.js NPM d
 | 1.5.1 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.1, 5.45.2, 5.46.0, 5.47.0, 5.47.1, 5.48.0, 5.48.1, 5.49.0, 5.49.1, 5.49.2, 5.50.0, 5.50.1, 5.51.0, 5.52.0, 5.53.0, 5.54.0, 5.55.0, 5.56.0, 5.57.0, 5.57.1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.3.1, 6.4.0, 6.4.1 |
 | 1.6.0 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
 | 1.6.1 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
+| 1.6.3 | 5.42.2, 5.43.0, 5.43.1, 5.43.2, 5.44.0, 5.45.0, 5.45.2, 5.46.0, 5.47.0, 5.48.0, 5.48.1, 5.49.1 |
 
 ## Security