@babylonjs/react-native 0.65.0-alpha.47 → 1.0.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EngineHook.d.ts +0 -1
- package/EngineHook.js +0 -1
- package/EngineHook.js.map +1 -1
- package/EngineView.js +13 -37
- package/EngineView.js.map +1 -1
- package/NativeEngineHook.d.ts +4 -0
- package/NativeEngineHook.js +43 -0
- package/NativeEngineHook.js.map +1 -0
- package/NativeEngineView.d.ts +10 -0
- package/NativeEngineView.js +3 -0
- package/NativeEngineView.js.map +1 -0
- package/package.json +5 -5
- package/shared/BabylonNative.h +4 -4
- package/android/build.gradle +0 -173
- package/android/include/IXrContextARCore.h +0 -10
- package/android/src/main/AndroidManifest.xml +0 -4
- package/android/src/main/java/com/babylonreactnative/BabylonModule.java +0 -37
- package/android/src/main/java/com/babylonreactnative/BabylonNativeInterop.java +0 -125
- package/android/src/main/java/com/babylonreactnative/BabylonPackage.java +0 -21
- package/android/src/main/java/com/babylonreactnative/EngineView.java +0 -230
- package/android/src/main/java/com/babylonreactnative/EngineViewManager.java +0 -71
- package/android/src/main/java/com/babylonreactnative/SnapshotDataReturnedEvent.java +0 -28
- package/android/src/main/jniLibs/arm64-v8a/libBabylonNative.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libturbomodulejsijni.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libBabylonNative.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libturbomodulejsijni.so +0 -0
- package/android/src/main/jniLibs/x86/libBabylonNative.so +0 -0
- package/android/src/main/jniLibs/x86/libturbomodulejsijni.so +0 -0
- package/ios/BabylonModule.mm +0 -35
- package/ios/BabylonNativeInterop.h +0 -14
- package/ios/BabylonNativeInterop.mm +0 -130
- package/ios/EngineViewManager.mm +0 -140
- package/ios/ReactNativeBabylon.xcodeproj/project.pbxproj +0 -14881
- package/ios/ReactNativeBabylon.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
- package/ios/include/IXrContextARKit.h +0 -10
- package/ios/libs/libBabylonNative.a +0 -0
- package/ios/libs/libCanvas.a +0 -0
- package/ios/libs/libGenericCodeGen.a +0 -0
- package/ios/libs/libGraphics.a +0 -0
- package/ios/libs/libJsRuntime.a +0 -0
- package/ios/libs/libMachineIndependent.a +0 -0
- package/ios/libs/libNativeCapture.a +0 -0
- package/ios/libs/libNativeEngine.a +0 -0
- package/ios/libs/libNativeInput.a +0 -0
- package/ios/libs/libNativeOptimizations.a +0 -0
- package/ios/libs/libNativeTracing.a +0 -0
- package/ios/libs/libNativeXr.a +0 -0
- package/ios/libs/libOGLCompiler.a +0 -0
- package/ios/libs/libOSDependent.a +0 -0
- package/ios/libs/libSPIRV.a +0 -0
- package/ios/libs/libUrlLib.a +0 -0
- package/ios/libs/libWindow.a +0 -0
- package/ios/libs/libXMLHttpRequest.a +0 -0
- package/ios/libs/libastc-codec.a +0 -0
- package/ios/libs/libastc.a +0 -0
- package/ios/libs/libbgfx.a +0 -0
- package/ios/libs/libbimg.a +0 -0
- package/ios/libs/libbx.a +0 -0
- package/ios/libs/libglslang.a +0 -0
- package/ios/libs/libnapi.a +0 -0
- package/ios/libs/libspirv-cross-core.a +0 -0
- package/ios/libs/libspirv-cross-glsl.a +0 -0
- package/ios/libs/libspirv-cross-msl.a +0 -0
- package/ios/libs/libtinyexr.a +0 -0
- package/ios/libs/libxr.a +0 -0
- package/react-native-babylon.podspec +0 -25
package/EngineHook.d.ts
CHANGED
package/EngineHook.js
CHANGED
|
@@ -3,7 +3,6 @@ import { Platform } from 'react-native';
|
|
|
3
3
|
import { PERMISSIONS, check, request } from 'react-native-permissions';
|
|
4
4
|
import { WebXRSessionManager, WebXRExperienceHelper, Color4, Tools } from '@babylonjs/core';
|
|
5
5
|
import { ReactNativeEngine } from './ReactNativeEngine';
|
|
6
|
-
import './VersionValidation';
|
|
7
6
|
import * as base64 from 'base-64';
|
|
8
7
|
// These are errors that are normally thrown by WebXR's requestSession, so we should throw the same errors under similar circumstances so app code can be written the same for browser or native.
|
|
9
8
|
// https://developer.mozilla.org/en-US/docs/Web/API/XRSystem/requestSession
|
package/EngineHook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineHook.js","sourceRoot":"","sources":["../../Modules/@babylonjs/react-native/EngineHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAU,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"EngineHook.js","sourceRoot":"","sources":["../../Modules/@babylonjs/react-native/EngineHook.ts"],"names":[],"mappings":"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"}
|
package/EngineView.js
CHANGED
|
@@ -1,48 +1,24 @@
|
|
|
1
|
-
import React, { useCallback, useEffect, useState, useRef } from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import React, { useCallback, useEffect, useState, useRef, useMemo } from 'react';
|
|
2
|
+
import { View, Text, findNodeHandle, UIManager } from 'react-native';
|
|
3
3
|
import { SceneInstrumentation } from '@babylonjs/core';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { useModuleInitializer, useRenderLoop } from './NativeEngineHook';
|
|
5
|
+
import { NativeEngineView } from './NativeEngineView';
|
|
6
6
|
export const EngineView = (props) => {
|
|
7
|
-
const [initialized, setInitialized] = useState();
|
|
8
|
-
const [appState, setAppState] = useState(AppState.currentState);
|
|
9
7
|
//const [fps, setFps] = useState<number>();
|
|
10
8
|
const [sceneStats, setSceneStats] = useState();
|
|
11
9
|
const engineViewRef = useRef(null);
|
|
12
10
|
const snapshotPromise = useRef();
|
|
13
11
|
const isTransparent = props.isTransparent || false;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
setAppState(appState);
|
|
22
|
-
};
|
|
23
|
-
AppState.addEventListener("change", onAppStateChanged);
|
|
24
|
-
return () => {
|
|
25
|
-
AppState.removeEventListener("change", onAppStateChanged);
|
|
26
|
-
};
|
|
27
|
-
}, []);
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
if (props.camera && appState === "active") {
|
|
30
|
-
const engine = props.camera.getScene().getEngine();
|
|
31
|
-
if (!engine.isDisposed) {
|
|
32
|
-
engine.runRenderLoop(() => {
|
|
33
|
-
for (let scene of engine.scenes) {
|
|
34
|
-
scene.render();
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
return () => {
|
|
38
|
-
if (!engine.isDisposed) {
|
|
39
|
-
engine.stopRenderLoop();
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
}
|
|
12
|
+
const initialized = useModuleInitializer();
|
|
13
|
+
const engine = useMemo(() => {
|
|
14
|
+
return props.camera?.getScene().getEngine();
|
|
15
|
+
}, [props.camera]);
|
|
16
|
+
const renderLoop = useCallback(() => {
|
|
17
|
+
for (let scene of engine.scenes) {
|
|
18
|
+
scene.render();
|
|
43
19
|
}
|
|
44
|
-
|
|
45
|
-
|
|
20
|
+
}, [engine]);
|
|
21
|
+
useRenderLoop(engine, renderLoop);
|
|
46
22
|
useEffect(() => {
|
|
47
23
|
if (props.camera && (props.displayFrameRate ?? __DEV__)) {
|
|
48
24
|
const scene = props.camera.getScene();
|
package/EngineView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineView.js","sourceRoot":"","sources":["../../Modules/@babylonjs/react-native/EngineView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAgD,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"EngineView.js","sourceRoot":"","sources":["../../Modules/@babylonjs/react-native/EngineView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { AppState } from 'react-native';
|
|
3
|
+
import { ensureInitialized } from './BabylonModule';
|
|
4
|
+
import './VersionValidation';
|
|
5
|
+
export function useModuleInitializer() {
|
|
6
|
+
const [initialized, setInitialized] = useState();
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
(async () => {
|
|
9
|
+
setInitialized(await ensureInitialized());
|
|
10
|
+
})();
|
|
11
|
+
}, []);
|
|
12
|
+
return initialized;
|
|
13
|
+
}
|
|
14
|
+
function useAppState() {
|
|
15
|
+
const [appState, setAppState] = useState(AppState.currentState);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const onAppStateChanged = (appState) => {
|
|
18
|
+
setAppState(appState);
|
|
19
|
+
};
|
|
20
|
+
AppState.addEventListener("change", onAppStateChanged);
|
|
21
|
+
return () => {
|
|
22
|
+
AppState.removeEventListener("change", onAppStateChanged);
|
|
23
|
+
};
|
|
24
|
+
}, []);
|
|
25
|
+
return appState;
|
|
26
|
+
}
|
|
27
|
+
export function useRenderLoop(engine, renderCallback) {
|
|
28
|
+
const appState = useAppState();
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (engine && appState === "active") {
|
|
31
|
+
if (!engine.isDisposed) {
|
|
32
|
+
engine.runRenderLoop(renderCallback);
|
|
33
|
+
return () => {
|
|
34
|
+
if (!engine.isDisposed) {
|
|
35
|
+
engine.stopRenderLoop();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}, [appState, engine]);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=NativeEngineHook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeEngineHook.js","sourceRoot":"","sources":["../../Modules/@babylonjs/react-native/NativeEngineHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAkB,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,qBAAqB,CAAC;AAE7B,MAAM,UAAU,oBAAoB;IAChC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAW,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACX,CAAC,KAAK,IAAI,EAAE;YACR,cAAc,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,SAAS,WAAW;IAChB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,iBAAiB,GAAG,CAAC,QAAwB,EAAE,EAAE;YACnD,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAEvD,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC9D,CAAC,CAAA;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqC,EAAE,cAA0B;IAC3F,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,MAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBACpB,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBAErC,OAAO,GAAG,EAAE;oBACR,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;wBACpB,MAAM,CAAC,cAAc,EAAE,CAAC;qBAC3B;gBACL,CAAC,CAAC;aACL;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Component, SyntheticEvent } from 'react';
|
|
2
|
+
import { ViewProps } from 'react-native';
|
|
3
|
+
export interface NativeEngineViewProps extends ViewProps {
|
|
4
|
+
isTransparent: boolean;
|
|
5
|
+
onSnapshotDataReturned?: (event: SyntheticEvent) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const NativeEngineView: {
|
|
8
|
+
prototype: Component<NativeEngineViewProps>;
|
|
9
|
+
new (props: Readonly<NativeEngineViewProps>): Component<NativeEngineViewProps>;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeEngineView.js","sourceRoot":"","sources":["../../Modules/@babylonjs/react-native/NativeEngineView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAa,MAAM,cAAc,CAAC;AASjE,MAAM,CAAC,MAAM,gBAAgB,GAGzB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@babylonjs/react-native",
|
|
3
3
|
"title": "React Native Babylon",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "1.0.0-preview.1",
|
|
5
5
|
"description": "Babylon Native integration into React Native",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"scripts": {
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
"semver": "^7.3.2"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@babylonjs/core": "^5.0.0-
|
|
31
|
+
"@babylonjs/core": "^5.0.0-rc.12",
|
|
32
32
|
"react": ">=16.13.1",
|
|
33
|
-
"react-native": ">=0.
|
|
34
|
-
"react-native-permissions": "^
|
|
33
|
+
"react-native": ">=0.63.1",
|
|
34
|
+
"react-native-permissions": "^3.0.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@babel/core": "^7.8.4",
|
|
38
38
|
"@babel/runtime": "^7.8.4",
|
|
39
|
-
"@babylonjs/core": "5.0.0-
|
|
39
|
+
"@babylonjs/core": "5.0.0-rc.12",
|
|
40
40
|
"@rnw-scripts/eslint-config": "0.1.6",
|
|
41
41
|
"@rnw-scripts/ts-config": "0.1.0",
|
|
42
42
|
"@types/base-64": "^0.1.3",
|
package/shared/BabylonNative.h
CHANGED
|
@@ -31,10 +31,10 @@ namespace BabylonNative
|
|
|
31
31
|
|
|
32
32
|
void RenderView();
|
|
33
33
|
void ResetView();
|
|
34
|
-
void SetMouseButtonState(uint32_t buttonId, bool isDown,
|
|
35
|
-
void SetMousePosition(
|
|
36
|
-
void SetTouchButtonState(uint32_t pointerId, bool isDown,
|
|
37
|
-
void SetTouchPosition(uint32_t pointerId,
|
|
34
|
+
void SetMouseButtonState(uint32_t buttonId, bool isDown, int32_t x, int32_t y);
|
|
35
|
+
void SetMousePosition(int32_t x, int32_t y);
|
|
36
|
+
void SetTouchButtonState(uint32_t pointerId, bool isDown, int32_t x, int32_t y);
|
|
37
|
+
void SetTouchPosition(uint32_t pointerId, int32_t x, int32_t y);
|
|
38
38
|
|
|
39
39
|
bool IsXRActive();
|
|
40
40
|
|
package/android/build.gradle
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
// android/build.gradle
|
|
2
|
-
|
|
3
|
-
// based on:
|
|
4
|
-
//
|
|
5
|
-
// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/build.gradle
|
|
6
|
-
// original location:
|
|
7
|
-
// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/build.gradle
|
|
8
|
-
//
|
|
9
|
-
// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/app/build.gradle
|
|
10
|
-
// original location:
|
|
11
|
-
// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle
|
|
12
|
-
|
|
13
|
-
def DEFAULT_COMPILE_SDK_VERSION = 28
|
|
14
|
-
def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3'
|
|
15
|
-
def DEFAULT_MIN_SDK_VERSION = 18
|
|
16
|
-
def DEFAULT_TARGET_SDK_VERSION = 28
|
|
17
|
-
|
|
18
|
-
def safeExtGet(prop, fallback) {
|
|
19
|
-
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
def reactProperties = new Properties()
|
|
23
|
-
file("$projectDir/../../../react-native/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) }
|
|
24
|
-
def REACT_VERSION = reactProperties.getProperty("VERSION_NAME").split("\\.")[1].toInteger()
|
|
25
|
-
|
|
26
|
-
apply plugin: 'com.android.library'
|
|
27
|
-
apply plugin: 'maven'
|
|
28
|
-
|
|
29
|
-
buildscript {
|
|
30
|
-
// The Android Gradle plugin is only required when opening the android folder stand-alone.
|
|
31
|
-
// This avoids unnecessary downloads and potential conflicts when the library is included as a
|
|
32
|
-
// module dependency in an application project.
|
|
33
|
-
// ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
|
|
34
|
-
if (project == rootProject) {
|
|
35
|
-
repositories {
|
|
36
|
-
google()
|
|
37
|
-
jcenter()
|
|
38
|
-
}
|
|
39
|
-
dependencies {
|
|
40
|
-
classpath 'com.android.tools.build:gradle:3.4.1'
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
apply plugin: 'com.android.library'
|
|
46
|
-
apply plugin: 'maven'
|
|
47
|
-
|
|
48
|
-
android {
|
|
49
|
-
compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION)
|
|
50
|
-
buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION)
|
|
51
|
-
defaultConfig {
|
|
52
|
-
minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION)
|
|
53
|
-
targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)
|
|
54
|
-
versionCode 1
|
|
55
|
-
versionName "1.0"
|
|
56
|
-
}
|
|
57
|
-
lintOptions {
|
|
58
|
-
abortOnError false
|
|
59
|
-
}
|
|
60
|
-
compileOptions {
|
|
61
|
-
sourceCompatibility JavaVersion.VERSION_1_8
|
|
62
|
-
targetCompatibility JavaVersion.VERSION_1_8
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// The full/real version of libturbomodulejsijni.so will be built and included in apps using React Native 0.64 or newer,
|
|
67
|
-
// so exclude Babylon React Native's minimal version of these libs in this case.
|
|
68
|
-
if (REACT_VERSION >= 64) {
|
|
69
|
-
android.packagingOptions.excludes += 'lib/armeabi-v7a/libturbomodulejsijni.so'
|
|
70
|
-
android.packagingOptions.excludes += 'lib/arm64-v8a/libturbomodulejsijni.so'
|
|
71
|
-
android.packagingOptions.excludes += 'lib/x86/libturbomodulejsijni.so'
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
repositories {
|
|
75
|
-
// ref: https://www.baeldung.com/maven-local-repository
|
|
76
|
-
mavenLocal()
|
|
77
|
-
maven {
|
|
78
|
-
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
|
79
|
-
url "$rootDir/../node_modules/react-native/android"
|
|
80
|
-
}
|
|
81
|
-
maven {
|
|
82
|
-
// Android JSC is installed from npm
|
|
83
|
-
url "$rootDir/../node_modules/jsc-android/dist"
|
|
84
|
-
}
|
|
85
|
-
google()
|
|
86
|
-
jcenter()
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
dependencies {
|
|
90
|
-
//noinspection GradleDynamicVersion
|
|
91
|
-
implementation 'com.facebook.react:react-native:+' // From node_modules
|
|
92
|
-
implementation 'com.google.ar:core:1.22.0'
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
def configureReactNativePom(def pom) {
|
|
96
|
-
def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text)
|
|
97
|
-
|
|
98
|
-
pom.project {
|
|
99
|
-
name packageJson.title
|
|
100
|
-
artifactId packageJson.name
|
|
101
|
-
version = packageJson.version
|
|
102
|
-
group = "com.babylonreactnative"
|
|
103
|
-
description packageJson.description
|
|
104
|
-
url packageJson.repository.baseUrl
|
|
105
|
-
|
|
106
|
-
licenses {
|
|
107
|
-
license {
|
|
108
|
-
name packageJson.license
|
|
109
|
-
url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename
|
|
110
|
-
distribution 'repo'
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
developers {
|
|
115
|
-
developer {
|
|
116
|
-
id packageJson.author.username
|
|
117
|
-
name packageJson.author.name
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
afterEvaluate { project ->
|
|
124
|
-
// some Gradle build hooks ref:
|
|
125
|
-
// https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html
|
|
126
|
-
task androidJavadoc(type: Javadoc) {
|
|
127
|
-
source = android.sourceSets.main.java.srcDirs
|
|
128
|
-
classpath += files(android.bootClasspath)
|
|
129
|
-
classpath += files(project.getConfigurations().getByName('compile').asList())
|
|
130
|
-
include '**/*.java'
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {
|
|
134
|
-
classifier = 'javadoc'
|
|
135
|
-
from androidJavadoc.destinationDir
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
task androidSourcesJar(type: Jar) {
|
|
139
|
-
classifier = 'sources'
|
|
140
|
-
from android.sourceSets.main.java.srcDirs
|
|
141
|
-
include '**/*.java'
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
android.libraryVariants.all { variant ->
|
|
145
|
-
def name = variant.name.capitalize()
|
|
146
|
-
def javaCompileTask = variant.javaCompileProvider.get()
|
|
147
|
-
|
|
148
|
-
task "jar${name}"(type: Jar, dependsOn: javaCompileTask) {
|
|
149
|
-
from javaCompileTask.destinationDir
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
artifacts {
|
|
154
|
-
archives androidSourcesJar
|
|
155
|
-
archives androidJavadocJar
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
task installArchives(type: Upload) {
|
|
159
|
-
configuration = configurations.archives
|
|
160
|
-
repositories.mavenDeployer {
|
|
161
|
-
// Deploy to react-native-event-bridge/maven, ready to publish to npm
|
|
162
|
-
repository url: "file://${projectDir}/../android/maven"
|
|
163
|
-
configureReactNativePom pom
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
task validateSdk {
|
|
169
|
-
def minSdkVersion = safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION)
|
|
170
|
-
if (minSdkVersion < DEFAULT_MIN_SDK_VERSION) {
|
|
171
|
-
throw new GradleException("minSdkVersion must be at least ${DEFAULT_MIN_SDK_VERSION} but is currently ${minSdkVersion}")
|
|
172
|
-
}
|
|
173
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
package com.babylonreactnative;
|
|
2
|
-
|
|
3
|
-
import androidx.annotation.NonNull;
|
|
4
|
-
|
|
5
|
-
import com.facebook.react.bridge.Promise;
|
|
6
|
-
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
8
|
-
import com.facebook.react.bridge.ReactMethod;
|
|
9
|
-
|
|
10
|
-
public final class BabylonModule extends ReactContextBaseJavaModule {
|
|
11
|
-
|
|
12
|
-
BabylonModule(ReactApplicationContext reactContext) {
|
|
13
|
-
super(reactContext);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
@NonNull
|
|
17
|
-
@Override
|
|
18
|
-
public String getName() {
|
|
19
|
-
return "BabylonModule";
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@ReactMethod
|
|
23
|
-
public void initialize(Promise promise) {
|
|
24
|
-
this.getReactApplicationContext().runOnJSQueueThread(() -> {
|
|
25
|
-
BabylonNativeInterop.initialize(this.getReactApplicationContext());
|
|
26
|
-
promise.resolve(null);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
@ReactMethod
|
|
31
|
-
public void resetView(Promise promise) {
|
|
32
|
-
this.getReactApplicationContext().runOnUiQueueThread(() -> {
|
|
33
|
-
BabylonNativeInterop.resetView();
|
|
34
|
-
promise.resolve(null);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
package com.babylonreactnative;
|
|
2
|
-
|
|
3
|
-
import android.app.Activity;
|
|
4
|
-
import android.content.Context;
|
|
5
|
-
import android.content.Intent;
|
|
6
|
-
import android.view.MotionEvent;
|
|
7
|
-
import android.view.Surface;
|
|
8
|
-
|
|
9
|
-
import com.facebook.react.bridge.ActivityEventListener;
|
|
10
|
-
import com.facebook.react.bridge.LifecycleEventListener;
|
|
11
|
-
import com.facebook.react.bridge.ReactContext;
|
|
12
|
-
import com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder;
|
|
13
|
-
|
|
14
|
-
public final class BabylonNativeInterop {
|
|
15
|
-
|
|
16
|
-
private static class BabylonNative {
|
|
17
|
-
static {
|
|
18
|
-
System.loadLibrary("BabylonNative");
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public static native void initialize(Context context, long jsiRuntimeRef, CallInvokerHolder jsCallInvokerHolder);
|
|
22
|
-
public static native void setCurrentActivity(Activity activity);
|
|
23
|
-
public static native void pause();
|
|
24
|
-
public static native void resume();
|
|
25
|
-
public static native void updateView(Surface surface);
|
|
26
|
-
public static native void renderView();
|
|
27
|
-
public static native void resetView();
|
|
28
|
-
public static native void updateXRView(Surface surface);
|
|
29
|
-
public static native boolean isXRActive();
|
|
30
|
-
public static native void setTouchButtonState(int pointerId, boolean isDown, int x, int y);
|
|
31
|
-
public static native void setTouchPosition(int pointerId, int x, int y);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private static LifecycleEventListener lifeCycleEventListener;
|
|
35
|
-
private static ActivityEventListener activityEventListener;
|
|
36
|
-
|
|
37
|
-
public static void initialize(ReactContext reactContext) {
|
|
38
|
-
long jsiRuntimeRef = reactContext.getJavaScriptContextHolder().get();
|
|
39
|
-
CallInvokerHolder jsCallInvokerHolder = reactContext.getCatalystInstance().getJSCallInvokerHolder();
|
|
40
|
-
BabylonNative.initialize(reactContext, jsiRuntimeRef, jsCallInvokerHolder);
|
|
41
|
-
|
|
42
|
-
if (BabylonNativeInterop.lifeCycleEventListener != null) {
|
|
43
|
-
reactContext.removeLifecycleEventListener(lifeCycleEventListener);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
BabylonNativeInterop.lifeCycleEventListener = new LifecycleEventListener() {
|
|
47
|
-
@Override
|
|
48
|
-
public void onHostResume() {
|
|
49
|
-
BabylonNative.setCurrentActivity(reactContext.getCurrentActivity());
|
|
50
|
-
BabylonNative.resume();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
@Override
|
|
54
|
-
public void onHostPause() {
|
|
55
|
-
BabylonNative.pause();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@Override
|
|
59
|
-
public void onHostDestroy() {
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
reactContext.addLifecycleEventListener(lifeCycleEventListener);
|
|
64
|
-
|
|
65
|
-
if (BabylonNativeInterop.activityEventListener != null) {
|
|
66
|
-
reactContext.removeActivityEventListener(BabylonNativeInterop.activityEventListener);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
BabylonNativeInterop.activityEventListener = new ActivityEventListener() {
|
|
70
|
-
@Override
|
|
71
|
-
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
|
|
72
|
-
// Nothing to do here
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
@Override
|
|
76
|
-
public void onNewIntent(Intent intent) {
|
|
77
|
-
BabylonNative.setCurrentActivity(reactContext.getCurrentActivity());
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
reactContext.addActivityEventListener(BabylonNativeInterop.activityEventListener);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
public static void updateView(Surface surface) {
|
|
85
|
-
BabylonNative.updateView(surface);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
public static void renderView() {
|
|
89
|
-
BabylonNative.renderView();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
public static void resetView() {
|
|
93
|
-
BabylonNative.resetView();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
public static void updateXRView(Surface surface) {
|
|
97
|
-
BabylonNative.updateXRView(surface);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
public static boolean isXRActive() {
|
|
101
|
-
return BabylonNative.isXRActive();
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
public static void reportMotionEvent(MotionEvent motionEvent) {
|
|
105
|
-
int maskedAction = motionEvent.getActionMasked();
|
|
106
|
-
boolean isPointerDown = maskedAction == MotionEvent.ACTION_DOWN || maskedAction == MotionEvent.ACTION_POINTER_DOWN;
|
|
107
|
-
boolean isPointerUp = maskedAction == MotionEvent.ACTION_UP || maskedAction == MotionEvent.ACTION_POINTER_UP;
|
|
108
|
-
boolean isPointerMove = maskedAction == MotionEvent.ACTION_MOVE;
|
|
109
|
-
|
|
110
|
-
if (isPointerDown || isPointerUp) {
|
|
111
|
-
int pointerIndex = motionEvent.getActionIndex();
|
|
112
|
-
int pointerId = motionEvent.getPointerId(pointerIndex);
|
|
113
|
-
int x = (int)motionEvent.getX(pointerIndex);
|
|
114
|
-
int y = (int)motionEvent.getY(pointerIndex);
|
|
115
|
-
BabylonNative.setTouchButtonState(pointerId, isPointerDown, x, y);
|
|
116
|
-
} else if (isPointerMove) {
|
|
117
|
-
for (int pointerIndex = 0; pointerIndex < motionEvent.getPointerCount(); pointerIndex++) {
|
|
118
|
-
int pointerId = motionEvent.getPointerId(pointerIndex);
|
|
119
|
-
int x = (int)motionEvent.getX(pointerIndex);
|
|
120
|
-
int y = (int)motionEvent.getY(pointerIndex);
|
|
121
|
-
BabylonNative.setTouchPosition(pointerId, x, y);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
package com.babylonreactnative;
|
|
2
|
-
|
|
3
|
-
import java.util.Arrays;
|
|
4
|
-
import java.util.List;
|
|
5
|
-
|
|
6
|
-
import com.facebook.react.ReactPackage;
|
|
7
|
-
import com.facebook.react.bridge.NativeModule;
|
|
8
|
-
import com.facebook.react.bridge.ReactApplicationContext;
|
|
9
|
-
import com.facebook.react.uimanager.ViewManager;
|
|
10
|
-
|
|
11
|
-
public class BabylonPackage implements ReactPackage {
|
|
12
|
-
@Override
|
|
13
|
-
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
14
|
-
return Arrays.<NativeModule>asList(new BabylonModule(reactContext));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@Override
|
|
18
|
-
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
|
19
|
-
return Arrays.<ViewManager>asList(new EngineViewManager());
|
|
20
|
-
}
|
|
21
|
-
}
|