├── .gitignore ├── J4Q_46.0 ├── 1stParty │ ├── OVR │ │ ├── Include │ │ │ ├── JniUtils.h │ │ │ ├── OVR_Asserts.h │ │ │ ├── OVR_BitFlags.h │ │ │ ├── OVR_Compiler.h │ │ │ ├── OVR_DebugMutex.h │ │ │ ├── OVR_Deque.h │ │ │ ├── OVR_JSON.h │ │ │ ├── OVR_Lockless.h │ │ │ ├── OVR_LogUtils.h │ │ │ ├── OVR_Math.h │ │ │ ├── OVR_MemBuffer.h │ │ │ ├── OVR_Pose.h │ │ │ ├── OVR_Std.h │ │ │ ├── OVR_Types.h │ │ │ ├── OVR_TypesafeNumber.h │ │ │ └── StringUtils.h │ │ └── tests │ │ │ └── OVR_LogUtilsTest.cpp │ └── utilities │ │ └── include │ │ └── GL │ │ └── gl_format.h ├── 3rdParty │ ├── khronos │ │ ├── ktx │ │ │ ├── README.meta │ │ │ ├── include │ │ │ │ └── ktx.h │ │ │ ├── ktx.gitversion │ │ │ ├── lib │ │ │ │ └── android │ │ │ │ │ └── arm64-v8a │ │ │ │ │ ├── libktx.so │ │ │ │ │ ├── libktx_read.so │ │ │ │ │ └── libobjUtil.a │ │ │ ├── licenses │ │ │ │ ├── Apache-2.0.txt │ │ │ │ ├── BSD-1-Clause.txt │ │ │ │ ├── BSD-2-Clause.txt │ │ │ │ ├── BSD-3-Clause.txt │ │ │ │ ├── BSL-1.0.txt │ │ │ │ ├── CC-BY-3.0.txt │ │ │ │ ├── CC0-1.0.txt │ │ │ │ ├── GPL-2.0-or-later.txt │ │ │ │ ├── LicenseRef-Cesium-Trademark-Terms.txt │ │ │ │ ├── LicenseRef-ETCSLA.txt │ │ │ │ ├── LicenseRef-HI-Trademark.txt │ │ │ │ ├── LicenseRef-Kodak.txt │ │ │ │ ├── LicenseRef-PNGSuite.txt │ │ │ │ ├── MIT.txt │ │ │ │ ├── Zlib.txt │ │ │ │ └── ktx_LICENSE.md │ │ │ └── makefiles │ │ │ │ ├── android │ │ │ │ └── jni │ │ │ │ │ ├── Android.mk │ │ │ │ │ └── Application.mk │ │ │ │ └── androidprebuilt │ │ │ │ └── jni │ │ │ │ └── Android.mk │ │ └── openxr │ │ │ └── OpenXR-SDK │ │ │ └── include │ │ │ ├── CMakeLists.txt │ │ │ └── openxr │ │ │ ├── CMakeLists.txt │ │ │ ├── openxr.h │ │ │ ├── openxr_platform.h │ │ │ ├── openxr_platform_defines.h │ │ │ └── openxr_reflection.h │ ├── minizip │ │ ├── Makefile │ │ ├── Makefile.am │ │ ├── MiniZip64_Changes.txt │ │ ├── MiniZip64_info.txt │ │ ├── build │ │ │ └── android │ │ │ │ └── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ ├── configure.ac │ │ ├── lib │ │ │ └── android │ │ │ │ ├── arm64-v8a │ │ │ │ └── libminizip.a │ │ │ │ └── armeabi-v7a │ │ │ │ └── libminizip.a │ │ ├── make_vms.com │ │ ├── minizip.pc.in │ │ └── src │ │ │ ├── crypt.h │ │ │ ├── ioapi.c │ │ │ ├── ioapi.h │ │ │ ├── iowin32.c │ │ │ ├── iowin32.h │ │ │ ├── miniunz.c │ │ │ ├── minizip.c │ │ │ ├── mztools.c │ │ │ ├── mztools.h │ │ │ ├── unzip.c │ │ │ ├── unzip.h │ │ │ ├── zip.c │ │ │ └── zip.h │ └── stb │ │ ├── build │ │ └── android │ │ │ └── jni │ │ │ ├── Android.mk │ │ │ └── Application.mk │ │ ├── lib │ │ └── android │ │ │ ├── arm64-v8a │ │ │ └── libstb.a │ │ │ └── armeabi-v7a │ │ │ └── libstb.a │ │ └── src │ │ ├── stb_image.c │ │ ├── stb_image.h │ │ ├── stb_image_write.c │ │ ├── stb_image_write.h │ │ ├── stb_vorbis.c │ │ └── stb_vorbis.h ├── Application.mk ├── JavaForQuest │ ├── Projects │ │ ├── .gitignore │ │ ├── EndlessUniverse │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ ├── LeftSpaceship.java │ │ │ │ │ ├── Level.java │ │ │ │ │ ├── LevelSegment.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ └── RightSpaceship.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloAnimation │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloControllers │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloNormals │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloObjectClass │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ ├── Car.java │ │ │ │ │ ├── Clouds.java │ │ │ │ │ ├── HouseScene.java │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloObjectMaker │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloPolygon │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloSolarSystem │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── HelloTexture │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── OBJViewer │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ ├── Sandbox │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── android.debug.keystore │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── jni │ │ │ │ ├── Android.mk │ │ │ │ └── Application.mk │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ └── res │ │ │ │ │ └── drawable │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ └── drawable │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── planet.png │ │ └── SandboxPhone │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ ├── proguard-rules.pro │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── j4q │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ └── ic_launcher_background.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ └── settings.gradle │ ├── Src │ │ └── XrCompositor_NativeActivity.c │ ├── assets │ │ ├── cubemap256.ktx │ │ ├── donotdelete.txt │ │ ├── objects │ │ │ ├── BEE.obj │ │ │ ├── cube.obj │ │ │ ├── leonardo.obj │ │ │ └── person.obj │ │ └── textures │ │ │ ├── box.png │ │ │ ├── earth_1024.jpg │ │ │ ├── eso0932a.jpg │ │ │ ├── metal.jpg │ │ │ ├── moon_1024.jpg │ │ │ └── planet_3_d.jpg │ ├── java │ │ └── edu │ │ │ └── ufl │ │ │ └── digitalworlds │ │ │ └── j4q │ │ │ ├── Audio.java │ │ │ ├── J4Q.java │ │ │ ├── activities │ │ │ ├── GameEngineActivity.java │ │ │ ├── GameEngineScene.java │ │ │ └── QuestActivity.java │ │ │ ├── controllers │ │ │ ├── J4QController.java │ │ │ ├── J4QJoystick.java │ │ │ ├── J4QLeftController.java │ │ │ ├── J4QPose.java │ │ │ ├── J4QPressureButton.java │ │ │ ├── J4QRightController.java │ │ │ └── J4QToggleButton.java │ │ │ ├── formats │ │ │ └── OBJFile.java │ │ │ ├── geometry │ │ │ ├── Orientation.java │ │ │ ├── Position.java │ │ │ └── Transform.java │ │ │ ├── materials │ │ │ └── PhongMaterial.java │ │ │ ├── models │ │ │ ├── Background360.java │ │ │ ├── LeftController.java │ │ │ ├── Mesh.java │ │ │ ├── Model.java │ │ │ ├── ObjectMaker.java │ │ │ ├── RightController.java │ │ │ └── Spaceship.java │ │ │ └── shaders │ │ │ ├── Background360Shader.java │ │ │ ├── ColorShader.java │ │ │ ├── PhongShader.java │ │ │ ├── ShadedColorShader.java │ │ │ ├── ShadedTextureShader.java │ │ │ ├── Shader.java │ │ │ ├── Text.java │ │ │ ├── Texture.java │ │ │ └── TextureShader.java │ ├── javax │ │ └── edu │ │ │ └── ufl │ │ │ └── digitalworlds │ │ │ └── j4q │ │ │ └── activities │ │ │ ├── GLActivity.java │ │ │ ├── GyroscopicActivity.java │ │ │ └── ThirdEyeActivity.java │ └── keystore │ │ └── android.debug.keystore ├── LICENSE.txt ├── OPENXR_SDK_THIRD_PARTY_NOTICES.txt ├── OpenXR │ ├── Include │ │ └── openxr │ │ │ ├── ext_event_channel.h │ │ │ ├── fb_body_tracking.h │ │ │ ├── fb_composition_layer_depth_test.h │ │ │ ├── fb_eye_tracking_social.h │ │ │ ├── fb_face_tracking.h │ │ │ ├── fb_haptic_amplitude_envelope.h │ │ │ ├── fb_haptic_pcm.h │ │ │ ├── fb_scene.h │ │ │ ├── fb_scene_capture.h │ │ │ ├── fb_spatial_entity.h │ │ │ ├── fb_spatial_entity_container.h │ │ │ ├── fb_spatial_entity_query.h │ │ │ ├── fb_spatial_entity_storage.h │ │ │ ├── fb_touch_controller_extras.h │ │ │ ├── fb_touch_controller_pro.h │ │ │ ├── meta_foveation_eye_tracked.h │ │ │ ├── meta_local_dimming.h │ │ │ ├── openxr_extension_helpers.h │ │ │ ├── openxr_oculus.h │ │ │ └── openxr_oculus_helpers.h │ ├── Libs │ │ └── Android │ │ │ ├── arm64-v8a │ │ │ ├── Debug │ │ │ │ └── libopenxr_loader.so │ │ │ └── Release │ │ │ │ └── libopenxr_loader.so │ │ │ └── armeabi-v7a │ │ │ ├── Debug │ │ │ └── libopenxr_loader.so │ │ │ └── Release │ │ │ └── libopenxr_loader.so │ └── Projects │ │ └── AndroidPrebuilt │ │ ├── AndroidManifest.xml │ │ └── jni │ │ └── Android.mk ├── SampleCommon │ ├── Projects │ │ └── Android │ │ │ ├── AndroidManifest.xml │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ └── jni │ │ │ ├── Android.mk │ │ │ └── Application.mk │ ├── Src │ │ ├── CompilerUtils.h │ │ ├── FrameParams.h │ │ ├── GUI │ │ │ ├── ActionComponents.cpp │ │ │ ├── ActionComponents.h │ │ │ ├── AnimComponents.cpp │ │ │ ├── AnimComponents.h │ │ │ ├── CollisionPrimitive.cpp │ │ │ ├── CollisionPrimitive.h │ │ │ ├── DefaultComponent.cpp │ │ │ ├── DefaultComponent.h │ │ │ ├── Fader.cpp │ │ │ ├── Fader.h │ │ │ ├── GazeCursor.cpp │ │ │ ├── GazeCursor.h │ │ │ ├── GuiSys.cpp │ │ │ ├── GuiSys.h │ │ │ ├── Lerp.h │ │ │ ├── MetaDataManager.cpp │ │ │ ├── MetaDataManager.h │ │ │ ├── Reflection.cpp │ │ │ ├── Reflection.h │ │ │ ├── ReflectionData.cpp │ │ │ ├── ReflectionData.h │ │ │ ├── SoundLimiter.cpp │ │ │ ├── SoundLimiter.h │ │ │ ├── VRMenu.cpp │ │ │ ├── VRMenu.h │ │ │ ├── VRMenuComponent.cpp │ │ │ ├── VRMenuComponent.h │ │ │ ├── VRMenuEvent.cpp │ │ │ ├── VRMenuEvent.h │ │ │ ├── VRMenuEventHandler.cpp │ │ │ ├── VRMenuEventHandler.h │ │ │ ├── VRMenuMgr.cpp │ │ │ ├── VRMenuMgr.h │ │ │ ├── VRMenuObject.cpp │ │ │ ├── VRMenuObject.h │ │ │ └── ui_default.h │ │ ├── Input │ │ │ ├── ArmModel.cpp │ │ │ ├── ArmModel.h │ │ │ ├── AxisRenderer.cpp │ │ │ ├── AxisRenderer.h │ │ │ ├── ControllerRenderer.cpp │ │ │ ├── ControllerRenderer.h │ │ │ ├── Skeleton.cpp │ │ │ ├── Skeleton.h │ │ │ ├── SkeletonRenderer.cpp │ │ │ ├── SkeletonRenderer.h │ │ │ ├── TinyUI.cpp │ │ │ └── TinyUI.h │ │ ├── Locale │ │ │ ├── OVR_Locale.cpp │ │ │ ├── OVR_Locale.h │ │ │ ├── tinyxml2.cpp │ │ │ └── tinyxml2.h │ │ ├── Misc │ │ │ ├── Log.c │ │ │ └── Log.h │ │ ├── Model │ │ │ ├── ModelCollision.cpp │ │ │ ├── ModelCollision.h │ │ │ ├── ModelDef.h │ │ │ ├── ModelFile.cpp │ │ │ ├── ModelFile.h │ │ │ ├── ModelFileLoading.h │ │ │ ├── ModelFile_OvrScene.cpp │ │ │ ├── ModelFile_glTF.cpp │ │ │ ├── ModelRender.cpp │ │ │ ├── ModelRender.h │ │ │ ├── ModelTrace.cpp │ │ │ ├── ModelTrace.h │ │ │ ├── SceneView.cpp │ │ │ └── SceneView.h │ │ ├── OVR_BinaryFile2.cpp │ │ ├── OVR_BinaryFile2.h │ │ ├── OVR_FileSys.cpp │ │ ├── OVR_FileSys.h │ │ ├── OVR_Lexer2.cpp │ │ ├── OVR_Lexer2.h │ │ ├── OVR_MappedFile.cpp │ │ ├── OVR_MappedFile.h │ │ ├── OVR_Stream.cpp │ │ ├── OVR_Stream.h │ │ ├── OVR_Stream_Impl.h │ │ ├── OVR_UTF8Util.cpp │ │ ├── OVR_UTF8Util.h │ │ ├── OVR_Uri.cpp │ │ ├── OVR_Uri.h │ │ ├── PackageFiles.cpp │ │ ├── PackageFiles.h │ │ ├── Render │ │ │ ├── BeamRenderer.cpp │ │ │ ├── BeamRenderer.h │ │ │ ├── BillBoardRenderer.cpp │ │ │ ├── BillBoardRenderer.h │ │ │ ├── BitmapFont.cpp │ │ │ ├── BitmapFont.h │ │ │ ├── DebugLines.cpp │ │ │ ├── DebugLines.h │ │ │ ├── EaseFunctions.cpp │ │ │ ├── EaseFunctions.h │ │ │ ├── Egl.c │ │ │ ├── Egl.h │ │ │ ├── GeometryBuilder.cpp │ │ │ ├── GeometryBuilder.h │ │ │ ├── GeometryRenderer.cpp │ │ │ ├── GeometryRenderer.h │ │ │ ├── GlBuffer.cpp │ │ │ ├── GlBuffer.h │ │ │ ├── GlGeometry.cpp │ │ │ ├── GlGeometry.h │ │ │ ├── GlProgram.cpp │ │ │ ├── GlProgram.h │ │ │ ├── GlTexture.cpp │ │ │ ├── GlTexture.h │ │ │ ├── GlWrapperWin32.c │ │ │ ├── GlWrapperWin32.h │ │ │ ├── GpuState.h │ │ │ ├── PanelRenderer.cpp │ │ │ ├── PanelRenderer.h │ │ │ ├── ParticleSystem.cpp │ │ │ ├── ParticleSystem.h │ │ │ ├── PointList.cpp │ │ │ ├── PointList.h │ │ │ ├── Ribbon.cpp │ │ │ ├── Ribbon.h │ │ │ ├── SimpleBeamRenderer.h │ │ │ ├── SurfaceRender.cpp │ │ │ ├── SurfaceRender.h │ │ │ ├── SurfaceTexture.cpp │ │ │ ├── SurfaceTexture.h │ │ │ ├── TextureAtlas.cpp │ │ │ ├── TextureAtlas.h │ │ │ ├── TextureManager.cpp │ │ │ └── TextureManager.h │ │ ├── System.cpp │ │ └── System.h │ └── res │ │ ├── raw │ │ ├── efigs.fnt │ │ ├── efigs_sdf.ktx │ │ ├── loading_indicator.png │ │ └── sound_assets.json │ │ ├── values-el │ │ └── assets.xml │ │ ├── values-ja │ │ └── assets.xml │ │ ├── values-ko │ │ └── assets.xml │ │ ├── values-zh-rCN │ │ └── assets.xml │ │ ├── values-zh-rHK │ │ └── assets.xml │ │ ├── values-zh-rTW │ │ └── assets.xml │ │ └── values │ │ └── assets.xml ├── SampleXrFramework │ ├── Projects │ │ └── Android │ │ │ ├── AndroidManifest.xml │ │ │ ├── build.bat │ │ │ ├── build.gradle │ │ │ ├── build.py │ │ │ └── jni │ │ │ ├── Android.mk │ │ │ └── Application.mk │ ├── Src │ │ ├── Input │ │ │ ├── HandMaskRenderer.cpp │ │ │ ├── HandMaskRenderer.h │ │ │ ├── HandRenderer.cpp │ │ │ └── HandRenderer.h │ │ ├── Render │ │ │ ├── Framebuffer.cpp │ │ │ └── Framebuffer.h │ │ ├── XrApp.cpp │ │ └── XrApp.h │ └── res │ │ ├── raw │ │ ├── efigs.fnt │ │ ├── efigs_sdf.ktx │ │ ├── loading_indicator.png │ │ └── sound_assets.json │ │ ├── values-el │ │ └── assets.xml │ │ ├── values-ja │ │ └── assets.xml │ │ ├── values-ko │ │ └── assets.xml │ │ ├── values-zh-rCN │ │ └── assets.xml │ │ ├── values-zh-rHK │ │ └── assets.xml │ │ ├── values-zh-rTW │ │ └── assets.xml │ │ └── values │ │ └── assets.xml ├── VrApp.gradle ├── bin │ └── scripts │ │ ├── build │ │ ├── android.debug.keystore │ │ ├── build.py.bat │ │ ├── ovrbuild.py │ │ ├── ovrbuild_keystore.py │ │ ├── ovrbuild_keystore.py.bat │ │ ├── perproject │ │ │ ├── build.py │ │ │ └── build.py.bat │ │ └── util.py │ │ └── python.bat ├── build.gradle ├── cflags.mk ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── README.md └── docs ├── Contents.md └── img ├── EndlessUniverse.png ├── EndlessUniverse2.png ├── HelloAnimation.png ├── HelloAnimation2.png ├── HelloObjectClass.png ├── HelloObjectClass2.png ├── HelloPolygon.png ├── HelloPolygon2.png ├── HelloTexture.png ├── HelloTexture2.png ├── Illustration.png ├── LogoBanner.jpg └── banner1000x2000.png /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | J4Q_46.0/.cxx 4 | J4Q_46.0/.gradle 5 | J4Q_46.0/.idea 6 | J4Q_46.0/build 7 | J4Q_46.0/local.properties 8 | -------------------------------------------------------------------------------- /J4Q_46.0/1stParty/OVR/tests/OVR_LogUtilsTest.cpp: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | #include 4 | 5 | #include 6 | 7 | namespace OVR { 8 | namespace { 9 | 10 | TEST(LogUtilsTest, FatalTest) { 11 | EXPECT_DEATH(OVR_FAIL("death message"), "death message"); 12 | } 13 | 14 | } // namespace 15 | } // namespace OVR 16 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/README.meta: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | This is a pre-built KTX library built from a version (refer: ktx.gitversion) of the Khronos KTX Repo 4 | 5 | - The original is hosted at https://github.com/KhronosGroup/KTX-Software 6 | 7 | # Updating 8 | 9 | ### How to update 10 | 11 | 1. Check out the source repo from the URL above 12 | 2. Make sure you have your local ANDROID_NDK path setup. 13 | 3. Your local machine needs to have Cmake, Ninja, and clang. (If you do not have Ninja or it does not work, you can remove this from the following build script) 14 | 4. Run ci_tools/build_android.sh - You may need to modify this script to manually input your ANDROID_NDK path 15 | 5. Move the newly built libktx.so, libktx_read.so, and libobjUtil.a files into lib/android/arm64-v8a 16 | 6. Replace include/ktx.h with the latest from github (if necessary) 17 | 18 | ### When to update 19 | 20 | - Ideally we do not need to update this library, but if there are some crucial fixes or changes that are necessary, we can run these steps to update. 21 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/ktx.gitversion: -------------------------------------------------------------------------------- 1 | d1a25c8a20607a432b2d910a7a761d663c907e8e 2 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/lib/android/arm64-v8a/libktx.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/khronos/ktx/lib/android/arm64-v8a/libktx.so -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/lib/android/arm64-v8a/libktx_read.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/khronos/ktx/lib/android/arm64-v8a/libktx_read.so -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/lib/android/arm64-v8a/libobjUtil.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/khronos/ktx/lib/android/arm64-v8a/libobjUtil.a -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/BSD-1-Clause.txt: -------------------------------------------------------------------------------- 1 | Redistribution and use in source and binary forms, with or without 2 | modification, are permitted provided that the following conditions are met: 3 | 4 | * Redistributions of source code must retain the above copyright 5 | notice, this list of conditions and the following disclaimer. 6 | 7 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 8 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 9 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 10 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 11 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 12 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 13 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 14 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 15 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 16 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 17 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 18 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/BSD-2-Clause.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) . All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, 7 | this list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 14 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 17 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 23 | POSSIBILITY OF SUCH DAMAGE. 24 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/BSD-3-Clause.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) . All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, 7 | this list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | 3. Neither the name of the copyright holder nor the names of its 14 | contributors may be used to endorse or promote products derived from this 15 | software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/BSL-1.0.txt: -------------------------------------------------------------------------------- 1 | Boost Software License - Version 1.0 - August 17th, 2003 2 | 3 | Permission is hereby granted, free of charge, to any person or organization 4 | obtaining a copy of the software and accompanying documentation covered by 5 | this license (the "Software") to use, reproduce, display, distribute, 6 | execute, and transmit the Software, and to prepare derivative works of the 7 | Software, and to permit third-parties to whom the Software is furnished to 8 | do so, all subject to the following: 9 | 10 | The copyright notices in the Software and this entire statement, including 11 | the above license grant, this restriction and the following disclaimer, 12 | must be included in all copies of the Software, in whole or in part, and 13 | all derivative works of the Software, unless such copies or derivative 14 | works are solely in the form of machine-executable object code generated by 15 | a source language processor. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 20 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 21 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 22 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/LicenseRef-HI-Trademark.txt: -------------------------------------------------------------------------------- 1 | The HI logo textures are copyright by & trademarks of HI Corporation and are 2 | provided for use only in testing the KTX loader. Any other use requires 3 | specific prior written permission from HI. Furthermore the name HI may 4 | not be used to endorse or promote products derived from this software 5 | without specific prior written permission. 6 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/LicenseRef-Kodak.txt: -------------------------------------------------------------------------------- 1 | This LICENSES file applies to images from the Kodak Lossless True Color 2 | Image Suite, and exists only for REUSE compliance. According to 3 | http://r0k.us/graphics/kodak/ , for such images: 4 | 5 | "It is my understanding they have been released by the Eastman Kodak Company 6 | for unrestricted usage. Many sites use them as a standard test suite for 7 | compression testing, etc." 8 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/LicenseRef-PNGSuite.txt: -------------------------------------------------------------------------------- 1 | The following text is copied and pasted from 2 | http://www.schaik.com/pngsuite/PngSuite.LICENSE , which is the license under 3 | which an image from the PngSuite project is used. Please refer to the 4 | original link as the authoritative text; this file exists only for REUSE 5 | license-checker compliance. 6 | 7 | PngSuite 8 | -------- 9 | 10 | Permission to use, copy, modify and distribute these images for any 11 | purpose and without fee is hereby granted. 12 | 13 | 14 | (c) Willem van Schaik, 1996, 2011 15 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/MIT.txt: -------------------------------------------------------------------------------- 1 | MIT License Copyright (c) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice (including the next 11 | paragraph) shall be included in all copies or substantial portions of the 12 | Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS 17 | OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 18 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 19 | OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/Zlib.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2 | 3 | This software is provided 'as-is', without any express or implied 4 | warranty. In no event will the authors be held liable for any damages 5 | arising from the use of this software. 6 | 7 | Permission is granted to anyone to use this software for any purpose, 8 | including commercial applications, and to alter it and redistribute it 9 | freely, subject to the following restrictions: 10 | 11 | 1. The origin of this software must not be misrepresented; you must not 12 | claim that you wrote the original software. If you use this software 13 | in a product, an acknowledgment in the product documentation would be 14 | appreciated but is not required. 15 | 16 | 2. Altered source versions must be plainly marked as such, and must not be 17 | misrepresented as being the original software. 18 | 19 | 3. This notice may not be removed or altered from any source 20 | distribution. 21 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/licenses/ktx_LICENSE.md: -------------------------------------------------------------------------------- 1 | LICENSE file for the KhronosGroup/KTX-Software project {#license} 2 | ====================================================== 3 | 4 | 9 | 10 | Files unique to this repository generally fall under the Apache 2.0 license 11 | with copyright holders including Mark Callow, the KTX-Software author; The 12 | Khronos Group Inc., which has supported KTX development; and other 13 | contributors to the KTX project. 14 | 15 | Because KTX-Software incorporates material and contributions from many other 16 | projects, which often have their own licenses, there are many other licenses 17 | in use in this repository. While there are many licenses in this repository, 18 | with rare exceptions all are open source licenses that we believe to be 19 | mutually compatible. 20 | 21 | The complete text of each of the licenses used in this repository is found 22 | in LICENSES/*.txt . Additionally, we have updated the repository to pass the 23 | REUSE compliance checker tool (see https://reuse.software/). REUSE verifies 24 | that every file in a git repository either incorporates a license, or that 25 | the license is present in auxiliary files such as .reuse/dep5 . To obtain a 26 | bill of materials for the repository identifying the license for each file, 27 | install the REUSE tool and run 28 | 29 | reuse spdx 30 | 31 | inside the repository. 32 | 33 | ## Special Cases 34 | 35 | The file lib/etcdec.cxx is not open source. It is made available under the 36 | terms of an Ericsson license, found in the file itself. 37 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/makefiles/android/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir)/../../.. 2 | 3 | include $(CLEAR_VARS) 4 | 5 | LOCAL_MODULE := ktx 6 | LOCAL_ARM_MODE := arm 7 | LOCAL_ARM_NEON := true 8 | 9 | include $(LOCAL_PATH)/../../../cflags.mk 10 | LOCAL_CFLAGS := -w -DLIBKTX -DKTX_FEATURE_WRITE -D_HAS_EXCEPTIONS=0 -D_CRT_SECURE_NO_WARNINGS=1 -D_MBCS -DKHRONOS_STATIC 11 | LOCAL_CPPFLAGS := -w -DLIBKTX -DKTX_FEATURE_WRITE -D_HAS_EXCEPTIONS=0 -D_CRT_SECURE_NO_WARNINGS=1 -D_MBCS -DKHRONOS_STATIC 12 | 13 | LOCAL_SRC_FILES := \ 14 | ${wildcard src/*.c} \ 15 | ${wildcard src/*.cpp} \ 16 | ${wildcard src/*.cxx} \ 17 | ${wildcard src/basisu/*.c} \ 18 | ${wildcard src/basisu/*.cpp} \ 19 | ${wildcard src/basisu/transcoder/*.cpp} \ 20 | ${wildcard src/dfdutils/*.c} 21 | 22 | LOCAL_C_INCLUDES := \ 23 | $(LOCAL_PATH)/src \ 24 | $(LOCAL_PATH)/src/dfdutils \ 25 | $(LOCAL_PATH)/other_include \ 26 | $(LOCAL_PATH)/other_include/GL \ 27 | $(LOCAL_PATH)/other_include/KHR 28 | 29 | LOCAL_EXPORT_C_INCLUDES := \ 30 | $(LOCAL_PATH)/include \ 31 | $(LOCAL_PATH)/src \ 32 | $(LOCAL_PATH)/src/basisu \ 33 | $(LOCAL_PATH)/src/dfdutils 34 | 35 | 36 | include $(BUILD_STATIC_LIBRARY) 37 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/makefiles/android/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../../ 5 | include $(ROOT_DIR)/Application.mk 6 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/ktx/makefiles/androidprebuilt/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir)/../../.. 2 | 3 | include $(CLEAR_VARS) 4 | 5 | LOCAL_MODULE := ktx 6 | 7 | LOCAL_SRC_FILES := lib/android/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so 8 | 9 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 10 | 11 | #testing 12 | 13 | # NOTE: This check is added to prevent the following error when running a "make clean" where 14 | # the prebuilt lib may have been deleted: "LOCAL_SRC_FILES points to a missing file" 15 | ifneq (,$(wildcard $(LOCAL_PATH)/$(LOCAL_SRC_FILES))) 16 | include $(PREBUILT_SHARED_LIBRARY) 17 | endif 18 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/khronos/openxr/OpenXR-SDK/include/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017 The Khronos Group Inc. 2 | # 3 | # SPDX-License-Identifier: Apache-2.0 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Author: 18 | # 19 | 20 | add_subdirectory(openxr) 21 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/Makefile: -------------------------------------------------------------------------------- 1 | CC=cc 2 | CFLAGS=-O -I../.. 3 | 4 | UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a 5 | ZIP_OBJS = minizip.o zip.o ioapi.o ../../libz.a 6 | 7 | .c.o: 8 | $(CC) -c $(CFLAGS) $*.c 9 | 10 | all: miniunz minizip 11 | 12 | miniunz: $(UNZ_OBJS) 13 | $(CC) $(CFLAGS) -o $@ $(UNZ_OBJS) 14 | 15 | minizip: $(ZIP_OBJS) 16 | $(CC) $(CFLAGS) -o $@ $(ZIP_OBJS) 17 | 18 | test: miniunz minizip 19 | ./minizip test readme.txt 20 | ./miniunz -l test.zip 21 | mv readme.txt readme.old 22 | ./miniunz test.zip 23 | 24 | clean: 25 | /bin/rm -f *.o *~ minizip miniunz 26 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/Makefile.am: -------------------------------------------------------------------------------- 1 | lib_LTLIBRARIES = libminizip.la 2 | 3 | if COND_DEMOS 4 | bin_PROGRAMS = miniunzip minizip 5 | endif 6 | 7 | zlib_top_srcdir = $(top_srcdir)/../.. 8 | zlib_top_builddir = $(top_builddir)/../.. 9 | 10 | AM_CPPFLAGS = -I$(zlib_top_srcdir) 11 | AM_LDFLAGS = -L$(zlib_top_builddir) 12 | 13 | if WIN32 14 | iowin32_src = iowin32.c 15 | iowin32_h = iowin32.h 16 | endif 17 | 18 | libminizip_la_SOURCES = \ 19 | ioapi.c \ 20 | mztools.c \ 21 | unzip.c \ 22 | zip.c \ 23 | ${iowin32_src} 24 | 25 | libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz 26 | 27 | minizip_includedir = $(includedir)/minizip 28 | minizip_include_HEADERS = \ 29 | crypt.h \ 30 | ioapi.h \ 31 | mztools.h \ 32 | unzip.h \ 33 | zip.h \ 34 | ${iowin32_h} 35 | 36 | pkgconfigdir = $(libdir)/pkgconfig 37 | pkgconfig_DATA = minizip.pc 38 | 39 | EXTRA_PROGRAMS = miniunzip minizip 40 | 41 | miniunzip_SOURCES = miniunz.c 42 | miniunzip_LDADD = libminizip.la 43 | 44 | minizip_SOURCES = minizip.c 45 | minizip_LDADD = libminizip.la -lz 46 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/MiniZip64_Changes.txt: -------------------------------------------------------------------------------- 1 | 2 | MiniZip 1.1 was derrived from MiniZip at version 1.01f 3 | 4 | Change in 1.0 (Okt 2009) 5 | - **TODO - Add history** 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/build/android/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir)/../../.. 2 | 3 | include $(CLEAR_VARS) 4 | 5 | LOCAL_MODULE := minizip 6 | LOCAL_ARM_MODE := arm 7 | LOCAL_ARM_NEON := true 8 | 9 | include $(LOCAL_PATH)/../../cflags.mk 10 | 11 | LOCAL_SRC_FILES := \ 12 | src/ioapi.c \ 13 | src/miniunz.c \ 14 | src/mztools.c \ 15 | src/unzip.c \ 16 | src/zip.c 17 | 18 | 19 | LOCAL_CFLAGS += -Wno-shadow 20 | 21 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src 22 | 23 | LOCAL_EXPORT_LDLIBS += -lz 24 | 25 | include $(BUILD_STATIC_LIBRARY) 26 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/build/android/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../../ 5 | include $(ROOT_DIR)/Application.mk 6 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/configure.ac: -------------------------------------------------------------------------------- 1 | # -*- Autoconf -*- 2 | # Process this file with autoconf to produce a configure script. 3 | 4 | AC_INIT([minizip], [1.2.7], [bugzilla.redhat.com]) 5 | AC_CONFIG_SRCDIR([minizip.c]) 6 | AM_INIT_AUTOMAKE([foreign]) 7 | LT_INIT 8 | 9 | AC_MSG_CHECKING([whether to build example programs]) 10 | AC_ARG_ENABLE([demos], AC_HELP_STRING([--enable-demos], [build example programs])) 11 | AM_CONDITIONAL([COND_DEMOS], [test "$enable_demos" = yes]) 12 | if test "$enable_demos" = yes 13 | then 14 | AC_MSG_RESULT([yes]) 15 | else 16 | AC_MSG_RESULT([no]) 17 | fi 18 | 19 | case "${host}" in 20 | *-mingw* | mingw*) 21 | WIN32="yes" 22 | ;; 23 | *) 24 | ;; 25 | esac 26 | AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"]) 27 | 28 | 29 | AC_SUBST([HAVE_UNISTD_H], [0]) 30 | AC_CHECK_HEADER([unistd.h], [HAVE_UNISTD_H=1], []) 31 | AC_CONFIG_FILES([Makefile minizip.pc]) 32 | AC_OUTPUT 33 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/lib/android/arm64-v8a/libminizip.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/minizip/lib/android/arm64-v8a/libminizip.a -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/lib/android/armeabi-v7a/libminizip.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/minizip/lib/android/armeabi-v7a/libminizip.a -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/make_vms.com: -------------------------------------------------------------------------------- 1 | $ if f$search("ioapi.h_orig") .eqs. "" then copy ioapi.h ioapi.h_orig 2 | $ open/write zdef vmsdefs.h 3 | $ copy sys$input: zdef 4 | $ deck 5 | #define unix 6 | #define fill_zlib_filefunc64_32_def_from_filefunc32 fillzffunc64from 7 | #define Write_Zip64EndOfCentralDirectoryLocator Write_Zip64EoDLocator 8 | #define Write_Zip64EndOfCentralDirectoryRecord Write_Zip64EoDRecord 9 | #define Write_EndOfCentralDirectoryRecord Write_EoDRecord 10 | $ eod 11 | $ close zdef 12 | $ copy vmsdefs.h,ioapi.h_orig ioapi.h 13 | $ cc/include=[--]/prefix=all ioapi.c 14 | $ cc/include=[--]/prefix=all miniunz.c 15 | $ cc/include=[--]/prefix=all unzip.c 16 | $ cc/include=[--]/prefix=all minizip.c 17 | $ cc/include=[--]/prefix=all zip.c 18 | $ link miniunz,unzip,ioapi,[--]libz.olb/lib 19 | $ link minizip,zip,ioapi,[--]libz.olb/lib 20 | $ mcr []minizip test minizip_info.txt 21 | $ mcr []miniunz -l test.zip 22 | $ rename minizip_info.txt; minizip_info.txt_old 23 | $ mcr []miniunz test.zip 24 | $ delete test.zip;* 25 | $exit 26 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/minizip.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@/minizip 5 | 6 | Name: minizip 7 | Description: Minizip zip file manipulation library 8 | Requires: 9 | Version: @PACKAGE_VERSION@ 10 | Libs: -L${libdir} -lminizip 11 | Libs.private: -lz 12 | Cflags: -I${includedir} 13 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/src/iowin32.h: -------------------------------------------------------------------------------- 1 | /* iowin32.h -- IO base function header for compress/uncompress .zip 2 | Version 1.1, February 14h, 2010 3 | part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) 4 | 5 | Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) 6 | 7 | Modifications for Zip64 support 8 | Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) 9 | 10 | For more info read MiniZip_info.txt 11 | 12 | */ 13 | 14 | #include 15 | 16 | 17 | #ifdef __cplusplus 18 | extern "C" { 19 | #endif 20 | 21 | void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); 22 | void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def)); 23 | void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def)); 24 | void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def)); 25 | 26 | #ifdef __cplusplus 27 | } 28 | #endif 29 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/minizip/src/mztools.h: -------------------------------------------------------------------------------- 1 | /* 2 | Additional tools for Minizip 3 | Code: Xavier Roche '2004 4 | License: Same as ZLIB (www.gzip.org) 5 | */ 6 | 7 | #ifndef _zip_tools_H 8 | #define _zip_tools_H 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | #ifndef _ZLIB_H 15 | #include "zlib.h" 16 | #endif 17 | 18 | #include "unzip.h" 19 | 20 | /* Repair a ZIP file (missing central directory) 21 | file: file to recover 22 | fileOut: output file after recovery 23 | fileOutTmp: temporary file name used for recovery 24 | */ 25 | extern int ZEXPORT unzRepair(const char* file, 26 | const char* fileOut, 27 | const char* fileOutTmp, 28 | uLong* nRecovered, 29 | uLong* bytesRecovered); 30 | 31 | 32 | #ifdef __cplusplus 33 | } 34 | #endif 35 | 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/stb/build/android/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir)/../../.. 2 | 3 | include $(CLEAR_VARS) 4 | 5 | LOCAL_MODULE := stb 6 | LOCAL_ARM_MODE := arm 7 | LOCAL_ARM_NEON := true 8 | 9 | include $(LOCAL_PATH)/../../cflags.mk 10 | LOCAL_CFLAGS := -w 11 | LOCAL_CPPFLAGS := -w 12 | 13 | LOCAL_SRC_FILES := \ 14 | src/stb_image.c \ 15 | src/stb_image_write.c \ 16 | src/stb_vorbis.c 17 | 18 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src 19 | 20 | include $(BUILD_STATIC_LIBRARY) 21 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/stb/build/android/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../../ 5 | include $(ROOT_DIR)/Application.mk 6 | -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/stb/lib/android/arm64-v8a/libstb.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/stb/lib/android/arm64-v8a/libstb.a -------------------------------------------------------------------------------- /J4Q_46.0/3rdParty/stb/lib/android/armeabi-v7a/libstb.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/3rdParty/stb/lib/android/armeabi-v7a/libstb.a -------------------------------------------------------------------------------- /J4Q_46.0/Application.mk: -------------------------------------------------------------------------------- 1 | # Common build settings for all VR apps 2 | # NOTE: These properties are ignored for any libraries or applications 3 | # using the externalNativeBuild path. This file can go away, once 4 | # remaining usage can be stripped from test libraries and applications. 5 | 6 | # This needs to be defined to get the right header directories for egl / etc 7 | # NOTE: this is ignored from here now, and must be specified in build.gradle! 8 | APP_PLATFORM := android-24 9 | 10 | # Statically link the C++_STATIC STL. This may not be safe for multi-so libraries but 11 | # we don't know of any problems yet. 12 | APP_STL := c++_static 13 | 14 | # Make sure every shared lib includes a .note.gnu.build-id header, for crash reporting 15 | APP_LDFLAGS := -Wl,--build-id 16 | 17 | NDK_TOOLCHAIN_VERSION := clang 18 | 19 | # Define the directories for $(import-module, ...) to look in 20 | ROOT_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) 21 | NDK_MODULE_PATH := $(ROOT_DIR) 22 | 23 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 24 | # step will error as we currently remove prebuilt artifacts on clean. 25 | APP_ALLOW_MISSING_DEPS=true 26 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | TestPhone 3 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "endlessuniverse" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:EndlessUniverse' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/src/main/java/com/example/j4q/LeftSpaceship.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import edu.ufl.digitalworlds.j4q.J4Q; 4 | import edu.ufl.digitalworlds.j4q.models.Model; 5 | import edu.ufl.digitalworlds.j4q.models.Spaceship; 6 | 7 | public class LeftSpaceship extends Model { 8 | 9 | Model spaceship; 10 | 11 | public LeftSpaceship(){ 12 | spaceship=new Spaceship(3); 13 | appendChild(spaceship); 14 | } 15 | 16 | @Override 17 | public void Update(){ 18 | 19 | if(J4Q.leftController.squeeze.changedSinceLastSync && J4Q.leftController.squeeze.currentState){ 20 | new Spaceship((int)Math.floor(Math.random()*Spaceship.TYPES),spaceship); 21 | } 22 | 23 | transform.reset(); 24 | transform.translate(J4Q.leftController.aim.position); 25 | transform.rotate(J4Q.leftController.aim.orientation); 26 | transform.scale(0.2f); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/src/main/java/com/example/j4q/RightSpaceship.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import edu.ufl.digitalworlds.j4q.J4Q; 4 | import edu.ufl.digitalworlds.j4q.models.Model; 5 | import edu.ufl.digitalworlds.j4q.models.Spaceship; 6 | 7 | public class RightSpaceship extends Model { 8 | 9 | Model spaceship; 10 | 11 | 12 | 13 | public RightSpaceship(){ 14 | spaceship=new Spaceship(0); 15 | appendChild(spaceship); 16 | } 17 | 18 | @Override 19 | public void Update(){ 20 | 21 | if(J4Q.rightController.squeeze.changedSinceLastSync && J4Q.rightController.squeeze.currentState){ 22 | new Spaceship((int)Math.floor(Math.random()*Spaceship.TYPES),spaceship); 23 | } 24 | 25 | transform.reset(); 26 | transform.translate(J4Q.rightController.aim.position); 27 | transform.rotate(J4Q.rightController.aim.orientation); 28 | transform.scale(0.2f); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/EndlessUniverse/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloAnimation/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "helloanimation" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloAnimation/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloAnimation' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloAnimation/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloAnimation/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloAnimation/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloControllers/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "hellocontrollers" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloControllers/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloControllers' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloControllers/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | 5 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 6 | 7 | public class MainActivity extends QuestActivity { 8 | @Override 9 | public void onCreate(Bundle savedInstanceState){ 10 | super.onCreate(savedInstanceState); 11 | } 12 | 13 | public void Start(){ 14 | //Welcome to the J4Q (Java For Quest) Project! 15 | 16 | //This method will run once in the beginning of the program. 17 | //Write here code that loads your assets and composes your scene. 18 | } 19 | 20 | @Override 21 | public void Update() { 22 | //This method will run in every frame. 23 | //Write here code that modifies your variables and animates your scene. 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloControllers/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloControllers/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloNormals/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "hellonormals" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloNormals/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloNormals' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloNormals/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloNormals/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloNormals/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "helloobjectclass" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloObjectClass' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/src/main/java/com/example/j4q/Clouds.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import edu.ufl.digitalworlds.j4q.J4Q; 4 | import edu.ufl.digitalworlds.j4q.models.Model; 5 | import edu.ufl.digitalworlds.j4q.models.ObjectMaker; 6 | 7 | public class Clouds extends Model { 8 | 9 | public Clouds(){ 10 | 11 | ObjectMaker om=new ObjectMaker(); 12 | 13 | //Here we make a cloud out of 4 ellipsoids 14 | om.color(1,1,1); 15 | om.translate(0,2,0); 16 | om.sphere(0.5f,0.2f,0.2f,16); 17 | om.translate(0.3f,0.1f,0); 18 | om.sphere(0.5f,0.4f,0.2f,16); 19 | om.translate(0.3f,-0.2f,0); 20 | om.sphere(0.8f,0.2f,0.2f,16); 21 | om.translate(-0.1f,0.1f,0); 22 | om.sphere(0.3f,0.3f,0.2f,16); 23 | 24 | //we flush the result into this model 25 | om.flushShadedColoredModel(this); 26 | 27 | } 28 | 29 | float x=0;//this will be the location x of the cloud 30 | 31 | @Override 32 | public void Update(){ 33 | 34 | //we move the cloud along x for 0.5 meter per second 35 | x+=0.5* J4Q.perSec(); 36 | 37 | //if the cloud goes too far to the right we restart the animation at -3 meters 38 | if(x>3)x=-3; 39 | 40 | //we reset the transformation 41 | transform.identity(); 42 | //and we move the cloud to the new position 43 | transform.translate(x,0,0); 44 | 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | 5 | import edu.ufl.digitalworlds.j4q.J4Q; 6 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 7 | 8 | public class MainActivity extends QuestActivity { 9 | @Override 10 | public void onCreate(Bundle savedInstanceState){ 11 | super.onCreate(savedInstanceState); 12 | } 13 | 14 | HouseScene house_scene; 15 | 16 | public void Start(){ 17 | 18 | //create a house scene object 19 | house_scene=new HouseScene(); 20 | //and append it to the scene 21 | scene.appendChild(house_scene); 22 | //move the model 5 meters deep into the scene 23 | house_scene.transform.translate(0,0,-5); 24 | 25 | //create a clouds object 26 | Clouds clouds=new Clouds(); 27 | //and append it to the house scene 28 | house_scene.appendChild(clouds); 29 | 30 | //create a car object 31 | Car car=new Car(); 32 | //and append it to the house scene 33 | house_scene.appendChild(car); 34 | 35 | 36 | //Let's pick a blue shade for background 37 | scene.background(153/255f, 204/255f, 255/255f); 38 | 39 | //set light direction forward and downwards 40 | scene.setLightDir(0,-1,-1); 41 | 42 | } 43 | 44 | @Override 45 | public void Update() { 46 | 47 | //rotate the house scene 5 degrees per second 48 | house_scene.transform.rotateY(5* J4Q.perSec()); 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectClass/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "helloobjectmaker" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloObjectMaker' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloObjectMaker/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloPolygon/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "hellopolygon" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloPolygon/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloPolygon' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloPolygon/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | 5 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 6 | import edu.ufl.digitalworlds.j4q.models.Mesh; 7 | import edu.ufl.digitalworlds.j4q.models.Model; 8 | import edu.ufl.digitalworlds.j4q.shaders.ColorShader; 9 | 10 | public class MainActivity extends QuestActivity { 11 | @Override 12 | public void onCreate(Bundle savedInstanceState){ 13 | super.onCreate(savedInstanceState); 14 | } 15 | 16 | public void Start(){ 17 | //create a 3D model object 18 | Model triangle=new Model(); 19 | 20 | //add a 3D mesh to the model 21 | triangle.mesh=new Mesh(); 22 | 23 | //add vertices to the model 24 | triangle.mesh.setXYZ(new float[]{ 25 | -1,0,0, //vertex #0: lower left corner 26 | 1,0,0, //vertex #1: lower right corner 27 | 0,1,0 //vertex #2: upper corner 28 | }); 29 | 30 | //add colors to the vertices 31 | triangle.mesh.setColors(new float[]{ 32 | 1,0,0, //vertex #0: red color 33 | 0,1,0, //vertex #1: green color 34 | 0,0,1 //vertex #2: blue color 35 | }); 36 | 37 | //make a triangular mesh 38 | triangle.mesh.setTriangles(new short[]{ 39 | 0,1,2 //Make one triangle by connecting vertices #0,#1,#2 40 | }); 41 | 42 | //add a shader to the model 43 | triangle.shader=new ColorShader(); 44 | 45 | //add the 3D model to the scene 46 | scene.appendChild(triangle); 47 | 48 | //move the triangle 1 meter along the z-axis (deep into the scene) 49 | triangle.transform.translate(0,0,-1); 50 | 51 | //Let's pick a blue shade for background 52 | scene.background(153/255f, 204/255f, 255/255f); 53 | } 54 | 55 | @Override 56 | public void Update() {} 57 | } 58 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloPolygon/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloPolygon/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "hellosolarsystem" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloSolarSystem' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | 5 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 6 | 7 | public class MainActivity extends QuestActivity { 8 | @Override 9 | public void onCreate(Bundle savedInstanceState){ 10 | super.onCreate(savedInstanceState); 11 | } 12 | 13 | public void Start(){ 14 | //Welcome to the J4Q (Java For Quest) Project! 15 | 16 | //This method will run once in the beginning of the program. 17 | //Write here code that loads your assets and composes your scene. 18 | } 19 | 20 | @Override 21 | public void Update() { 22 | //This method will run in every frame. 23 | //Write here code that modifies your variables and animates your scene. 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloSolarSystem/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloTexture/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "hellotexture" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloTexture/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:HelloTexture' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloTexture/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/HelloTexture/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/HelloTexture/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/OBJViewer/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "objviewer" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/OBJViewer/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:OBJViewer' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/OBJViewer/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | 5 | import edu.ufl.digitalworlds.j4q.J4Q; 6 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 7 | import edu.ufl.digitalworlds.j4q.formats.OBJFile; 8 | import edu.ufl.digitalworlds.j4q.models.Model; 9 | import edu.ufl.digitalworlds.j4q.shaders.PhongShader; 10 | 11 | public class MainActivity extends QuestActivity { 12 | @Override 13 | public void onCreate(Bundle savedInstanceState){ 14 | super.onCreate(savedInstanceState); 15 | } 16 | 17 | Model m; 18 | 19 | public void Start(){ 20 | 21 | OBJFile obj=new OBJFile("objects/leonardo.obj"); 22 | m=obj.getModel(); 23 | m.setShader(new PhongShader()); 24 | 25 | scene.appendChild(m); 26 | m.transform.translate(-0.5f,0f,-2); 27 | scene.setLightDir(0,0,-1); 28 | scene.background(0,0,0); 29 | } 30 | 31 | @Override 32 | public void Update() { 33 | m.transform.rotateY(20* J4Q.perSec()); 34 | m.transform.rotateX(20* J4Q.perSec()); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/OBJViewer/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/OBJViewer/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | build 6 | local.properties 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/Sandbox/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.application' 3 | apply from: "${rootProject.projectDir}/VrApp.gradle" 4 | 5 | 6 | 7 | android { 8 | // This is the name of the generated apk file, which will have 9 | // -debug.apk or -release.apk appended to it. 10 | // The filename doesn't effect the Android installation process. 11 | // Use only letters to remain compatible with the package name. 12 | project.archivesBaseName = "sandbox" 13 | 14 | 15 | defaultConfig { 16 | // Gradle replaces the manifest package with this value, which must 17 | // be unique on a system. If you don't change it, a new app 18 | // will replace an older one. 19 | applicationId "com.example.j4q." + project.archivesBaseName 20 | minSdkVersion 24 21 | targetSdkVersion 25 22 | compileSdkVersion 26 23 | 24 | // override app plugin abiFilters for 64-bit support 25 | externalNativeBuild { 26 | ndk { 27 | abiFilters 'arm64-v8a' 28 | } 29 | ndkBuild { 30 | abiFilters 'arm64-v8a' 31 | } 32 | } 33 | } 34 | 35 | sourceSets { 36 | main { 37 | manifest.srcFile 'AndroidManifest.xml' 38 | java.srcDirs = ['../../java', 'java', 'src/main/java'] 39 | jniLibs.srcDir 'libs' 40 | 41 | assets.srcDirs = ['../../assets'] 42 | } 43 | } 44 | 45 | lintOptions { 46 | disable 'ExpiredTargetSdkVersion' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Copyright 2004-present Facebook. All Rights Reserved. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/Sandbox/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 26 10:35:58 EDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE := xrcompositor 5 | 6 | 7 | LOCAL_CFLAGS += -std=c99 -Werror 8 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include/ 9 | 10 | LOCAL_SRC_FILES := ../../../Src/XrCompositor_NativeActivity.c 11 | 12 | LOCAL_LDLIBS := -lEGL -lGLESv3 -landroid -llog 13 | 14 | LOCAL_LDFLAGS := -u ANativeActivity_onCreate 15 | 16 | LOCAL_STATIC_LIBRARIES := android_native_app_glue 17 | LOCAL_SHARED_LIBRARIES := openxr_loader 18 | 19 | include $(BUILD_SHARED_LIBRARY) 20 | 21 | $(call import-module,OpenXR/Projects/AndroidPrebuilt/jni) 22 | $(call import-module,android/native_app_glue) 23 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../../ 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.projectDir = new File(settingsDir, '../../..') 2 | rootProject.name = "J4Q" 3 | 4 | include ':', \ 5 | ':JavaForQuest:Projects:Sandbox' 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/Sandbox/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | 5 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 6 | 7 | public class MainActivity extends QuestActivity { 8 | @Override 9 | public void onCreate(Bundle savedInstanceState){ 10 | super.onCreate(savedInstanceState); 11 | } 12 | 13 | public void Start(){ 14 | //Welcome to the J4Q (Java For Quest) Project! 15 | 16 | //This method will run once in the beginning of the program. 17 | //Write here code that loads your assets and composes your scene. 18 | } 19 | 20 | @Override 21 | public void Update() { 22 | //This method will run in every frame. 23 | //Write here code that modifies your variables and animates your scene. 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/Sandbox/src/main/res/drawable/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/Sandbox/src/main/res/drawable/planet.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .cxx 3 | .gradle 4 | .idea 5 | local.properties 6 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 32 5 | buildToolsVersion "29.0.2" 6 | defaultConfig { 7 | applicationId "com.example.j4q" 8 | minSdkVersion 24 9 | targetSdkVersion 32 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | sourceSets { 21 | main { 22 | java.srcDirs = ['../../../java', '../../../javax', 'src/main/java'] 23 | assets.srcDirs = ['../../../assets'] 24 | } 25 | } 26 | } 27 | 28 | dependencies { 29 | implementation fileTree(dir: 'libs', include: ['*.jar']) 30 | implementation 'androidx.appcompat:appcompat:1.1.0' 31 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 32 | testImplementation 'junit:junit:4.12' 33 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 34 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 35 | } 36 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/java/com/example/j4q/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.j4q; 2 | 3 | import android.os.Bundle; 4 | import edu.ufl.digitalworlds.j4q.activities.GyroscopicActivity; 5 | 6 | public class MainActivity extends GyroscopicActivity { 7 | @Override 8 | public void onCreate(Bundle savedInstanceState){ 9 | super.onCreate(savedInstanceState); 10 | 11 | //Enable the following line for AR-type experience (without position tracking; orientation only) 12 | //showCamera(); 13 | } 14 | 15 | public void Start(){ 16 | //Welcome to the J4Q (Java For Quest) Project! 17 | 18 | //This method will run once in the beginning of the program. 19 | //Write here code that loads your assets and composes your scene. 20 | } 21 | 22 | public void Update(){ 23 | //This method will run in every frame. 24 | //Write here code that modifies your variables and animates your scene. 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | J4Q Sandbox 3 | 4 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.5.1' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app's APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | 21 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/Projects/SandboxPhone/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Mar 09 10:24:58 EDT 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/Projects/SandboxPhone/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name='J4Q Sandbox Phone' 3 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/cubemap256.ktx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/cubemap256.ktx -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/donotdelete.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/donotdelete.txt -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/objects/cube.obj: -------------------------------------------------------------------------------- 1 | # File hand typed by Angelos 2 | 3 | mtllib Model.mtl 4 | 5 | v -0.5 0 -0.5 6 | v 0.5 0 -0.5 7 | v 0.5 0 0.5 8 | v -0.5 0 0.5 9 | v -0.5 1 -0.5 10 | v 0.5 1 -0.5 11 | v 0.5 1 0.5 12 | v -0.5 1 0.5 13 | 14 | #bottom-top 15 | usemtl material_0 16 | f 1 2 3 17 | f 1 3 4 18 | f 5 7 6 19 | f 5 8 7 20 | 21 | #back-front 22 | usemtl material_1 23 | f 2 1 5 24 | f 2 5 6 25 | f 3 7 4 26 | f 7 8 4 27 | 28 | #left-right 29 | usemtl material_0 30 | f 1 4 5 31 | f 5 4 8 32 | f 2 6 3 33 | f 6 7 3 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/textures/box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/textures/box.png -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/textures/earth_1024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/textures/earth_1024.jpg -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/textures/eso0932a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/textures/eso0932a.jpg -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/textures/metal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/textures/metal.jpg -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/textures/moon_1024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/textures/moon_1024.jpg -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/assets/textures/planet_3_d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/assets/textures/planet_3_d.jpg -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/Audio.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q; 2 | 3 | import android.content.Context; 4 | import android.content.res.AssetFileDescriptor; 5 | import android.media.MediaPlayer; 6 | 7 | import java.io.IOException; 8 | 9 | public class Audio extends MediaPlayer { 10 | 11 | public Audio(Context context, String filename){ 12 | AssetFileDescriptor descriptor = null; 13 | try { 14 | descriptor = context.getAssets().openFd(filename); 15 | setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); 16 | descriptor.close(); 17 | prepare(); 18 | } catch (IOException e) { 19 | e.printStackTrace(); 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/J4Q.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q; 2 | 3 | import android.content.Context; 4 | 5 | import edu.ufl.digitalworlds.j4q.activities.GameEngineScene; 6 | import edu.ufl.digitalworlds.j4q.activities.QuestActivity; 7 | import edu.ufl.digitalworlds.j4q.controllers.J4QLeftController; 8 | import edu.ufl.digitalworlds.j4q.controllers.J4QRightController; 9 | 10 | public class J4Q { 11 | public static Context activity; 12 | public static GameEngineScene scene; 13 | public static float perSec(){return scene.perSec();} 14 | 15 | public static J4QLeftController leftController=new J4QLeftController(); 16 | public static J4QRightController rightController=new J4QRightController(); 17 | public static native long stopHapticFeedbackLeft(); 18 | public static native long stopHapticFeedbackRight(); 19 | public static native long applyHapticFeedbackLeft(float amplitude, float seconds, int frequency); 20 | public static native long applyHapticFeedbackRight(float amplitude, float seconds, int frequency); 21 | } 22 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/activities/GameEngineActivity.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.activities; 2 | 3 | public interface GameEngineActivity { 4 | abstract public void Start(); 5 | abstract public void Update(); 6 | } 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QController.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | public class J4QController { 4 | public J4QJoystick joystick=new J4QJoystick(); 5 | public J4QPressureButton trigger=new J4QPressureButton(); 6 | public J4QPressureButton squeeze=new J4QPressureButton(); 7 | public J4QPose aim=new J4QPose(); 8 | public J4QPose grip=new J4QPose(); 9 | public boolean active=false; 10 | } 11 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QJoystick.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | public class J4QJoystick extends J4QToggleButton{ 4 | public float[] currentValue=new float[2]; 5 | public float getX(){return currentValue[0];} 6 | public float getY(){return currentValue[1];} 7 | } 8 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QLeftController.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | import edu.ufl.digitalworlds.j4q.J4Q; 4 | 5 | public class J4QLeftController extends J4QController{ 6 | public J4QToggleButton buttonX=new J4QToggleButton(); 7 | public J4QToggleButton buttonY=new J4QToggleButton(); 8 | public J4QToggleButton buttonMenu=new J4QToggleButton(); 9 | public void vibrate(float amplitude, float seconds, int frequency){ 10 | J4Q.applyHapticFeedbackLeft(amplitude,seconds,frequency); 11 | } 12 | public void stopVibration(){ 13 | J4Q.stopHapticFeedbackLeft(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QPose.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | import edu.ufl.digitalworlds.j4q.geometry.Orientation; 4 | import edu.ufl.digitalworlds.j4q.geometry.Position; 5 | 6 | public class J4QPose { 7 | public Position position=new Position(); 8 | public Orientation orientation=new Orientation(); 9 | } 10 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QPressureButton.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | public class J4QPressureButton extends J4QToggleButton{ 4 | public float currentValue=0; 5 | public float getPressure(){return currentValue;} 6 | } 7 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QRightController.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | 4 | import edu.ufl.digitalworlds.j4q.J4Q; 5 | 6 | public class J4QRightController extends J4QController { 7 | public J4QToggleButton buttonA=new J4QToggleButton(); 8 | public J4QToggleButton buttonB=new J4QToggleButton(); 9 | public void vibrate(float amplitude, float seconds, int frequency){ 10 | J4Q.applyHapticFeedbackRight(amplitude,seconds,frequency); 11 | } 12 | public void stopVibration(){ 13 | J4Q.stopHapticFeedbackRight(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/controllers/J4QToggleButton.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.controllers; 2 | 3 | public class J4QToggleButton { 4 | public boolean changedSinceLastSync=false; 5 | public boolean currentState=false; 6 | public boolean isPressed(){return currentState;} 7 | public boolean justPressed(){return changedSinceLastSync && currentState;} 8 | public boolean justReleased(){return changedSinceLastSync && !currentState;} 9 | } 10 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/geometry/Orientation.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.geometry; 2 | 3 | public class Orientation { 4 | public float w=0; 5 | public float x=0; 6 | public float y=0; 7 | public float z=0; 8 | } 9 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/geometry/Position.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.geometry; 2 | 3 | public class Position { 4 | public float x=0; 5 | public float y=0; 6 | public float z=0; 7 | 8 | public Position(){} 9 | public Position(float x,float y,float z){ 10 | this.x=x; 11 | this.y=y; 12 | this.z=z; 13 | } 14 | 15 | public float distance(Position p){ 16 | float dx=x-p.x; 17 | float dy=y-p.y; 18 | float dz=z-p.z; 19 | return (float)Math.sqrt(dx*dx+dy*dy+dz*dz); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/models/LeftController.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.models; 2 | 3 | import edu.ufl.digitalworlds.j4q.J4Q; 4 | 5 | public class LeftController extends Model{ 6 | Model aim; 7 | Model trigger; 8 | Model grip; 9 | Model squeeze; 10 | Model joystick; 11 | 12 | public LeftController(){ 13 | ObjectMaker om=new ObjectMaker(); 14 | om.color(1,0,0); 15 | om.box(0.1f,0.1f,0.1f); 16 | aim=om.flushShadedColoredModel(); 17 | appendChild(aim); 18 | 19 | om.box(0.08f,0.08f,0.1f); 20 | trigger=om.flushShadedColoredModel(); 21 | aim.appendChild(trigger); 22 | 23 | om.box(0.1f,0.1f,0.1f);; 24 | grip=om.flushShadedColoredModel(); 25 | appendChild(grip); 26 | 27 | om.box(0.1f,0.08f,0.08f); 28 | squeeze=om.flushShadedColoredModel(); 29 | grip.appendChild(squeeze); 30 | 31 | 32 | om.box(0.08f,0.1f,0.08f); 33 | joystick=om.flushShadedColoredModel(); 34 | grip.appendChild(joystick); 35 | } 36 | 37 | @Override 38 | public void Update(){ 39 | aim.transform.reset(); 40 | aim.transform.translate(J4Q.leftController.aim.position); 41 | aim.transform.rotate(J4Q.leftController.aim.orientation); 42 | 43 | trigger.transform.reset(); 44 | trigger.transform.translate(0,0,-0.1f+J4Q.leftController.trigger.currentValue*0.1f); 45 | 46 | grip.transform.reset(); 47 | grip.transform.translate(J4Q.leftController.grip.position); 48 | grip.transform.rotate(J4Q.leftController.grip.orientation); 49 | 50 | squeeze.transform.reset(); 51 | squeeze.transform.translate(0.1f-J4Q.leftController.squeeze.currentValue*0.1f,0,0); 52 | 53 | joystick.transform.reset(); 54 | joystick.transform.translate(J4Q.leftController.joystick.getX()*0.1f,0.1f,-J4Q.leftController.joystick.getY()*0.1f); 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/models/RightController.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.models; 2 | 3 | import edu.ufl.digitalworlds.j4q.J4Q; 4 | 5 | public class RightController extends Model{ 6 | Model aim; 7 | Model trigger; 8 | Model grip; 9 | Model squeeze; 10 | Model joystick; 11 | 12 | public RightController(){ 13 | ObjectMaker om=new ObjectMaker(); 14 | om.color(1,0,0); 15 | om.box(0.1f,0.1f,0.1f); 16 | aim=om.flushShadedColoredModel(); 17 | appendChild(aim); 18 | 19 | om.box(0.08f,0.08f,0.1f); 20 | trigger=om.flushShadedColoredModel(); 21 | aim.appendChild(trigger); 22 | 23 | om.box(0.1f,0.1f,0.1f);; 24 | grip=om.flushShadedColoredModel(); 25 | appendChild(grip); 26 | 27 | om.box(0.1f,0.08f,0.08f); 28 | squeeze=om.flushShadedColoredModel(); 29 | grip.appendChild(squeeze); 30 | 31 | 32 | om.box(0.08f,0.1f,0.08f); 33 | joystick=om.flushShadedColoredModel(); 34 | grip.appendChild(joystick); 35 | } 36 | 37 | @Override 38 | public void Update(){ 39 | aim.transform.reset(); 40 | aim.transform.translate(J4Q.rightController.aim.position); 41 | aim.transform.rotate(J4Q.rightController.aim.orientation); 42 | 43 | trigger.transform.reset(); 44 | trigger.transform.translate(0,0,-0.1f+J4Q.rightController.trigger.currentValue*0.1f); 45 | 46 | grip.transform.reset(); 47 | grip.transform.translate(J4Q.rightController.grip.position); 48 | grip.transform.rotate(J4Q.rightController.grip.orientation); 49 | 50 | squeeze.transform.reset(); 51 | squeeze.transform.translate(-0.1f+J4Q.rightController.squeeze.currentValue*0.1f,0,0); 52 | 53 | joystick.transform.reset(); 54 | joystick.transform.translate(J4Q.rightController.joystick.getX()*0.1f,0.1f,-J4Q.rightController.joystick.getY()*0.1f); 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/shaders/ColorShader.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.shaders; 2 | 3 | public class ColorShader extends Shader { 4 | 5 | public ColorShader() { 6 | super( 7 | "#version 300 es\n"+ 8 | "uniform SceneMatrices\n"+ 9 | "{\n"+ 10 | " uniform mat4 ViewMatrix;\n"+ 11 | " uniform mat4 ProjectionMatrix;\n"+ 12 | "uniform mat4 NormalMatrix;\n"+ 13 | " uniform vec4 uLightDir;\n"+ 14 | "} sm;\n"+ 15 | "uniform mat4 modelMatrix;\n"+ 16 | "uniform mat4 normalMatrix;\n"+ 17 | 18 | "in vec3 aPosition;\n"+ 19 | "in vec3 aColor;\n"+ 20 | "out vec4 vColor;\n"+ 21 | "void main()\n"+ 22 | "{\n"+ 23 | " gl_Position = sm.ProjectionMatrix * ( sm.ViewMatrix *modelMatrix* vec4( aPosition , 1.0 ) );\n"+ 24 | " vColor = vec4(aColor,1.0);\n"+ 25 | "}\n", 26 | 27 | 28 | "#version 300 es\n"+ 29 | "precision mediump float;\n" + 30 | "in lowp vec4 vColor;\n"+ 31 | "out lowp vec4 outColor;\n"+ 32 | 33 | "void main()\n"+ 34 | "{\n"+ 35 | " outColor = vColor;\n"+ 36 | "}\n",new String[]{"aPosition",null,"aColor"}); 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/java/edu/ufl/digitalworlds/j4q/shaders/Text.java: -------------------------------------------------------------------------------- 1 | package edu.ufl.digitalworlds.j4q.shaders; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.Canvas; 5 | import android.graphics.Color; 6 | import android.graphics.Matrix; 7 | import android.graphics.Paint; 8 | import android.graphics.PorterDuff; 9 | import android.opengl.GLES30; 10 | import android.opengl.GLUtils; 11 | 12 | public class Text extends Texture{ 13 | 14 | Bitmap bitmap; 15 | Canvas canvas; 16 | Paint paint; 17 | 18 | public Text(int width, int height) { 19 | super(); 20 | // Create a new bitmap with the specified width and height 21 | bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 22 | 23 | // Create a new canvas to draw on the bitmap 24 | canvas = new Canvas(bitmap); 25 | } 26 | 27 | public void setText(String text){ 28 | setText(text,Color.WHITE); 29 | } 30 | 31 | public void setText(String text, int red, int green, int blue){ 32 | setText(text,Color.rgb(red,green,blue)); 33 | } 34 | 35 | public void setText(String text, int color){ 36 | if(paint==null) { 37 | // Set up the paint for drawing the text 38 | paint = new Paint(); 39 | paint.setColor(color); 40 | paint.setTextSize(64); 41 | } 42 | 43 | setText(text,0,46,paint); 44 | } 45 | 46 | public void setText(String text, float x, float y, Paint paint){ 47 | 48 | canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 49 | 50 | // Draw the text on the canvas 51 | canvas.drawText(text, x, y, paint); 52 | 53 | // Bind to the texture in OpenGL 54 | GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, gles_handle); 55 | loadToGPU(bitmap); 56 | } 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /J4Q_46.0/JavaForQuest/keystore/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/JavaForQuest/keystore/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright © Facebook Technologies, LLC and its affiliates. All rights reserved. 2 | 3 | Your use of this SDK or tool is subject to the Oculus SDK License Agreement, available at https://developer.oculus.com/licenses/oculussdk/ -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Include/openxr/meta_local_dimming.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | Filename : meta_local_dimming.h 5 | Content : Local dimming extension. 6 | Merge Request : https://gitlab.khronos.org/openxr/openxr/-/merge_requests/2267 7 | Language : C99 8 | *************************************************************************************/ 9 | 10 | #pragma once 11 | 12 | #include 13 | 14 | /* 15 | Extension 217 XR_META_local_dimming 16 | */ 17 | 18 | #if defined(__cplusplus) 19 | extern "C" { 20 | #endif 21 | 22 | 23 | #ifndef XR_META_local_dimming 24 | #define XR_META_local_dimming 1 25 | #define XR_META_local_dimming_SPEC_VERSION 1 26 | #define XR_META_LOCAL_DIMMING_EXTENSION_NAME "XR_META_local_dimming" 27 | 28 | typedef enum XrLocalDimmingModeMETA { 29 | XR_LOCAL_DIMMING_MODE_OFF_META = 0, 30 | XR_LOCAL_DIMMING_MODE_ON_META = 1, 31 | XR_LOCAL_DIMMING_MODE_MAX_ENUM_META = 0x7FFFFFFF 32 | } XrLocalDimmingModeMETA; 33 | 34 | XR_STRUCT_ENUM(XR_TYPE_FRAME_END_INFO_LOCAL_DIMMING_META, 1000216000); 35 | struct XrLocalDimmingFrameEndInfoMETA { 36 | XrStructureType type; 37 | const void* XR_MAY_ALIAS next; 38 | XrLocalDimmingModeMETA localDimmingMode; 39 | }; 40 | 41 | #endif // XR_META_local_dimming 42 | 43 | #ifdef __cplusplus 44 | } 45 | #endif 46 | -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Include/openxr/openxr_extension_helpers.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : openxr_extension_helpers.h 6 | Content : Helpers for private and experimental extension definition headers. 7 | Language : C99 8 | 9 | *************************************************************************************/ 10 | 11 | #pragma once 12 | 13 | #include 14 | 15 | #define XR_ENUM(type, enm, constant) static const type enm = (type)constant 16 | #define XR_STRUCT_ENUM(enm, constant) XR_ENUM(XrStructureType, enm, constant) 17 | #define XR_REFSPACE_ENUM(enm, constant) XR_ENUM(XrReferenceSpaceType, enm, constant) 18 | #define XR_RESULT_ENUM(enm, constant) XR_ENUM(XrResult, enm, constant) 19 | #define XR_COMPONENT_ENUM(enm, constant) XR_ENUM(XrComponentTypeFB, enm, constant) 20 | -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Include/openxr/openxr_oculus.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : openxr_oculus.h 6 | Content : Oculus OpenXR Extensions. 7 | Language : C99 8 | 9 | *************************************************************************************/ 10 | 11 | #ifndef OPENXR_OCULUS_H_ 12 | #define OPENXR_OCULUS_H_ 1 13 | 14 | #if defined(__cplusplus) 15 | extern "C" { 16 | #endif 17 | 18 | // XR_KHR_loader_init and XR_KHR_loader_init_android now available in 1.0.11 public spec. 19 | 20 | #ifdef __cplusplus 21 | } 22 | #endif 23 | 24 | #endif // OPENXR_OCULUS_H_ 25 | -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Libs/Android/arm64-v8a/Debug/libopenxr_loader.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/OpenXR/Libs/Android/arm64-v8a/Debug/libopenxr_loader.so -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Libs/Android/arm64-v8a/Release/libopenxr_loader.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/OpenXR/Libs/Android/arm64-v8a/Release/libopenxr_loader.so -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Libs/Android/armeabi-v7a/Debug/libopenxr_loader.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/OpenXR/Libs/Android/armeabi-v7a/Debug/libopenxr_loader.so -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Libs/Android/armeabi-v7a/Release/libopenxr_loader.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/OpenXR/Libs/Android/armeabi-v7a/Release/libopenxr_loader.so -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Projects/AndroidPrebuilt/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/OpenXR/Projects/AndroidPrebuilt/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | 3 | ifeq ($(OVR_DEBUG),1) 4 | BUILDTYPE := Debug 5 | else 6 | BUILDTYPE := Release 7 | endif 8 | 9 | #-------------------------------------------------------- 10 | # libopenxr_loader.so 11 | # 12 | # OpenXR Loader 13 | #-------------------------------------------------------- 14 | include $(CLEAR_VARS) 15 | 16 | LOCAL_MODULE := openxr_loader 17 | 18 | LOCAL_SRC_FILES := ../../../Libs/Android/$(TARGET_ARCH_ABI)/$(BUILDTYPE)/lib$(LOCAL_MODULE).so 19 | 20 | # only export public headers 21 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../Include 22 | 23 | # NOTE: This check is added to prevent the following error when running a "make clean" where 24 | # the prebuilt lib may have been deleted: "LOCAL_SRC_FILES points to a missing file" 25 | ifneq (,$(wildcard $(LOCAL_PATH)/$(LOCAL_SRC_FILES))) 26 | include $(PREBUILT_SHARED_LIBRARY) 27 | endif 28 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Projects/Android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Projects/Android/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Projects/Android/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | 6 | defaultConfig { 7 | minSdkVersion 24 8 | targetSdkVersion 25 9 | 10 | externalNativeBuild { 11 | ndk { 12 | abiFilters 'arm64-v8a' 13 | } 14 | ndkBuild { 15 | targets "samplecommon" 16 | 17 | def numProcs = Runtime.runtime.availableProcessors() 18 | arguments "V=0", "-j$numProcs", "-C$project.buildDir.parent" 19 | abiFilters 'arm64-v8a' 20 | } 21 | } 22 | } 23 | 24 | externalNativeBuild { 25 | ndkBuild { 26 | path 'jni/Android.mk' 27 | } 28 | } 29 | 30 | buildTypes { 31 | debug { 32 | debuggable true 33 | jniDebuggable true 34 | 35 | externalNativeBuild { 36 | ndkBuild { 37 | arguments "NDK_DEBUG=1","OVR_DEBUG=1","USE_ASAN=1" 38 | } 39 | } 40 | } 41 | 42 | release { 43 | debuggable false 44 | jniDebuggable false 45 | 46 | externalNativeBuild { 47 | ndkBuild { 48 | arguments "NDK_DEBUG=0","OVR_DEBUG=0","USE_ASAN=0" 49 | } 50 | } 51 | } 52 | } 53 | 54 | sourceSets { 55 | main { 56 | manifest.srcFile 'AndroidManifest.xml' 57 | java.srcDirs = ['../../java'] 58 | res.srcDirs = ['../../res'] 59 | } 60 | } 61 | } 62 | 63 | task( "cleanWorkAround" ) { 64 | description "Workaround for .externalNativeBuild not being deleted on clean" 65 | }.doLast { 66 | project.delete project.file( ".externalNativeBuild" ) 67 | } 68 | 69 | // WORKAROUND: On Mac OS X, running ndk-build clean with a high num of parallel executions 70 | // set may result in the following build error: rm: fts_read: No such file or directory. 71 | // Currently, there isn't a good way to specify numProcs=1 only on clean. So, in order 72 | // to work around the issue, delete the auto-generated .externalNativeBuild artifacts 73 | // (where $numProcs specified) before executing the clean task. 74 | clean.dependsOn cleanWorkAround 75 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Projects/Android/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Projects/Android/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../.. 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/CompilerUtils.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /******************************************************************************* 4 | 5 | Filename : CompilerUtils.h 6 | Content : Macros and utilities for compile-time validation. 7 | Created : March 20, 2018 8 | Authors : Jonathan Wright 9 | Language : C++ 10 | 11 | *******************************************************************************/ 12 | 13 | #pragma once 14 | 15 | // included here with the intention of implementing a custom assert macro later. 16 | #include 17 | 18 | #ifndef OVR_UNUSED 19 | #define OVR_UNUSED(a) (void)(a) 20 | #endif 21 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/ActionComponents.cpp: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : ActionComponents.h 6 | Content : Misc. VRMenu Components to handle actions 7 | Created : September 12, 2014 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #include "ActionComponents.h" 13 | #include "Misc/Log.h" 14 | 15 | namespace OVRFW { 16 | 17 | //============================== 18 | // OvrButton_OnUp::OnEvent_Impl 19 | eMsgStatus OvrButton_OnUp::OnEvent_Impl( 20 | OvrGuiSys& guiSys, 21 | ovrApplFrameIn const& vrFrame, 22 | VRMenuObject* self, 23 | VRMenuEvent const& event) { 24 | assert(event.EventType == VRMENU_EVENT_TOUCH_UP); 25 | ALOG("Button id %lli clicked", ButtonId.Get()); 26 | Menu->OnItemEvent(guiSys, vrFrame, ButtonId, event); 27 | return MSG_STATUS_CONSUMED; 28 | } 29 | 30 | } // namespace OVRFW 31 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/ActionComponents.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : ActionComponents.h 6 | Content : Misc. VRMenu Components to handle actions 7 | Created : September 12, 2014 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include "VRMenuComponent.h" 15 | #include "VRMenu.h" 16 | 17 | namespace OVRFW { 18 | 19 | class VRMenu; 20 | 21 | //============================================================== 22 | // OvrButton_OnUp 23 | // This is a generic component that forwards a touch up to a menu (normally its owner) 24 | class OvrButton_OnUp : public VRMenuComponent_OnTouchUp { 25 | public: 26 | static const int TYPE_ID = 1010; 27 | 28 | OvrButton_OnUp(VRMenu* menu, VRMenuId_t const buttonId) 29 | : VRMenuComponent_OnTouchUp(), Menu(menu), ButtonId(buttonId) {} 30 | 31 | void SetID(VRMenuId_t newButtonId) { 32 | ButtonId = newButtonId; 33 | } 34 | 35 | virtual int GetTypeId() const { 36 | return TYPE_ID; 37 | } 38 | 39 | private: 40 | virtual eMsgStatus OnEvent_Impl( 41 | OvrGuiSys& guiSys, 42 | ovrApplFrameIn const& vrFrame, 43 | VRMenuObject* self, 44 | VRMenuEvent const& event); 45 | 46 | private: 47 | VRMenu* Menu; // menu that holds the button 48 | VRMenuId_t ButtonId; // id of the button this control handles 49 | }; 50 | 51 | } // namespace OVRFW 52 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/Lerp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | /************************************************************************************ 11 | 12 | Filename : Lerp.h 13 | Content : Simple floating point interpolation. 14 | Created : 8/25/2014 15 | Authors : John Carmack 16 | 17 | *************************************************************************************/ 18 | 19 | #pragma once 20 | 21 | #include "OVR_Math.h" 22 | 23 | namespace OVRFW { 24 | 25 | class Lerp { 26 | public: 27 | Lerp() : startDomain(0.0), endDomain(0.0), startValue(0.0), endValue(0.0) {} 28 | 29 | void Set(double startDomain_, double startValue_, double endDomain_, double endValue_) { 30 | startDomain = startDomain_; 31 | endDomain = endDomain_; 32 | startValue = startValue_; 33 | endValue = endValue_; 34 | } 35 | 36 | double Value(double domain) const { 37 | const double f = 38 | clamp((domain - startDomain) / (endDomain - startDomain), 0.0, 1.0); 39 | return startValue * (1.0 - f) + endValue * f; 40 | } 41 | 42 | double startDomain; 43 | double endDomain; 44 | double startValue; 45 | double endValue; 46 | }; 47 | 48 | } // namespace OVRFW 49 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/ReflectionData.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : ReflectionData.h 6 | Content : Data for introspection and reflection of C++ objects. 7 | Created : 11/16/2015 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include "Reflection.h" 15 | 16 | #define MEMBER_SIZE(type_, member_) sizeof(((type_*)0)->member_) 17 | 18 | namespace OVRFW { 19 | 20 | //============================================================================================= 21 | // Reflection Data 22 | //============================================================================================= 23 | 24 | extern ovrTypeInfo TypeInfoList[]; 25 | 26 | } // namespace OVRFW 27 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/SoundLimiter.cpp: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : SoundLimiter.cpp 6 | Content : Utility class for limiting how often sounds play. 7 | Created : June 23, 2014 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #include "SoundLimiter.h" 13 | #include "GuiSys.h" 14 | 15 | #include "OVR_Types.h" 16 | #include "OVR_TypesafeNumber.h" 17 | #include "OVR_BitFlags.h" 18 | #include "OVR_Math.h" 19 | #include "OVR_Std.h" 20 | 21 | #include "System.h" 22 | 23 | namespace OVRFW { 24 | 25 | //============================== 26 | // ovrSoundLimiter::PlaySound 27 | void ovrSoundLimiter::PlaySoundEffect( 28 | OvrGuiSys& guiSys, 29 | char const* soundName, 30 | double const limitSeconds) { 31 | double curTime = GetTimeInSeconds(); 32 | double t = curTime - LastPlayTime; 33 | // LOG_WITH_TAG( "VrMenu", "PlaySoundEffect( '%s', %.2f ) - t == %.2f : %s", soundName, 34 | // limitSeconds, t, t >= limitSeconds ? "PLAYING" : "SKIPPING" ); 35 | if (t >= limitSeconds) { 36 | guiSys.GetSoundEffectPlayer().Play(soundName); 37 | LastPlayTime = curTime; 38 | } 39 | } 40 | 41 | void ovrSoundLimiter::PlayMenuSound( 42 | OvrGuiSys& guiSys, 43 | char const* appendKey, 44 | char const* soundName, 45 | double const limitSeconds) { 46 | char overrideSound[1024]; 47 | OVR::OVR_sprintf(overrideSound, 1024, "%s_%s", appendKey, soundName); 48 | 49 | if (guiSys.GetSoundEffectPlayer().Has(overrideSound)) { 50 | PlaySoundEffect(guiSys, overrideSound, limitSeconds); 51 | } else { 52 | PlaySoundEffect(guiSys, soundName, limitSeconds); 53 | } 54 | } 55 | 56 | } // namespace OVRFW 57 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/SoundLimiter.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : SoundLimiter.cpp 6 | Content : Utility class for limiting how often sounds play. 7 | Created : June 23, 2014 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | namespace OVRFW { 15 | 16 | class OvrGuiSys; 17 | 18 | //============================================================== 19 | // ovrSoundLimiter 20 | class ovrSoundLimiter { 21 | public: 22 | ovrSoundLimiter() : LastPlayTime(0.0) {} 23 | 24 | void PlaySoundEffect(OvrGuiSys& guiSys, char const* soundName, double const limitSeconds); 25 | // Checks if menu specific sounds exists before playing the default vrappframework sound passed 26 | // in. 27 | void PlayMenuSound( 28 | OvrGuiSys& guiSys, 29 | char const* menuName, 30 | char const* soundName, 31 | double const limitSeconds); 32 | 33 | private: 34 | double LastPlayTime; 35 | }; 36 | 37 | } // namespace OVRFW 38 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/VRMenuComponent.cpp: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : VRMenuComponent.h 6 | Content : Menuing system for VR apps. 7 | Created : June 23, 2014 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #include "VRMenuComponent.h" 13 | #include "VRMenuMgr.h" 14 | 15 | namespace OVRFW { 16 | 17 | const char* VRMenuComponent::TYPE_NAME = ""; 18 | 19 | //============================== 20 | // VRMenuComponent::OnEvent 21 | eMsgStatus VRMenuComponent::OnEvent( 22 | OvrGuiSys& guiSys, 23 | ovrApplFrameIn const& vrFrame, 24 | VRMenuObject* self, 25 | VRMenuEvent const& event) { 26 | assert(self != NULL); 27 | 28 | //------------------- 29 | // do any pre work that every event handler must do 30 | //------------------- 31 | 32 | // LOG_WITH_TAG( "VrMenu", "OnEvent '%s' for '%s'", VRMenuEventTypeNames[event.EventType], 33 | // self->GetText().ToCStr() ); 34 | 35 | // call the overloaded implementation 36 | eMsgStatus status = OnEvent_Impl(guiSys, vrFrame, self, event); 37 | 38 | //------------------- 39 | // do any post work that every event handle must do 40 | //------------------- 41 | 42 | // When new items are added to a menu, the menu sends VRMENU_EVENT_INIT again so that those 43 | // components will be initialized. In order to prevent components from getting initialized 44 | // a second time, components clear their VRMENU_EVENT_INIT flag after each init event. 45 | if (event.EventType == VRMENU_EVENT_INIT) { 46 | EventFlags &= ~VRMenuEventFlags_t(VRMENU_EVENT_INIT); 47 | } 48 | 49 | return status; 50 | } 51 | 52 | } // namespace OVRFW 53 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/GUI/VRMenuEvent.cpp: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : VRMenuEvent.cpp 6 | Content : Event class for menu events. 7 | Created : June 23, 2014 8 | Authors : Jonathan E. Wright 9 | 10 | *************************************************************************************/ 11 | 12 | #include "VRMenuEvent.h" 13 | 14 | namespace OVRFW { 15 | 16 | char const* VRMenuEvent::EventTypeNames[] = { 17 | "VRMENU_EVENT_FOCUS_GAINED", 18 | "VRMENU_EVENT_FOCUS_LOST", 19 | "VRMENU_EVENT_TOUCH_DOWN", 20 | "VRMENU_EVENT_TOUCH_UP", 21 | "VRMENU_EVENT_TOUCH_RELATIVE", 22 | "VRMENU_EVENT_TOUCH_ABSOLUTE", 23 | "VRMENU_EVENT_SWIPE_FORWARD", 24 | "VRMENU_EVENT_SWIPE_BACK", 25 | "VRMENU_EVENT_SWIPE_UP", 26 | "VRMENU_EVENT_SWIPE_DOWN", 27 | "VRMENU_EVENT_FRAME_UPDATE", 28 | "VRMENU_EVENT_SUBMIT_FOR_RENDERING", 29 | "VRMENU_EVENT_RENDER", 30 | "VRMENU_EVENT_OPENING", 31 | "VRMENU_EVENT_OPENED", 32 | "VRMENU_EVENT_CLOSING", 33 | "VRMENU_EVENT_CLOSED", 34 | "VRMENU_EVENT_INIT", 35 | "VRMENU_EVENT_SELECTED", 36 | "VRMENU_EVENT_DESELECTED", 37 | "VRMENU_EVENT_UPDATE_OBJECT", 38 | "VRMENU_EVENT_SWIPE_COMPLETE", 39 | "VRMENU_EVENT_ITEM_ACTION_COMPLETE"}; 40 | 41 | } // namespace OVRFW 42 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/Input/ArmModel.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : ArmModel.h 6 | Content : An arm model for the tracked remote 7 | Created : 2/20/2017 8 | Authors : Jonathan E. Wright 9 | 10 | ************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include 15 | 16 | #include "OVR_Types.h" 17 | 18 | #include "Skeleton.h" 19 | 20 | namespace OVRFW { 21 | 22 | class ovrArmModel { 23 | public: 24 | enum ovrHandedness { HAND_UNKNOWN = -1, HAND_LEFT, HAND_RIGHT, HAND_MAX }; 25 | 26 | ovrArmModel(); 27 | 28 | void InitSkeleton(bool isLeft); 29 | 30 | void Update( 31 | const OVR::Posef& headPose, 32 | const OVR::Posef& remotePose, 33 | const ovrHandedness handedness, 34 | const bool recenteredController, 35 | OVR::Posef& outPose); 36 | 37 | const ovrSkeleton& GetSkeleton() const { 38 | return Skeleton; 39 | } 40 | ovrSkeleton& GetSkeleton() { 41 | return Skeleton; 42 | } 43 | const std::vector& GetTransformedJoints() const { 44 | return TransformedJoints; 45 | } 46 | 47 | private: 48 | ovrSkeleton Skeleton; 49 | OVR::Posef FootPose; 50 | std::vector TransformedJoints; 51 | 52 | float LastUnclampedRoll; 53 | 54 | float TorsoYaw; // current yaw of the torso 55 | bool TorsoTracksHead; // true to make the torso track the head 56 | bool ForceRecenter; // true to force the torso to the head yaw 57 | 58 | int ClavicleJointIdx; 59 | int ShoulderJointIdx; 60 | int ElbowJointIdx; 61 | int WristJointIdx; 62 | }; 63 | 64 | } // namespace OVRFW 65 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/Input/AxisRenderer.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : AxisRenderer.h 6 | Content : A rendering component for axis 7 | Created : September 2020 8 | Authors : Federico Schliemann 9 | 10 | ************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include 15 | 16 | #include "OVR_Math.h" 17 | #include "FrameParams.h" 18 | #include "Render/SurfaceRender.h" 19 | #include "Render/GlProgram.h" 20 | 21 | namespace OVRFW { 22 | 23 | class ovrAxisRenderer { 24 | public: 25 | ovrAxisRenderer() = default; 26 | ~ovrAxisRenderer() = default; 27 | 28 | bool Init(size_t count = 64, float size = 0.025f); 29 | void Shutdown(); 30 | void Update(const std::vector& points); 31 | void Update(const OVR::Posef* points, size_t count); 32 | void Render( 33 | const OVR::Matrix4f& worldMatrix, 34 | const OVRFW::ovrApplFrameIn& in, 35 | OVRFW::ovrRendererOutput& out); 36 | 37 | private: 38 | float AxisSize; 39 | GlProgram ProgAxis; 40 | ovrSurfaceDef AxisSurfaceDef; 41 | ovrDrawSurface AxisSurface; 42 | std::vector TransformMatrices; 43 | GlBuffer InstancedBoneUniformBuffer; 44 | size_t Count; 45 | }; 46 | 47 | } // namespace OVRFW 48 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/Input/ControllerRenderer.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : ControllerRenderer.h 6 | Content : A one stop for rendering controllers 7 | Created : July 2020 8 | Authors : Federico Schliemann 9 | 10 | ************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include 15 | #include 16 | #include 17 | 18 | /// Sample Framework 19 | #include "Model/SceneView.h" 20 | #include "Model/ModelFile.h" 21 | #include "Render/GlProgram.h" 22 | #include "Render/SurfaceRender.h" 23 | 24 | #include "OVR_Math.h" 25 | 26 | namespace OVRFW { 27 | 28 | class ControllerRenderer { 29 | public: 30 | ControllerRenderer() = default; 31 | ~ControllerRenderer() = default; 32 | 33 | bool Init( 34 | bool leftController, 35 | OVRFW::ovrFileSys* fileSys = nullptr, 36 | const char* controllerModelFile = nullptr); 37 | void Shutdown(); 38 | void Update(const OVR::Posef& pose); 39 | void Render(std::vector& surfaceList); 40 | 41 | bool IsLeft() const { 42 | return isLeftController; 43 | } 44 | 45 | void LoadModelFromResource(OVRFW::ovrFileSys* fileSys, const char* controllerModelFile); 46 | 47 | public: 48 | OVR::Vector3f SpecularLightDirection; 49 | OVR::Vector3f SpecularLightColor; 50 | OVR::Vector3f AmbientLightColor; 51 | 52 | private: 53 | bool isLeftController; 54 | OVRFW::GlProgram ProgControllerTexture; 55 | OVRFW::GlProgram ProgControllerColor; 56 | OVRFW::ovrSurfaceDef ControllerSurfaceDef; 57 | OVRFW::ovrDrawSurface ControllerSurface; 58 | OVRFW::ModelFile* Model; 59 | }; 60 | 61 | } // namespace OVRFW 62 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/Model/ModelRender.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : ModelRender.h 6 | Content : Optimized OpenGL rendering path 7 | Created : August 9, 2013 8 | Authors : John Carmack 9 | 10 | ************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include "OVR_Math.h" 15 | #include "Render/SurfaceRender.h" 16 | #include "ModelFile.h" 17 | 18 | #include 19 | 20 | namespace OVRFW { 21 | // The model surfaces are culled and added to the sorted surface list. 22 | // Application specific surfaces from the emit list are also added to the sorted surface list. 23 | // The surface list is sorted such that opaque surfaces come first, sorted front-to-back, 24 | // and transparent surfaces come last, sorted back-to-front. 25 | void BuildModelSurfaceList( 26 | std::vector& surfaceList, 27 | const std::vector& emitNodes, 28 | const std::vector& emitSurfaces, 29 | const OVR::Matrix4f& viewMatrix, 30 | const OVR::Matrix4f& projectionMatrix); 31 | 32 | } // namespace OVRFW 33 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/OVR_BinaryFile2.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : OVR_BinaryFile2.h 6 | Content : Simple helper class to read a binary file. 7 | Created : Jun, 2014 8 | Authors : J.M.P. van Waveren 9 | 10 | *************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include "OVR_Types.h" 15 | #include 16 | 17 | /* 18 | This is a simple helper class to read binary data next to a JSON file. 19 | */ 20 | 21 | namespace OVRFW { 22 | 23 | class BinaryReader { 24 | public: 25 | BinaryReader(const uint8_t* binData, const int binSize) 26 | : Data(binData), Size(binSize), Offset(0), Allocated(false) {} 27 | ~BinaryReader(); 28 | 29 | BinaryReader(const char* path, const char** perror); 30 | 31 | uint32_t ReadUInt32() const { 32 | const int bytes = sizeof(uint32_t); 33 | if (Data == NULL || bytes > Size - Offset) { 34 | return 0; 35 | } 36 | Offset += bytes; 37 | return *(uint32_t*)(Data + Offset - bytes); 38 | } 39 | 40 | template 41 | bool ReadArray(std::vector<_type_>& out, const int numElements) const { 42 | const int bytes = numElements * sizeof(out[0]); 43 | if (Data == NULL || bytes > Size - Offset) { 44 | out.resize(0); 45 | return false; 46 | } 47 | out.resize(numElements); 48 | memcpy(out.data(), &Data[Offset], bytes); 49 | Offset += bytes; 50 | return true; 51 | } 52 | 53 | bool IsAtEnd() const { 54 | return (Offset == Size); 55 | } 56 | 57 | private: 58 | const uint8_t* Data; 59 | int32_t Size; 60 | mutable int32_t Offset; 61 | bool Allocated; 62 | }; 63 | 64 | std::vector MemBufferFile(const char* fileName); 65 | 66 | } // namespace OVRFW 67 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/Render/GlBuffer.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : GlBuffer.h 6 | Content : OpenGL Buffer Management. 7 | Created : 8 | Authors : 9 | 10 | *************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include "Egl.h" 15 | 16 | namespace OVRFW { 17 | 18 | enum GlBufferType_t { 19 | GLBUFFER_TYPE_UNIFORM, 20 | }; 21 | 22 | class GlBuffer { 23 | public: 24 | GlBuffer(); 25 | 26 | bool Create(const GlBufferType_t type, const size_t dataSize, const void* data); 27 | void Destroy(); 28 | 29 | void Update(const size_t updateDataSize, const void* data) const; 30 | 31 | void* MapBuffer() const; 32 | void UnmapBuffer() const; 33 | 34 | unsigned int GetBuffer() const { 35 | return buffer; 36 | } 37 | size_t GetSize() const { 38 | return size; 39 | } 40 | 41 | private: 42 | unsigned int target; 43 | unsigned int buffer; 44 | size_t size; 45 | }; 46 | 47 | } // namespace OVRFW 48 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/Render/Ribbon.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /************************************************************************************ 4 | 5 | Filename : Ribbon.h 6 | Content : Class that renders connected polygon strips from a list of points 7 | Created : 6/16/2017 8 | Authors : Jonathan E. Wright 9 | 10 | ************************************************************************************/ 11 | 12 | #pragma once 13 | 14 | #include 15 | 16 | #include "OVR_Math.h" 17 | #include "PointList.h" 18 | #include "SurfaceRender.h" 19 | 20 | namespace OVRFW { 21 | 22 | //============================================================== 23 | // ovrRibbon 24 | class ovrRibbon { 25 | public: 26 | ovrRibbon(const ovrPointList& pointList, const float width, const OVR::Vector4f& color); 27 | ~ovrRibbon(); 28 | 29 | void AddPoint(ovrPointList& pointList, const OVR::Vector3f& point); 30 | void Update( 31 | const ovrPointList& pointList, 32 | const OVR::Matrix4f& centerViewMatrix, 33 | const bool invertAlpha); 34 | void GenerateSurfaceList(std::vector& surfaceList) const; 35 | 36 | private: 37 | float HalfWidth; 38 | OVR::Vector4f Color; 39 | ovrSurfaceDef Surface; 40 | GlTexture Texture; 41 | }; 42 | 43 | } // namespace OVRFW 44 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/System.cpp: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /******************************************************************************* 4 | 5 | Filename : System.cpp 6 | Content : Global system functions. 7 | Created : February 21, 2018 8 | Authors : J.M.P. van Waveren, Jonathan Wright 9 | Language : C++ 10 | 11 | *******************************************************************************/ 12 | 13 | #include "System.h" 14 | 15 | #include 16 | #include "time.h" 17 | #include 18 | 19 | namespace OVRFW { 20 | 21 | double GetTimeInSeconds() { 22 | struct timespec now; 23 | #if !defined(WIN32) 24 | clock_gettime(CLOCK_MONOTONIC, &now); 25 | #else 26 | timespec_get(&now, TIME_UTC); 27 | #endif 28 | return (now.tv_sec * 1e9 + now.tv_nsec) * 0.000000001; 29 | } 30 | 31 | } // namespace OVRFW 32 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/Src/System.h: -------------------------------------------------------------------------------- 1 | // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 2 | 3 | /******************************************************************************* 4 | 5 | Filename : System.h 6 | Content : Global system functions. 7 | Created : February 21, 2018 8 | Authors : J.M.P. van Waveren, Jonathan Wright 9 | Language : C++ 10 | 11 | *******************************************************************************/ 12 | 13 | #pragma once 14 | 15 | #include "Misc/Log.h" 16 | 17 | namespace OVRFW { 18 | 19 | double GetTimeInSeconds(); 20 | 21 | } // namespace OVRFW 22 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/raw/efigs_sdf.ktx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/SampleCommon/res/raw/efigs_sdf.ktx -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/raw/loading_indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/SampleCommon/res/raw/loading_indicator.png -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/raw/sound_assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "Sounds": { 3 | "sv_active_to_drag": "sv_active_to_drag.wav", 4 | "sv_deselect": "sv_deselect.wav", 5 | "sv_focusgained": "sv_focusgained.wav", 6 | "sv_panel_touch_down": "sv_panel_touch_down.wav", 7 | "sv_panel_touch_up": "sv_panel_touch_up.wav", 8 | "sv_release": "sv_release.wav", 9 | "sv_release_active": "sv_release_active.wav", 10 | "sv_select": "sv_select.wav", 11 | "sv_simple_swipe": "sv_simple_swipe.wav", 12 | "sv_swipe": "sv_swipe.wav", 13 | "sv_touch_active": "sv_touch_active.wav", 14 | "sv_touch_inactive": "sv_touch_inactive.wav" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values-el/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | greek.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values-ja/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values-ko/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | korean.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values-zh-rCN/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values-zh-rHK/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values-zh-rTW/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleCommon/res/values/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | efigs.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/Projects/Android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/Projects/Android/build.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/Projects/Android/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/Projects/Android/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | include $(LOCAL_PATH)/../../../../cflags.mk 5 | 6 | LOCAL_MODULE := samplexrframework 7 | 8 | # full speed arm instead of thumb 9 | LOCAL_ARM_MODE := arm 10 | # compile with neon support enabled 11 | LOCAL_ARM_NEON := true 12 | 13 | 14 | LOCAL_CFLAGS += -Wno-invalid-offsetof 15 | LOCAL_C_INCLUDES := \ 16 | $(LOCAL_PATH)/../../../../SampleCommon/Src \ 17 | $(LOCAL_PATH)/../../../Src \ 18 | $(LOCAL_PATH)/../../../../1stParty/OVR/Include \ 19 | $(LOCAL_PATH)/../../../../1stParty/utilities/include \ 20 | $(LOCAL_PATH)/../../../../3rdParty/stb/src \ 21 | $(LOCAL_PATH)/../../../../3rdParty/khronos/openxr/OpenXR-SDK/include \ 22 | $(LOCAL_PATH)/../../../../OpenXR/Include \ 23 | 24 | LOCAL_STATIC_LIBRARIES += minizip stb android_native_app_glue samplecommon 25 | LOCAL_SRC_FILES := \ 26 | ../../../Src/XrApp.cpp \ 27 | ../../../Src/Input/HandMaskRenderer.cpp \ 28 | ../../../Src/Input/HandRenderer.cpp \ 29 | ../../../Src/Render/Framebuffer.cpp \ 30 | 31 | # start building based on everything since CLEAR_VARS 32 | include $(BUILD_STATIC_LIBRARY) 33 | 34 | $(call import-module,3rdParty/minizip/build/android/jni) 35 | $(call import-module,3rdParty/stb/build/android/jni) 36 | $(call import-module,android/native_app_glue) 37 | $(call import-module,SampleCommon/Projects/Android/jni) 38 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/Projects/Android/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # MAKEFILE_LIST specifies the current used Makefiles, of which this is the last 2 | # one. I use that to obtain the Application.mk dir then import the root 3 | # Application.mk. 4 | ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))../../../.. 5 | 6 | NDK_MODULE_PATH := $(ROOT_DIR) 7 | 8 | # ndk-r14 introduced failure for missing dependencies. If 'false', the clean 9 | # step will error as we currently remove prebuilt artifacts on clean. 10 | APP_ALLOW_MISSING_DEPS=true 11 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/raw/efigs_sdf.ktx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/SampleXrFramework/res/raw/efigs_sdf.ktx -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/raw/loading_indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/SampleXrFramework/res/raw/loading_indicator.png -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/raw/sound_assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "Sounds": { 3 | "sv_active_to_drag": "sv_active_to_drag.wav", 4 | "sv_deselect": "sv_deselect.wav", 5 | "sv_focusgained": "sv_focusgained.wav", 6 | "sv_panel_touch_down": "sv_panel_touch_down.wav", 7 | "sv_panel_touch_up": "sv_panel_touch_up.wav", 8 | "sv_release": "sv_release.wav", 9 | "sv_release_active": "sv_release_active.wav", 10 | "sv_select": "sv_select.wav", 11 | "sv_simple_swipe": "sv_simple_swipe.wav", 12 | "sv_swipe": "sv_swipe.wav", 13 | "sv_touch_active": "sv_touch_active.wav", 14 | "sv_touch_inactive": "sv_touch_inactive.wav" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values-el/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | greek.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values-ja/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values-ko/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | korean.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values-zh-rCN/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values-zh-rHK/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values-zh-rTW/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | japanese.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/SampleXrFramework/res/values/assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | efigs.fnt 6 | 7 | -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/build/android.debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/bin/scripts/build/android.debug.keystore -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/build/build.py.bat: -------------------------------------------------------------------------------- 1 | @"%~dp0\..\python.bat" build.py %1 %2 %3 %4 %5 2 | -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/build/ovrbuild_keystore.py.bat: -------------------------------------------------------------------------------- 1 | @%~dp0..\python.bat %~dp0ovrbuild_keystore.py 2 | -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/build/perproject/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. 3 | 4 | # This first bit of code is common bootstrapping code 5 | # to determine the SDK root, and to set up the import 6 | # path for additional python code. 7 | 8 | # begin bootstrap 9 | import os 10 | import sys 11 | 12 | 13 | def init(): 14 | root = os.path.realpath(os.path.dirname(os.path.realpath(__file__))) 15 | os.chdir(root) # make sure we are always executing from the project directory 16 | while os.path.isdir(os.path.join(root, "bin/scripts/build")) == False: 17 | root = os.path.realpath(os.path.join(root, "..")) 18 | if ( 19 | len(root) <= 5 20 | ): # Should catch both Posix and Windows root directories (e.g. '/' and 'C:\') 21 | print("Unable to find SDK root. Exiting.") 22 | sys.exit(1) 23 | root = os.path.abspath(root) 24 | os.environ["OCULUS_SDK_PATH"] = root 25 | sys.path.append(root + "/bin/scripts/build") 26 | 27 | 28 | init() 29 | import ovrbuild 30 | 31 | ovrbuild.init() 32 | # end bootstrap 33 | 34 | 35 | ovrbuild.build() 36 | -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/build/perproject/build.py.bat: -------------------------------------------------------------------------------- 1 | @rem Only edit the master copy of this file in SDK_ROOT/bin/scripts/build/perproject 2 | 3 | @setlocal enableextensions enabledelayedexpansion 4 | 5 | @if not exist "build.gradle" @echo Build script must be executed from project directory. & goto :Abort 6 | 7 | @set P=.. 8 | 9 | :TryAgain 10 | 11 | @rem @echo P = %P% 12 | 13 | @if exist "%P%\bin\scripts\build\build.py.bat" goto :Found 14 | 15 | @if exist "%P%\bin\scripts\build" @echo "Could not find build.py.bat" & goto :Abort 16 | 17 | @set P=%P%\.. 18 | 19 | @goto :TryAgain 20 | 21 | :Found 22 | 23 | @set P=%P%\bin\scripts\build 24 | @call %P%\build.py.bat %1 %2 %3 %4 %5 25 | @goto :End 26 | 27 | :Abort 28 | 29 | :End 30 | -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/build/util.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | 4 | class chdir: 5 | def __init__(self, path): 6 | self.path = path 7 | 8 | def __enter__(self): 9 | self.old_dir = os.getcwd() 10 | os.chdir(self.path) 11 | 12 | def __exit__(self, exc_type, exc_value, traceback): 13 | os.chdir(self.old_dir) 14 | -------------------------------------------------------------------------------- /J4Q_46.0/bin/scripts/python.bat: -------------------------------------------------------------------------------- 1 | @rem This script attempts to locate python.exe and executes it 2 | @rem with the requested command-line parameters. 3 | 4 | @setlocal enableextensions enabledelayedexpansion 5 | 6 | @set P= 7 | 8 | @python --version 2>NUL 9 | @if errorlevel 1 ( 10 | @echo. 11 | @echo ERROR^: Cannot find python. Make sure it is installed and has been added to your 'Path' system environment variable. 12 | ) else ( 13 | @python %1 %2 %3 %4 %5 %6 14 | ) 15 | -------------------------------------------------------------------------------- /J4Q_46.0/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:4.0.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | task clean(type: Delete) { 20 | delete rootProject.buildDir 21 | } 22 | -------------------------------------------------------------------------------- /J4Q_46.0/cflags.mk: -------------------------------------------------------------------------------- 1 | # This file is included in all .mk files to ensure their compilation flags are in sync 2 | # across debug and release builds. 3 | # NOTE: This file will not get translated to BUCK. For enabling ASAN on buck, update build_defs/mobile_oxx.bzl 4 | ENABLE_SANITIZER := 0 5 | 6 | LOCAL_CFLAGS := -DANDROID_NDK 7 | LOCAL_CFLAGS += -Werror # error on warnings 8 | LOCAL_CFLAGS += -Wall 9 | LOCAL_CFLAGS += -Wextra 10 | LOCAL_CFLAGS += -Wshadow 11 | #LOCAL_CFLAGS += -Wlogical-op # not part of -Wall or -Wextra 12 | #LOCAL_CFLAGS += -Weffc++ # too many issues to fix for now 13 | LOCAL_CFLAGS += -Wno-unused-parameter 14 | LOCAL_CFLAGS += -Wno-missing-field-initializers # warns on this: SwipeAction ret = {} 15 | LOCAL_CPPFLAGS += -std=c++17 16 | 17 | ifeq ($(OVR_DEBUG),1) 18 | LOCAL_CFLAGS += -DOVR_BUILD_DEBUG=1 -O0 -g 19 | 20 | ifeq ($(ENABLE_SANITIZER),1) 21 | $(info "-----------ENABLE_SANITIZER-----------") 22 | ifeq ($(USE_ASAN),1) 23 | LOCAL_CFLAGS += -fsanitize=address -fno-omit-frame-pointer 24 | LOCAL_CPPFLAGS += -fsanitize=address -fno-omit-frame-pointer 25 | LOCAL_LDFLAGS += -fsanitize=address 26 | endif 27 | endif 28 | else 29 | LOCAL_CFLAGS += -O3 30 | endif 31 | 32 | # Explicitly compile for the ARM and not the Thumb instruction set. 33 | LOCAL_ARM_MODE := arm 34 | -------------------------------------------------------------------------------- /J4Q_46.0/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | org.gradle.caching=true 3 | org.gradle.configureondemand=true 4 | -------------------------------------------------------------------------------- /J4Q_46.0/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/J4Q_46.0/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /J4Q_46.0/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /J4Q_46.0/settings.gradle: -------------------------------------------------------------------------------- 1 | 2 | rootProject.projectDir = new File(settingsDir, '.') 3 | rootProject.name = "OculusRoot" 4 | 5 | include ':' 6 | 7 | // Top level settings 8 | -------------------------------------------------------------------------------- /docs/Contents.md: -------------------------------------------------------------------------------- 1 | # Contents 2 | 3 | ## Lesson 1: EndlessUniverse 4 | 5 | 6 | ## Lesson 2: HelloAnimation 7 | 8 | 9 | ## Lesson 3: HelloObjectClass 10 | 11 | 12 | ## Lesson 4: HelloPolygon 13 | 14 | 15 | ## Lesson 5: HelloTexture 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/img/EndlessUniverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/EndlessUniverse.png -------------------------------------------------------------------------------- /docs/img/EndlessUniverse2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/EndlessUniverse2.png -------------------------------------------------------------------------------- /docs/img/HelloAnimation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloAnimation.png -------------------------------------------------------------------------------- /docs/img/HelloAnimation2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloAnimation2.png -------------------------------------------------------------------------------- /docs/img/HelloObjectClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloObjectClass.png -------------------------------------------------------------------------------- /docs/img/HelloObjectClass2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloObjectClass2.png -------------------------------------------------------------------------------- /docs/img/HelloPolygon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloPolygon.png -------------------------------------------------------------------------------- /docs/img/HelloPolygon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloPolygon2.png -------------------------------------------------------------------------------- /docs/img/HelloTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloTexture.png -------------------------------------------------------------------------------- /docs/img/HelloTexture2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/HelloTexture2.png -------------------------------------------------------------------------------- /docs/img/Illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/Illustration.png -------------------------------------------------------------------------------- /docs/img/LogoBanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/LogoBanner.jpg -------------------------------------------------------------------------------- /docs/img/banner1000x2000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitalworlds/JavaForQuest/853d38c6df145517a49f7abb486ce47876c7fcc4/docs/img/banner1000x2000.png --------------------------------------------------------------------------------