From a3499d9135e835fe3b07525ae25624a647f5259a Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Wed, 25 Oct 2023 07:21:52 -0700 Subject: [PATCH] Rename the Godot OpenXR Loaders plugin to Godot OpenXR Vendors plugin (#55) This reflects the expansion in roles and capabilities of the plugin. --- .github/workflows/build-addon-on-push.yml | 20 +++++----- CHANGES.md | 1 + README.md | 15 +++++--- build.gradle | 1 + config.gradle | 4 +- demo/.gitignore | 2 +- .../export => godotopenxrvendors}/globals.gd | 2 +- .../godot_openxr_export_plugin.gd | 16 ++++---- ...ot_openxr_khronos_editor_export_plugin.gd} | 0 .../godot_openxr_lynx_editor_export_plugin.gd | 0 .../godot_openxr_meta_editor_export_plugin.gd | 0 .../godot_openxr_pico_editor_export_plugin.gd | 0 .../plugin.cfg | 6 +-- demo/export_presets.cfg | 8 ++-- demo/project.godot | 2 +- godotopenxrkhr/proguard-rules.pro | 21 ----------- .../openxrloaders/khr/GodotOpenXRKHR.java | 32 ---------------- .../.gitignore | 0 .../LICENSE | 0 .../README.md | 2 +- .../build.gradle | 25 ++++++------- .../src/main/AndroidManifest.xml | 7 ++-- .../vendors/khronos/GodotOpenXRKhronos.kt | 26 +++++++++++++ .../src/main/jniLibs/arm64-v8a/abi.json | 0 .../jniLibs/arm64-v8a/libopenxr_loader.so | Bin .../src/main/jniLibs/armeabi-v7a/abi.json | 0 .../jniLibs/armeabi-v7a/libopenxr_loader.so | Bin .../src/main/jniLibs/x86/abi.json | 0 .../src/main/jniLibs/x86/libopenxr_loader.so | Bin .../src/main/jniLibs/x86_64/abi.json | 0 .../main/jniLibs/x86_64/libopenxr_loader.so | Bin godotopenxrlynx/README.md | 4 +- godotopenxrlynx/build.gradle | 21 +++++------ godotopenxrlynx/proguard-rules.pro | 21 ----------- godotopenxrlynx/src/main/AndroidManifest.xml | 5 +-- .../openxr/vendors/lynx/GodotOpenXRLynx.kt | 13 +++++++ .../openxrloaders/lynx/GodotOpenXRLynx.java | 19 ---------- godotopenxrmeta/README.md | 2 +- godotopenxrmeta/build.gradle | 21 +++++------ godotopenxrmeta/proguard-rules.pro | 21 ----------- godotopenxrmeta/src/main/AndroidManifest.xml | 5 +-- .../openxr/vendors/meta/GodotOpenXRMeta.kt | 27 ++++++++++++++ .../openxrloaders/meta/GodotOpenXRMeta.java | 35 ------------------ godotopenxrpico/build.gradle | 14 +++++-- godotopenxrpico/src/main/AndroidManifest.xml | 5 +-- .../openxr/vendors/pico/GodotOpenXRPico.kt | 13 +++++++ .../openxrloaders/pico/GodotOpenXRPico.java | 19 ---------- scripts/publish-module.gradle | 2 +- settings.gradle | 6 ++- 49 files changed, 181 insertions(+), 262 deletions(-) rename demo/addons/{godotopenxr/export => godotopenxrvendors}/globals.gd (91%) rename demo/addons/{godotopenxr/export => godotopenxrvendors}/godot_openxr_export_plugin.gd (90%) rename demo/addons/{godotopenxr/export/khr/godot_openxr_khr_editor_export_plugin.gd => godotopenxrvendors/khronos/godot_openxr_khronos_editor_export_plugin.gd} (100%) rename demo/addons/{godotopenxr/export => godotopenxrvendors}/lynx/godot_openxr_lynx_editor_export_plugin.gd (100%) rename demo/addons/{godotopenxr/export => godotopenxrvendors}/meta/godot_openxr_meta_editor_export_plugin.gd (100%) rename demo/addons/{godotopenxr/export => godotopenxrvendors}/pico/godot_openxr_pico_editor_export_plugin.gd (100%) rename demo/addons/{godotopenxr => godotopenxrvendors}/plugin.cfg (53%) delete mode 100644 godotopenxrkhr/proguard-rules.pro delete mode 100644 godotopenxrkhr/src/main/java/org/godotengine/openxrloaders/khr/GodotOpenXRKHR.java rename {godotopenxrkhr => godotopenxrkhronos}/.gitignore (100%) rename {godotopenxrkhr => godotopenxrkhronos}/LICENSE (100%) rename {godotopenxrkhr => godotopenxrkhronos}/README.md (95%) rename {godotopenxrkhr => godotopenxrkhronos}/build.gradle (66%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/AndroidManifest.xml (86%) create mode 100644 godotopenxrkhronos/src/main/java/org/godotengine/openxr/vendors/khronos/GodotOpenXRKhronos.kt rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/arm64-v8a/abi.json (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/arm64-v8a/libopenxr_loader.so (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/armeabi-v7a/abi.json (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/armeabi-v7a/libopenxr_loader.so (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/x86/abi.json (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/x86/libopenxr_loader.so (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/x86_64/abi.json (100%) rename {godotopenxrkhr => godotopenxrkhronos}/src/main/jniLibs/x86_64/libopenxr_loader.so (100%) delete mode 100644 godotopenxrlynx/proguard-rules.pro create mode 100644 godotopenxrlynx/src/main/java/org/godotengine/openxr/vendors/lynx/GodotOpenXRLynx.kt delete mode 100644 godotopenxrlynx/src/main/java/org/godotengine/openxrloaders/lynx/GodotOpenXRLynx.java delete mode 100644 godotopenxrmeta/proguard-rules.pro create mode 100644 godotopenxrmeta/src/main/java/org/godotengine/openxr/vendors/meta/GodotOpenXRMeta.kt delete mode 100644 godotopenxrmeta/src/main/java/org/godotengine/openxrloaders/meta/GodotOpenXRMeta.java create mode 100644 godotopenxrpico/src/main/java/org/godotengine/openxr/vendors/pico/GodotOpenXRPico.kt delete mode 100644 godotopenxrpico/src/main/java/org/godotengine/openxrloaders/pico/GodotOpenXRPico.java diff --git a/.github/workflows/build-addon-on-push.yml b/.github/workflows/build-addon-on-push.yml index bcb47904..56b9062b 100644 --- a/.github/workflows/build-addon-on-push.yml +++ b/.github/workflows/build-addon-on-push.yml @@ -23,37 +23,37 @@ jobs: distribution: 'adopt' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v1 - - name: Create Godot OpenXR loader AARs + - name: Create Godot OpenXR Vendors AARs run: | cd aar ./gradlew build cd .. # GODOT 4.2 ADDON GENERATION SECTION - - name: Create Godot OpenXR loader Addon + - name: Create Godot OpenXR Vendors Addon run: | mkdir asset cp -r aar/demo/addons asset - cp aar/CHANGES.md asset/addons/godotopenxr/GodotOpenXRLoaders_CHANGES.md + cp aar/CHANGES.md asset/addons/godotopenxrvendors/GodotOpenXRVendors_CHANGES.md - name: Adding vendor licences run: | - cp aar/godotopenxrmeta/LICENSE.txt asset/addons/godotopenxr/export/meta/ - cp aar/godotopenxrpico/src/main/jniLibs/arm64-v8a/README.md asset/addons/godotopenxr/export/pico/LICENSE.md - cp aar/godotopenxrkhr/LICENSE asset/addons/godotopenxr/export/khr/LICENSE - - name: Create Godot OpenXR loader addon artifact + cp aar/godotopenxrmeta/LICENSE.txt asset/addons/godotopenxrvendors/meta/ + cp aar/godotopenxrpico/src/main/jniLibs/arm64-v8a/README.md asset/addons/godotopenxrvendors/pico/LICENSE.md + cp aar/godotopenxrkhronos/LICENSE asset/addons/godotopenxrvendors/khronos/LICENSE + - name: Create Godot OpenXR Vendor addon artifact uses: actions/upload-artifact@v3 with: - name: GodotOpenXRLoadersAddon + name: GodotOpenXRVendorsAddon path: | asset - name: Zip addon run: | - zip -qq -r godotopenxrloadersaddon.zip asset + zip -qq -r godotopenxrvendorsaddon.zip asset if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - name: Create and upload asset uses: ncipollo/release-action@v1 with: allowUpdates: true - artifacts: "godotopenxrloadersaddon.zip" + artifacts: "godotopenxrvendorsaddon.zip" omitNameDuringUpdate: true omitBodyDuringUpdate: true omitDraftDuringUpdate: true diff --git a/CHANGES.md b/CHANGES.md index 3ebf8fb7..6391c2a8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ - Update the directory structure for the v2 plugin - Update Meta OpenXR mobile SDK to version 57 - Update the java version to 17 +- Rename the plugin to 'Godot OpenXR Vendors' ## 1.1.0 - Update Meta OpenXR loader to version 54 diff --git a/README.md b/README.md index 05c7795a..b691ecdd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# Godot OpenXR Loaders +# Godot OpenXR Vendors plugin -This repository builds the Android plugin addon required for Godot 4.2 (and higher) to export XR -applications to the Android devices. +This plugin provides the functionality to support vendor-specific XR +devices (e.g: Meta, Pico devices) and access vendor-specific OpenXR extensions **Note:** @@ -50,6 +50,9 @@ If you have build the asset from source, you need to create the `addons` folder if it doesn't exist already, and then copy the content of the `demo/addons` folder to `addons` in your project. +Once the asset is added to your project, navigate to `Project` -> `Project Settings...` -> `Plugins` +and enable the plugin. + ### Configuring your export Back in Godot open the `Project` menu and select `Export...`: @@ -57,12 +60,12 @@ Back in Godot open the `Project` menu and select `Export...`: selecting `Android` - Tick the `Use Gradle Build` tickbox - Select `OpenXR` as the **XR Mode** under the **XR Features** section -- Enable the loader you need to use +- Enable the XR vendor you need to use - Scroll down to the bottom to see additional features for specific platforms. **Note:** -**Do not** select multiple loaders in the same export template! -You can instead create multiple export templates, one for each loader. +**Do not** select multiple vendors in the same export template! +You can instead create multiple export templates, one for each vendor. ## License diff --git a/build.gradle b/build.gradle index 816c0467..510c2d8e 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,7 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:$versions.gradlePluginVersion" classpath "io.github.gradle-nexus:publish-plugin:$versions.nexusPublishVersion" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlinVersion" } } diff --git a/config.gradle b/config.gradle index 4ed64a2b..1347a7c6 100644 --- a/config.gradle +++ b/config.gradle @@ -8,7 +8,9 @@ ext { minSdk : 21, targetSdk : 33, javaVersion : JavaVersion.VERSION_17, - nexusPublishVersion : '1.3.0' + nexusPublishVersion : '1.3.0', + kotlinVersion : '1.7.22', + coreKtxVersion : '1.12.0', ] libraries = [ diff --git a/demo/.gitignore b/demo/.gitignore index 5d90f318..443378c0 100644 --- a/demo/.gitignore +++ b/demo/.gitignore @@ -1,4 +1,4 @@ # Godot 4+ specific ignores .godot/ -/addons/godotopenxr/.bin/**/*.aar +/addons/godotopenxrvendors/*/.bin /android/ diff --git a/demo/addons/godotopenxr/export/globals.gd b/demo/addons/godotopenxrvendors/globals.gd similarity index 91% rename from demo/addons/godotopenxr/export/globals.gd rename to demo/addons/godotopenxrvendors/globals.gd index 241219e8..4964c2f0 100644 --- a/demo/addons/godotopenxr/export/globals.gd +++ b/demo/addons/godotopenxrvendors/globals.gd @@ -4,7 +4,7 @@ const META_VENDOR_NAME = "meta" const PICO_VENDOR_NAME = "pico" const LYNX_VENDOR_NAME = "lynx" -const KHRONOS_VENDOR_NAME = "khr" +const KHRONOS_VENDOR_NAME = "khronos" const VENDORS_LIST = [ META_VENDOR_NAME, diff --git a/demo/addons/godotopenxr/export/godot_openxr_export_plugin.gd b/demo/addons/godotopenxrvendors/godot_openxr_export_plugin.gd similarity index 90% rename from demo/addons/godotopenxr/export/godot_openxr_export_plugin.gd rename to demo/addons/godotopenxrvendors/godot_openxr_export_plugin.gd index c6367ff2..ab35812e 100644 --- a/demo/addons/godotopenxr/export/godot_openxr_export_plugin.gd +++ b/demo/addons/godotopenxrvendors/godot_openxr_export_plugin.gd @@ -7,7 +7,7 @@ var globals = preload("globals.gd") var meta_export_plugin : GodotOpenXREditorExportPlugin var pico_export_plugin : GodotOpenXREditorExportPlugin var lynx_export_plugin : GodotOpenXREditorExportPlugin -var khr_export_plugin : GodotOpenXREditorExportPlugin +var khronos_export_plugin : GodotOpenXREditorExportPlugin func _enter_tree(): @@ -23,13 +23,13 @@ func _enter_tree(): lynx_export_plugin = preload("lynx/godot_openxr_lynx_editor_export_plugin.gd").new() lynx_export_plugin._setup(globals.LYNX_VENDOR_NAME, plugin_version) - khr_export_plugin = preload("khr/godot_openxr_khr_editor_export_plugin.gd").new() - khr_export_plugin._setup(globals.KHRONOS_VENDOR_NAME, plugin_version) + khronos_export_plugin = preload("khronos/godot_openxr_khronos_editor_export_plugin.gd").new() + khronos_export_plugin._setup(globals.KHRONOS_VENDOR_NAME, plugin_version) add_export_plugin(meta_export_plugin) add_export_plugin(pico_export_plugin) add_export_plugin(lynx_export_plugin) - add_export_plugin(khr_export_plugin) + add_export_plugin(khronos_export_plugin) func _exit_tree(): @@ -37,12 +37,12 @@ func _exit_tree(): remove_export_plugin(meta_export_plugin) remove_export_plugin(pico_export_plugin) remove_export_plugin(lynx_export_plugin) - remove_export_plugin(khr_export_plugin) + remove_export_plugin(khronos_export_plugin) meta_export_plugin = null pico_export_plugin = null lynx_export_plugin = null - khr_export_plugin = null + khronos_export_plugin = null class GodotOpenXREditorExportPlugin extends EditorExportPlugin: @@ -67,12 +67,12 @@ class GodotOpenXREditorExportPlugin extends EditorExportPlugin: # If this is not available, we fall back to the maven central dependency func _get_android_aar_file_path(debug: bool) -> String: var debug_label = "debug" if debug else "release" - return "res://addons/godotopenxr/.bin/" + _vendor + "/" + debug_label + "/godotopenxr" + _vendor + "-" + debug_label + ".aar" + return "res://addons/godotopenxrvendors/" + _vendor + "/.bin/" + debug_label + "/godotopenxr" + _vendor + "-" + debug_label + ".aar" # Maven central dependency used as fall back when the Android library aar file is not available func _get_android_maven_central_dependency() -> String: - return "org.godotengine:godot-openxr-loaders-" + _vendor + ":" + _plugin_version + return "org.godotengine:godot-openxr-vendors-" + _vendor + ":" + _plugin_version func _get_vendor_toggle_option_name(vendor_name: String = _vendor) -> String: diff --git a/demo/addons/godotopenxr/export/khr/godot_openxr_khr_editor_export_plugin.gd b/demo/addons/godotopenxrvendors/khronos/godot_openxr_khronos_editor_export_plugin.gd similarity index 100% rename from demo/addons/godotopenxr/export/khr/godot_openxr_khr_editor_export_plugin.gd rename to demo/addons/godotopenxrvendors/khronos/godot_openxr_khronos_editor_export_plugin.gd diff --git a/demo/addons/godotopenxr/export/lynx/godot_openxr_lynx_editor_export_plugin.gd b/demo/addons/godotopenxrvendors/lynx/godot_openxr_lynx_editor_export_plugin.gd similarity index 100% rename from demo/addons/godotopenxr/export/lynx/godot_openxr_lynx_editor_export_plugin.gd rename to demo/addons/godotopenxrvendors/lynx/godot_openxr_lynx_editor_export_plugin.gd diff --git a/demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd b/demo/addons/godotopenxrvendors/meta/godot_openxr_meta_editor_export_plugin.gd similarity index 100% rename from demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd rename to demo/addons/godotopenxrvendors/meta/godot_openxr_meta_editor_export_plugin.gd diff --git a/demo/addons/godotopenxr/export/pico/godot_openxr_pico_editor_export_plugin.gd b/demo/addons/godotopenxrvendors/pico/godot_openxr_pico_editor_export_plugin.gd similarity index 100% rename from demo/addons/godotopenxr/export/pico/godot_openxr_pico_editor_export_plugin.gd rename to demo/addons/godotopenxrvendors/pico/godot_openxr_pico_editor_export_plugin.gd diff --git a/demo/addons/godotopenxr/plugin.cfg b/demo/addons/godotopenxrvendors/plugin.cfg similarity index 53% rename from demo/addons/godotopenxr/plugin.cfg rename to demo/addons/godotopenxrvendors/plugin.cfg index f2da796d..a9bfa7b5 100644 --- a/demo/addons/godotopenxr/plugin.cfg +++ b/demo/addons/godotopenxrvendors/plugin.cfg @@ -1,7 +1,7 @@ [plugin] -name="GodotOpenXR" -description="Godot OpenXR loader plugin" +name="GodotOpenXRVendors" +description="Godot OpenXR Vendors plugin" author="https://github.com/GodotVR/godot_openxr_loaders/blob/master/CONTRIBUTORS.md" version="2.0.0-dev-SNAPSHOT" -script="export/godot_openxr_export_plugin.gd" +script="godot_openxr_export_plugin.gd" diff --git a/demo/export_presets.cfg b/demo/export_presets.cfg index f64039b0..bb1e9003 100644 --- a/demo/export_presets.cfg +++ b/demo/export_presets.cfg @@ -28,7 +28,7 @@ architectures/x86=false architectures/x86_64=false version/code=1 version/name="1.0" -package/unique_name="org.godotengine.openxr.demo" +package/unique_name="org.godotengine.openxr.vendors.demo" package/name="" package/signed=true package/app_category=2 @@ -201,11 +201,11 @@ permissions/write_sync_settings=false permissions/write_user_dictionary=false xr_features/enable_meta_plugin=true meta_xr_features/hand_tracking=1 -meta_xr_features/hand_tracking_frequency=0 -meta_xr_features/passthrough=1 +meta_xr_features/hand_tracking_frequency=1 +meta_xr_features/passthrough=0 xr_features/enable_pico_plugin=false xr_features/enable_lynx_plugin=false -xr_features/enable_khr_plugin=false +xr_features/enable_khronos_plugin=false meta_xr_features/eye_tracking=1 meta_xr_features/quest_1_support=false meta_xr_features/quest_2_support=true diff --git a/demo/project.godot b/demo/project.godot index 9372835e..abb4d381 100644 --- a/demo/project.godot +++ b/demo/project.godot @@ -21,7 +21,7 @@ settings/stdout/verbose_stdout=true [editor_plugins] -enabled=PackedStringArray("res://addons/godotopenxr/plugin.cfg") +enabled=PackedStringArray("res://addons/godotopenxrvendors/plugin.cfg") [rendering] diff --git a/godotopenxrkhr/proguard-rules.pro b/godotopenxrkhr/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/godotopenxrkhr/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/godotopenxrkhr/src/main/java/org/godotengine/openxrloaders/khr/GodotOpenXRKHR.java b/godotopenxrkhr/src/main/java/org/godotengine/openxrloaders/khr/GodotOpenXRKHR.java deleted file mode 100644 index 2c49bc4b..00000000 --- a/godotopenxrkhr/src/main/java/org/godotengine/openxrloaders/khr/GodotOpenXRKHR.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.godotengine.openxrloaders.khr; - -import org.godotengine.godot.Godot; -import org.godotengine.godot.plugin.GodotPlugin; - -/** - * \brief GodotOpenXRKHR is the OpenXR KHR loader plugin for Godot. - * - * When using OpenXR for your application on Android make sure that - * the IMMERSIVE_HMD category is added to your activities intent-filter. - * - * - * - * - * - * - * - * more details can be found here: - * https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#android-runtime-category - * - */ -public class GodotOpenXRKHR extends GodotPlugin { - - public GodotOpenXRKHR(Godot godot) { - super(godot); - } - - @Override - public String getPluginName() { - return "GodotOpenXRKHR"; - } -} diff --git a/godotopenxrkhr/.gitignore b/godotopenxrkhronos/.gitignore similarity index 100% rename from godotopenxrkhr/.gitignore rename to godotopenxrkhronos/.gitignore diff --git a/godotopenxrkhr/LICENSE b/godotopenxrkhronos/LICENSE similarity index 100% rename from godotopenxrkhr/LICENSE rename to godotopenxrkhronos/LICENSE diff --git a/godotopenxrkhr/README.md b/godotopenxrkhronos/README.md similarity index 95% rename from godotopenxrkhr/README.md rename to godotopenxrkhronos/README.md index 9052b232..2678dfd5 100644 --- a/godotopenxrkhr/README.md +++ b/godotopenxrkhronos/README.md @@ -1,4 +1,4 @@ -# Godot OpenXR KHR Android loader +# Godot OpenXR Khronos Android plugin Binaries taken from the Official OpenXR working group repo at: https://github.com/KhronosGroup/OpenXR-SDK-Source/releases/download/release-1.0.26/openxr_loader_for_android-1.0.26.aar diff --git a/godotopenxrkhr/build.gradle b/godotopenxrkhronos/build.gradle similarity index 66% rename from godotopenxrkhr/build.gradle rename to godotopenxrkhronos/build.gradle index 79490af7..bf340285 100644 --- a/godotopenxrkhr/build.gradle +++ b/godotopenxrkhronos/build.gradle @@ -1,10 +1,11 @@ plugins { id 'com.android.library' + id 'org.jetbrains.kotlin.android' } ext { - PUBLISH_ARTIFACT_ID = 'godot-openxr-loaders-khr' + PUBLISH_ARTIFACT_ID = 'godot-openxr-vendors-khronos' } apply from: "../scripts/publish-module.gradle" @@ -22,14 +23,7 @@ android { } } - namespace = "org.godotengine.openxrloaders.khr" - - buildTypes { - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } + namespace = "org.godotengine.openxr.vendors.khronos" packagingOptions { doNotStrip '**/*.so' @@ -40,6 +34,10 @@ android { targetCompatibility versions.javaVersion } + kotlinOptions { + jvmTarget = versions.javaVersion + } + publishing { singleVariant("release") { withSourcesJar() @@ -49,19 +47,20 @@ android { } dependencies { + implementation "androidx.core:core-ktx:$versions.coreKtxVersion" compileOnly libraries.godotAndroidLib } task copyDebugAARToAddons(type: Copy) { from 'build/outputs/aar' - include 'godotopenxrkhr-debug.aar' - into '../demo/addons/godotopenxr/.bin/khr/debug' + include 'godotopenxrkhronos-debug.aar' + into '../demo/addons/godotopenxrvendors/khronos/.bin/debug' } task copyReleaseAARToAddons(type: Copy) { from 'build/outputs/aar' - include 'godotopenxrkhr-release.aar' - into '../demo/addons/godotopenxr/.bin/khr/release' + include 'godotopenxrkhronos-release.aar' + into '../demo/addons/godotopenxrvendors/khronos/.bin/release' } assemble.finalizedBy(copyDebugAARToAddons) diff --git a/godotopenxrkhr/src/main/AndroidManifest.xml b/godotopenxrkhronos/src/main/AndroidManifest.xml similarity index 86% rename from godotopenxrkhr/src/main/AndroidManifest.xml rename to godotopenxrkhronos/src/main/AndroidManifest.xml index d9c7423e..ddce2f56 100644 --- a/godotopenxrkhr/src/main/AndroidManifest.xml +++ b/godotopenxrkhronos/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + + android:name="org.godotengine.plugin.v2.GodotOpenXRKhronos" + android:value="org.godotengine.openxr.vendors.khronos.GodotOpenXRKhronos" /> diff --git a/godotopenxrkhronos/src/main/java/org/godotengine/openxr/vendors/khronos/GodotOpenXRKhronos.kt b/godotopenxrkhronos/src/main/java/org/godotengine/openxr/vendors/khronos/GodotOpenXRKhronos.kt new file mode 100644 index 00000000..0e220cca --- /dev/null +++ b/godotopenxrkhronos/src/main/java/org/godotengine/openxr/vendors/khronos/GodotOpenXRKhronos.kt @@ -0,0 +1,26 @@ +package org.godotengine.openxr.vendors.khronos + +import org.godotengine.godot.Godot +import org.godotengine.godot.plugin.GodotPlugin + +/** + * \brief GodotOpenXRKhronos is the OpenXR Khronos plugin for Godot. + * + * When using OpenXR for your application on Android make sure that + * the IMMERSIVE_HMD category is added to your activities intent-filter. + * + * + * + * + * + * + * + * more details can be found here: + * https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#android-runtime-category + * + */ +class GodotOpenXRKhronos(godot: Godot?) : GodotPlugin(godot) { + override fun getPluginName(): String { + return "GodotOpenXRKhronos" + } +} diff --git a/godotopenxrkhr/src/main/jniLibs/arm64-v8a/abi.json b/godotopenxrkhronos/src/main/jniLibs/arm64-v8a/abi.json similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/arm64-v8a/abi.json rename to godotopenxrkhronos/src/main/jniLibs/arm64-v8a/abi.json diff --git a/godotopenxrkhr/src/main/jniLibs/arm64-v8a/libopenxr_loader.so b/godotopenxrkhronos/src/main/jniLibs/arm64-v8a/libopenxr_loader.so similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/arm64-v8a/libopenxr_loader.so rename to godotopenxrkhronos/src/main/jniLibs/arm64-v8a/libopenxr_loader.so diff --git a/godotopenxrkhr/src/main/jniLibs/armeabi-v7a/abi.json b/godotopenxrkhronos/src/main/jniLibs/armeabi-v7a/abi.json similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/armeabi-v7a/abi.json rename to godotopenxrkhronos/src/main/jniLibs/armeabi-v7a/abi.json diff --git a/godotopenxrkhr/src/main/jniLibs/armeabi-v7a/libopenxr_loader.so b/godotopenxrkhronos/src/main/jniLibs/armeabi-v7a/libopenxr_loader.so similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/armeabi-v7a/libopenxr_loader.so rename to godotopenxrkhronos/src/main/jniLibs/armeabi-v7a/libopenxr_loader.so diff --git a/godotopenxrkhr/src/main/jniLibs/x86/abi.json b/godotopenxrkhronos/src/main/jniLibs/x86/abi.json similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/x86/abi.json rename to godotopenxrkhronos/src/main/jniLibs/x86/abi.json diff --git a/godotopenxrkhr/src/main/jniLibs/x86/libopenxr_loader.so b/godotopenxrkhronos/src/main/jniLibs/x86/libopenxr_loader.so similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/x86/libopenxr_loader.so rename to godotopenxrkhronos/src/main/jniLibs/x86/libopenxr_loader.so diff --git a/godotopenxrkhr/src/main/jniLibs/x86_64/abi.json b/godotopenxrkhronos/src/main/jniLibs/x86_64/abi.json similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/x86_64/abi.json rename to godotopenxrkhronos/src/main/jniLibs/x86_64/abi.json diff --git a/godotopenxrkhr/src/main/jniLibs/x86_64/libopenxr_loader.so b/godotopenxrkhronos/src/main/jniLibs/x86_64/libopenxr_loader.so similarity index 100% rename from godotopenxrkhr/src/main/jniLibs/x86_64/libopenxr_loader.so rename to godotopenxrkhronos/src/main/jniLibs/x86_64/libopenxr_loader.so diff --git a/godotopenxrlynx/README.md b/godotopenxrlynx/README.md index 31d5b4bd..99600489 100644 --- a/godotopenxrlynx/README.md +++ b/godotopenxrlynx/README.md @@ -1,4 +1,4 @@ -# Godot OpenXR Lynx Android loader +# Godot OpenXR Lynx Android plugin Binaries taken from Lynx at: -https://portal.lynx-r.com/downloads/item/1/download/latest \ No newline at end of file +https://portal.lynx-r.com/downloads/item/1/download/latest diff --git a/godotopenxrlynx/build.gradle b/godotopenxrlynx/build.gradle index d517c80d..14cbf8d4 100644 --- a/godotopenxrlynx/build.gradle +++ b/godotopenxrlynx/build.gradle @@ -1,9 +1,10 @@ plugins { id 'com.android.library' + id 'org.jetbrains.kotlin.android' } ext { - PUBLISH_ARTIFACT_ID = 'godot-openxr-loaders-lynx' + PUBLISH_ARTIFACT_ID = 'godot-openxr-vendors-lynx' } apply from: "../scripts/publish-module.gradle" @@ -22,14 +23,7 @@ android { } } - namespace = "org.godotengine.openxrloaders.lynx" - - buildTypes { - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } + namespace = "org.godotengine.openxr.vendors.lynx" packagingOptions { doNotStrip '**/*.so' @@ -40,6 +34,10 @@ android { targetCompatibility versions.javaVersion } + kotlinOptions { + jvmTarget = versions.javaVersion + } + publishing { singleVariant("release") { withSourcesJar() @@ -49,19 +47,20 @@ android { } dependencies { + implementation "androidx.core:core-ktx:$versions.coreKtxVersion" compileOnly libraries.godotAndroidLib } task copyDebugAARToAddons(type: Copy) { from 'build/outputs/aar' include 'godotopenxrlynx-debug.aar' - into '../demo/addons/godotopenxr/.bin/lynx/debug' + into '../demo/addons/godotopenxrvendors/lynx/.bin/debug' } task copyReleaseAARToAddons(type: Copy) { from 'build/outputs/aar' include 'godotopenxrlynx-release.aar' - into '../demo/addons/godotopenxr/.bin/lynx/release' + into '../demo/addons/godotopenxrvendors/lynx/.bin/release' } assemble.finalizedBy(copyDebugAARToAddons) diff --git a/godotopenxrlynx/proguard-rules.pro b/godotopenxrlynx/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/godotopenxrlynx/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/godotopenxrlynx/src/main/AndroidManifest.xml b/godotopenxrlynx/src/main/AndroidManifest.xml index 81a3fc6e..83ade431 100644 --- a/godotopenxrlynx/src/main/AndroidManifest.xml +++ b/godotopenxrlynx/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + @@ -19,7 +18,7 @@ + android:value="org.godotengine.openxr.vendors.lynx.GodotOpenXRLynx" /> diff --git a/godotopenxrlynx/src/main/java/org/godotengine/openxr/vendors/lynx/GodotOpenXRLynx.kt b/godotopenxrlynx/src/main/java/org/godotengine/openxr/vendors/lynx/GodotOpenXRLynx.kt new file mode 100644 index 00000000..87e74c31 --- /dev/null +++ b/godotopenxrlynx/src/main/java/org/godotengine/openxr/vendors/lynx/GodotOpenXRLynx.kt @@ -0,0 +1,13 @@ +package org.godotengine.openxr.vendors.lynx + +import org.godotengine.godot.Godot +import org.godotengine.godot.plugin.GodotPlugin + +/** + * \brief GodotOpenXRLynx is the OpenXR Lynx plugin for Godot. + */ +class GodotOpenXRLynx(godot: Godot?) : GodotPlugin(godot) { + override fun getPluginName(): String { + return "GodotOpenXRLynx" + } +} diff --git a/godotopenxrlynx/src/main/java/org/godotengine/openxrloaders/lynx/GodotOpenXRLynx.java b/godotopenxrlynx/src/main/java/org/godotengine/openxrloaders/lynx/GodotOpenXRLynx.java deleted file mode 100644 index 9e62f558..00000000 --- a/godotopenxrlynx/src/main/java/org/godotengine/openxrloaders/lynx/GodotOpenXRLynx.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.godotengine.openxrloaders.lynx; - -import org.godotengine.godot.Godot; -import org.godotengine.godot.plugin.GodotPlugin; - -/** - * \brief GodotOpenXRLynx is the OpenXR Lynx loader plugin for Godot. - */ -public class GodotOpenXRLynx extends GodotPlugin { - - public GodotOpenXRLynx(Godot godot) { - super(godot); - } - - @Override - public String getPluginName() { - return "GodotOpenXRLynx"; - } -} diff --git a/godotopenxrmeta/README.md b/godotopenxrmeta/README.md index 34a7be6b..8a65e955 100644 --- a/godotopenxrmeta/README.md +++ b/godotopenxrmeta/README.md @@ -1,3 +1,3 @@ -# Godot OpenXR Meta Android loader +# Godot OpenXR Meta plugin Based off version 57 of the Meta OpenXR Mobile SDK from https://developer.oculus.com/downloads/package/oculus-openxr-mobile-sdk/57.0 diff --git a/godotopenxrmeta/build.gradle b/godotopenxrmeta/build.gradle index 2bb15f8f..f5f94687 100644 --- a/godotopenxrmeta/build.gradle +++ b/godotopenxrmeta/build.gradle @@ -1,9 +1,10 @@ plugins { id 'com.android.library' + id 'org.jetbrains.kotlin.android' } ext { - PUBLISH_ARTIFACT_ID = 'godot-openxr-loaders-meta' + PUBLISH_ARTIFACT_ID = 'godot-openxr-vendors-meta' } apply from: "../scripts/publish-module.gradle" @@ -22,14 +23,7 @@ android { } } - namespace = "org.godotengine.openxrloaders.meta" - - buildTypes { - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } + namespace = "org.godotengine.openxr.vendors.meta" packagingOptions { doNotStrip '**/*.so' @@ -40,6 +34,10 @@ android { targetCompatibility versions.javaVersion } + kotlinOptions { + jvmTarget = versions.javaVersion + } + publishing { singleVariant("release") { withSourcesJar() @@ -49,19 +47,20 @@ android { } dependencies { + implementation "androidx.core:core-ktx:$versions.coreKtxVersion" compileOnly libraries.godotAndroidLib } task copyDebugAARToAddons(type: Copy) { from 'build/outputs/aar' include 'godotopenxrmeta-debug.aar' - into '../demo/addons/godotopenxr/.bin/meta/debug' + into '../demo/addons/godotopenxrvendors/meta/.bin/debug' } task copyReleaseAARToAddons(type: Copy) { from 'build/outputs/aar' include 'godotopenxrmeta-release.aar' - into '../demo/addons/godotopenxr/.bin/meta/release' + into '../demo/addons/godotopenxrvendors/meta/.bin/release' } assemble.finalizedBy(copyDebugAARToAddons) diff --git a/godotopenxrmeta/proguard-rules.pro b/godotopenxrmeta/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/godotopenxrmeta/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/godotopenxrmeta/src/main/AndroidManifest.xml b/godotopenxrmeta/src/main/AndroidManifest.xml index 00d3ee9b..a3dc5ac6 100644 --- a/godotopenxrmeta/src/main/AndroidManifest.xml +++ b/godotopenxrmeta/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + + android:value="org.godotengine.openxr.vendors.meta.GodotOpenXRMeta" /> - + + android:value="org.godotengine.openxr.vendors.pico.GodotOpenXRPico" /> diff --git a/godotopenxrpico/src/main/java/org/godotengine/openxr/vendors/pico/GodotOpenXRPico.kt b/godotopenxrpico/src/main/java/org/godotengine/openxr/vendors/pico/GodotOpenXRPico.kt new file mode 100644 index 00000000..144bb45f --- /dev/null +++ b/godotopenxrpico/src/main/java/org/godotengine/openxr/vendors/pico/GodotOpenXRPico.kt @@ -0,0 +1,13 @@ +package org.godotengine.openxr.vendors.pico + +import org.godotengine.godot.Godot +import org.godotengine.godot.plugin.GodotPlugin + +/** + * Godot plugin for the Pico OpenXR loader. + */ +class GodotOpenXRPico(godot: Godot?) : GodotPlugin(godot) { + override fun getPluginName(): String { + return "GodotOpenXRPico" + } +} diff --git a/godotopenxrpico/src/main/java/org/godotengine/openxrloaders/pico/GodotOpenXRPico.java b/godotopenxrpico/src/main/java/org/godotengine/openxrloaders/pico/GodotOpenXRPico.java deleted file mode 100644 index 6a85d757..00000000 --- a/godotopenxrpico/src/main/java/org/godotengine/openxrloaders/pico/GodotOpenXRPico.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.godotengine.openxrloaders.pico; - -import org.godotengine.godot.Godot; -import org.godotengine.godot.plugin.GodotPlugin; - -/** - * Godot plugin for the Pico OpenXR loader. - */ -public class GodotOpenXRPico extends GodotPlugin { - - public GodotOpenXRPico(Godot godot) { - super(godot); - } - - @Override - public String getPluginName() { - return "GodotOpenXRPico"; - } -} diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle index 9f1ecd62..9b910156 100644 --- a/scripts/publish-module.gradle +++ b/scripts/publish-module.gradle @@ -18,7 +18,7 @@ afterEvaluate { // Mostly self-explanatory metadata pom { name = PUBLISH_ARTIFACT_ID - description = 'Godot OpenXR Loaders' + description = 'Godot OpenXR Vendors' url = 'https://github.com/GodotVR/godot_openxr_loaders#readme' licenses { license { diff --git a/settings.gradle b/settings.gradle index af4a2f0e..14dd0197 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,6 +3,8 @@ pluginManagement { plugins { id 'io.github.gradle-nexus.publish-plugin' version versions.nexusPublishVersion + id 'com.android.library' version versions.gradlePluginVersion + id 'org.jetbrains.kotlin.android' version versions.kotlinVersion } repositories { gradlePluginPortal() @@ -19,5 +21,5 @@ dependencyResolutionManagement { maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/"} } } -rootProject.name = "GodotOpenXRLoaders" -include ':godotopenxrmeta', ':godotopenxrpico', ':godotopenxrkhr', ':godotopenxrlynx' +rootProject.name = "GodotOpenXRVendors" +include ':godotopenxrmeta', ':godotopenxrpico', ':godotopenxrkhronos', ':godotopenxrlynx'