diff --git a/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrkhronos-debug.aar b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrkhronos-debug.aar new file mode 100644 index 0000000..dda70e1 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrkhronos-debug.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrlynx-debug.aar b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrlynx-debug.aar new file mode 100644 index 0000000..331ed78 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrlynx-debug.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrmeta-debug.aar b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrmeta-debug.aar new file mode 100644 index 0000000..9e9b286 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrmeta-debug.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrpico-debug.aar b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrpico-debug.aar new file mode 100644 index 0000000..53de128 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/debug/godotopenxrpico-debug.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrkhronos-release.aar b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrkhronos-release.aar new file mode 100644 index 0000000..d1296b0 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrkhronos-release.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrlynx-release.aar b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrlynx-release.aar new file mode 100644 index 0000000..5b64380 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrlynx-release.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrmeta-release.aar b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrmeta-release.aar new file mode 100644 index 0000000..ae3ff3a Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrmeta-release.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrpico-release.aar b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrpico-release.aar new file mode 100644 index 0000000..f2492f8 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/android/release/godotopenxrpico-release.aar differ diff --git a/app/addons/godotopenxrvendors/.bin/android/template_debug/arm64/libgodotopenxrvendors.so b/app/addons/godotopenxrvendors/.bin/android/template_debug/arm64/libgodotopenxrvendors.so new file mode 100644 index 0000000..d3b0834 --- /dev/null +++ b/app/addons/godotopenxrvendors/.bin/android/template_debug/arm64/libgodotopenxrvendors.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59d5063a65a06775814e6a8d0ce94ba11292e6d262fd908d4e9511bd08d3879f +size 1545632 diff --git a/app/addons/godotopenxrvendors/.bin/android/template_release/arm64/libgodotopenxrvendors.so b/app/addons/godotopenxrvendors/.bin/android/template_release/arm64/libgodotopenxrvendors.so new file mode 100644 index 0000000..89d1b4d --- /dev/null +++ b/app/addons/godotopenxrvendors/.bin/android/template_release/arm64/libgodotopenxrvendors.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e82ab01c93b949e0ba617774946dcdd7f2706253ee880d90a76e29db5ce742e1 +size 1421072 diff --git a/app/addons/godotopenxrvendors/.bin/linux/template_debug/x86_64/libgodotopenxrvendors.so b/app/addons/godotopenxrvendors/.bin/linux/template_debug/x86_64/libgodotopenxrvendors.so new file mode 100644 index 0000000..72042ef --- /dev/null +++ b/app/addons/godotopenxrvendors/.bin/linux/template_debug/x86_64/libgodotopenxrvendors.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c70e5b762ad7e6a252d05b7942979b6e3fb6ff3954f519ef62de0d9babb5ce35 +size 1711880 diff --git a/app/addons/godotopenxrvendors/.bin/linux/template_release/x86_64/libgodotopenxrvendors.so b/app/addons/godotopenxrvendors/.bin/linux/template_release/x86_64/libgodotopenxrvendors.so new file mode 100644 index 0000000..b0c5898 --- /dev/null +++ b/app/addons/godotopenxrvendors/.bin/linux/template_release/x86_64/libgodotopenxrvendors.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32a3af490a43567c353013f5a5d453c0fc415715a91de67931cfde1d608c7064 +size 1645056 diff --git a/app/addons/godotopenxrvendors/.bin/macos/template_debug/libgodotopenxrvendors.macos.framework/libgodotopenxrvendors.macos b/app/addons/godotopenxrvendors/.bin/macos/template_debug/libgodotopenxrvendors.macos.framework/libgodotopenxrvendors.macos new file mode 100644 index 0000000..c0da6cd Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/macos/template_debug/libgodotopenxrvendors.macos.framework/libgodotopenxrvendors.macos differ diff --git a/app/addons/godotopenxrvendors/.bin/macos/template_release/libgodotopenxrvendors.macos.framework/libgodotopenxrvendors.macos b/app/addons/godotopenxrvendors/.bin/macos/template_release/libgodotopenxrvendors.macos.framework/libgodotopenxrvendors.macos new file mode 100644 index 0000000..c8e3866 Binary files /dev/null and b/app/addons/godotopenxrvendors/.bin/macos/template_release/libgodotopenxrvendors.macos.framework/libgodotopenxrvendors.macos differ diff --git a/app/addons/godotopenxrvendors/.bin/windows/template_debug/x86_64/libgodotopenxrvendors.dll b/app/addons/godotopenxrvendors/.bin/windows/template_debug/x86_64/libgodotopenxrvendors.dll new file mode 100644 index 0000000..e565c75 --- /dev/null +++ b/app/addons/godotopenxrvendors/.bin/windows/template_debug/x86_64/libgodotopenxrvendors.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:726491737bb6a42253fae56d22d51c43b2ca2ee6a0e0b5bc77b18683a388b8c6 +size 2367488 diff --git a/app/addons/godotopenxrvendors/.bin/windows/template_release/x86_64/libgodotopenxrvendors.dll b/app/addons/godotopenxrvendors/.bin/windows/template_release/x86_64/libgodotopenxrvendors.dll new file mode 100644 index 0000000..90bbbe0 --- /dev/null +++ b/app/addons/godotopenxrvendors/.bin/windows/template_release/x86_64/libgodotopenxrvendors.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d209ab5f1224b52f0e5c523a26c7dd0be853762c53cd54241eba48cd0148e75 +size 2343936 diff --git a/app/addons/godotopenxrvendors/.gitignore b/app/addons/godotopenxrvendors/.gitignore new file mode 100644 index 0000000..e269e91 --- /dev/null +++ b/app/addons/godotopenxrvendors/.gitignore @@ -0,0 +1,2 @@ +# Ignore copies of the binaries Godot makes at startup +.bin/windows/*/*/~*.dll diff --git a/app/addons/godotopenxrvendors/GodotOpenXRVendors_CHANGES.md b/app/addons/godotopenxrvendors/GodotOpenXRVendors_CHANGES.md index 10157ff..0e1d62c 100644 --- a/app/addons/godotopenxrvendors/GodotOpenXRVendors_CHANGES.md +++ b/app/addons/godotopenxrvendors/GodotOpenXRVendors_CHANGES.md @@ -1,5 +1,16 @@ # Change history for the Godot OpenXR loaders asset +## 3.0.0 +- Merge GDExtension into a single implementation +- Upgrade Android, Gradle, Godot and Kotlin dependencies +- Add XR_FB_face_tracking support +- Update to OpenXR 1.0.34 headers +- Add XR_FB_render_model extension wrapper and OpenXRFBRenderModel node +- Add XR_FB_passthrough extension wrapper +- Add XR_FB_hand_tracking_mesh extension wrapper and OpenXRFbHandTrackingMesh node +- Add XR_FB_hand_tracking_aim support +- Update Meta OpenXR mobile SDK to version 62 + ## 2.0.3 - Migrate the export scripts from gdscript to C++ via gdextension - Manually request eye tracking permission if it's included in the app manifest diff --git a/app/addons/godotopenxrvendors/khronos/.bin/debug/godotopenxrkhronos-debug.aar b/app/addons/godotopenxrvendors/khronos/.bin/debug/godotopenxrkhronos-debug.aar deleted file mode 100644 index 61aaf31..0000000 Binary files a/app/addons/godotopenxrvendors/khronos/.bin/debug/godotopenxrkhronos-debug.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_debug.x86_64.so b/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_debug.x86_64.so deleted file mode 100644 index f045e8e..0000000 --- a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_debug.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26f362bafe639d182bf6f7efb0a9aefc0bebf013980031f7f6ad7f6c5330cd86 -size 912568 diff --git a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_release.x86_64.so b/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_release.x86_64.so deleted file mode 100644 index cde0eb0..0000000 --- a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_release.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0f6c924193505d9b73764c1a495f3a41799b4226a22e0a4ef116e0082fe8a9ff -size 891368 diff --git a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_debug.framework/libgodotopenxrkhronos.macos.template_debug b/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_debug.framework/libgodotopenxrkhronos.macos.template_debug deleted file mode 100644 index aaa7946..0000000 Binary files a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_debug.framework/libgodotopenxrkhronos.macos.template_debug and /dev/null differ diff --git a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_release.framework/libgodotopenxrkhronos.macos.template_release b/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_release.framework/libgodotopenxrkhronos.macos.template_release deleted file mode 100644 index e7de1e7..0000000 Binary files a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_release.framework/libgodotopenxrkhronos.macos.template_release and /dev/null differ diff --git a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_debug.x86_64.dll deleted file mode 100644 index 2d639d4..0000000 --- a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d884b9973d9c35a3e4080931d66787ed3b925c686118ccfeead281f795cc43ee -size 1676800 diff --git a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_release.x86_64.dll b/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_release.x86_64.dll deleted file mode 100644 index 9f46e10..0000000 --- a/app/addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_release.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bf90daffe7b97b6f8526af400246806f6c28fc91b0af160f48a98f183363edc -size 1682944 diff --git a/app/addons/godotopenxrvendors/khronos/.bin/release/godotopenxrkhronos-release.aar b/app/addons/godotopenxrvendors/khronos/.bin/release/godotopenxrkhronos-release.aar deleted file mode 100644 index 632ac62..0000000 Binary files a/app/addons/godotopenxrvendors/khronos/.bin/release/godotopenxrkhronos-release.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/khronos/.bin/~libgodotopenxrkhronos.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/khronos/.bin/~libgodotopenxrkhronos.windows.template_debug.x86_64.dll deleted file mode 100644 index 2d639d4..0000000 --- a/app/addons/godotopenxrvendors/khronos/.bin/~libgodotopenxrkhronos.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d884b9973d9c35a3e4080931d66787ed3b925c686118ccfeead281f795cc43ee -size 1676800 diff --git a/app/addons/godotopenxrvendors/khronos/plugin.gdextension b/app/addons/godotopenxrvendors/khronos/plugin.gdextension deleted file mode 100644 index e5a424d..0000000 --- a/app/addons/godotopenxrvendors/khronos/plugin.gdextension +++ /dev/null @@ -1,18 +0,0 @@ -[configuration] - -entry_symbol = "plugin_library_init" -compatibility_minimum = "4.2" -android_aar_plugin = true - -[libraries] - -android.debug.arm64 = "res://addons/godotopenxrvendors/khronos/.bin/debug/arm64-v8a/libgodotopenxrkhronos.so" -android.release.arm64 = "res://addons/godotopenxrvendors/khronos/.bin/release/arm64-v8a/libgodotopenxrkhronos.so" -android.debug.x86_64 = "res://addons/godotopenxrvendors/khronos/.bin/debug/x86_64/libgodotopenxrkhronos.so" -android.release.x86_64 = "res://addons/godotopenxrvendors/khronos/.bin/release/x86_64/libgodotopenxrkhronos.so" -macos.debug = "res://addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_debug.framework" -macos.release = "res://addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.macos.template_release.framework" -windows.debug.x86_64 = "res://addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_debug.x86_64.dll" -windows.release.x86_64 = "res://addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.windows.template_release.x86_64.dll" -linux.debug.x86_64 = "res://addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_debug.x86_64.so" -linux.release.x86_64 = "res://addons/godotopenxrvendors/khronos/.bin/libgodotopenxrkhronos.linux.template_release.x86_64.so" diff --git a/app/addons/godotopenxrvendors/lynx/.bin/debug/godotopenxrlynx-debug.aar b/app/addons/godotopenxrvendors/lynx/.bin/debug/godotopenxrlynx-debug.aar deleted file mode 100644 index a2d37ff..0000000 Binary files a/app/addons/godotopenxrvendors/lynx/.bin/debug/godotopenxrlynx-debug.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_debug.x86_64.so b/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_debug.x86_64.so deleted file mode 100644 index 3df0167..0000000 --- a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_debug.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2559fb3d21e335f6b69322c499f30152e72d50379d0d659f3ca984e5df8b76e8 -size 904376 diff --git a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_release.x86_64.so b/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_release.x86_64.so deleted file mode 100644 index dd5f285..0000000 --- a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_release.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18cd089d0f38393962c49bb32681d66be22341cf9bc22bd8a0dd71da391acf91 -size 883176 diff --git a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_debug.framework/libgodotopenxrlynx.macos.template_debug b/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_debug.framework/libgodotopenxrlynx.macos.template_debug deleted file mode 100644 index 3d10faa..0000000 Binary files a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_debug.framework/libgodotopenxrlynx.macos.template_debug and /dev/null differ diff --git a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_release.framework/libgodotopenxrlynx.macos.template_release b/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_release.framework/libgodotopenxrlynx.macos.template_release deleted file mode 100644 index a19e52b..0000000 Binary files a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_release.framework/libgodotopenxrlynx.macos.template_release and /dev/null differ diff --git a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_debug.x86_64.dll deleted file mode 100644 index 0421ee2..0000000 --- a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:906d6bd4955dacc673f04e542773f88386ab4be7d2d504aed1207c97e7d3922e -size 1672704 diff --git a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_release.x86_64.dll b/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_release.x86_64.dll deleted file mode 100644 index f69eb85..0000000 --- a/app/addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_release.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cf246430cc976618365cdee9498b352b011acd86d75fdfbda293667c1a0781e5 -size 1675776 diff --git a/app/addons/godotopenxrvendors/lynx/.bin/release/godotopenxrlynx-release.aar b/app/addons/godotopenxrvendors/lynx/.bin/release/godotopenxrlynx-release.aar deleted file mode 100644 index 945454b..0000000 Binary files a/app/addons/godotopenxrvendors/lynx/.bin/release/godotopenxrlynx-release.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/lynx/.bin/~libgodotopenxrlynx.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/lynx/.bin/~libgodotopenxrlynx.windows.template_debug.x86_64.dll deleted file mode 100644 index 0421ee2..0000000 --- a/app/addons/godotopenxrvendors/lynx/.bin/~libgodotopenxrlynx.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:906d6bd4955dacc673f04e542773f88386ab4be7d2d504aed1207c97e7d3922e -size 1672704 diff --git a/app/addons/godotopenxrvendors/lynx/plugin.gdextension b/app/addons/godotopenxrvendors/lynx/plugin.gdextension deleted file mode 100644 index 6bb83da..0000000 --- a/app/addons/godotopenxrvendors/lynx/plugin.gdextension +++ /dev/null @@ -1,16 +0,0 @@ -[configuration] - -entry_symbol = "plugin_library_init" -compatibility_minimum = "4.2" -android_aar_plugin = true - -[libraries] - -android.debug.arm64 = "res://addons/godotopenxrvendors/lynx/.bin/debug/arm64-v8a/libgodotopenxrlynx.so" -android.release.arm64 = "res://addons/godotopenxrvendors/lynx/.bin/release/arm64-v8a/libgodotopenxrlynx.so" -macos.debug = "res://addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_debug.framework" -macos.release = "res://addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.macos.template_release.framework" -windows.debug.x86_64 = "res://addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_debug.x86_64.dll" -windows.release.x86_64 = "res://addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.windows.template_release.x86_64.dll" -linux.debug.x86_64 = "res://addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_debug.x86_64.so" -linux.release.x86_64 = "res://addons/godotopenxrvendors/lynx/.bin/libgodotopenxrlynx.linux.template_release.x86_64.so" diff --git a/app/addons/godotopenxrvendors/meta/.bin/debug/godotopenxrmeta-debug.aar b/app/addons/godotopenxrvendors/meta/.bin/debug/godotopenxrmeta-debug.aar deleted file mode 100644 index e3f8703..0000000 Binary files a/app/addons/godotopenxrvendors/meta/.bin/debug/godotopenxrmeta-debug.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_debug.x86_64.so b/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_debug.x86_64.so deleted file mode 100644 index c5e4fa5..0000000 --- a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_debug.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cbacbc1657bfcb0352b6a8d7abbdcf515ffdd81c0f0413d4aa57fb2007ff581 -size 1105296 diff --git a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_release.x86_64.so b/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_release.x86_64.so deleted file mode 100644 index 579b98d..0000000 --- a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_release.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:304291cbe35cb725e34f23a111b150cb0f5fa3152581412f9b7b3600b1f542e8 -size 1071624 diff --git a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_debug.framework/libgodotopenxrmeta.macos.template_debug b/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_debug.framework/libgodotopenxrmeta.macos.template_debug deleted file mode 100644 index a5862e3..0000000 Binary files a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_debug.framework/libgodotopenxrmeta.macos.template_debug and /dev/null differ diff --git a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_release.framework/libgodotopenxrmeta.macos.template_release b/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_release.framework/libgodotopenxrmeta.macos.template_release deleted file mode 100644 index ab709ae..0000000 Binary files a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_release.framework/libgodotopenxrmeta.macos.template_release and /dev/null differ diff --git a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_debug.x86_64.dll deleted file mode 100644 index b0c731b..0000000 --- a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a6d5e0e480c32edc33a6fb08ac5e66fd8878499bbe9b9427b53330cfba1fdcd -size 1841152 diff --git a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_release.x86_64.dll b/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_release.x86_64.dll deleted file mode 100644 index 4771217..0000000 --- a/app/addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_release.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31bbebac4bfebc45e47bd00b2c12c52940672712eeedf1d7ef876f111fb1c466 -size 1840128 diff --git a/app/addons/godotopenxrvendors/meta/.bin/release/godotopenxrmeta-release.aar b/app/addons/godotopenxrvendors/meta/.bin/release/godotopenxrmeta-release.aar deleted file mode 100644 index 4c050e7..0000000 Binary files a/app/addons/godotopenxrvendors/meta/.bin/release/godotopenxrmeta-release.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/meta/.bin/~libgodotopenxrmeta.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/meta/.bin/~libgodotopenxrmeta.windows.template_debug.x86_64.dll deleted file mode 100644 index b0c731b..0000000 --- a/app/addons/godotopenxrvendors/meta/.bin/~libgodotopenxrmeta.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a6d5e0e480c32edc33a6fb08ac5e66fd8878499bbe9b9427b53330cfba1fdcd -size 1841152 diff --git a/app/addons/godotopenxrvendors/meta/plugin.gdextension b/app/addons/godotopenxrvendors/meta/plugin.gdextension deleted file mode 100644 index 8055b2f..0000000 --- a/app/addons/godotopenxrvendors/meta/plugin.gdextension +++ /dev/null @@ -1,16 +0,0 @@ -[configuration] - -entry_symbol = "plugin_library_init" -compatibility_minimum = "4.2" -android_aar_plugin = true - -[libraries] - -android.debug.arm64 = "res://addons/godotopenxrvendors/meta/.bin/debug/arm64-v8a/libgodotopenxrmeta.so" -android.release.arm64 = "res://addons/godotopenxrvendors/meta/.bin/release/arm64-v8a/libgodotopenxrmeta.so" -macos.debug = "res://addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_debug.framework" -macos.release = "res://addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.macos.template_release.framework" -windows.debug.x86_64 = "res://addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_debug.x86_64.dll" -windows.release.x86_64 = "res://addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.windows.template_release.x86_64.dll" -linux.debug.x86_64 = "res://addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_debug.x86_64.so" -linux.release.x86_64 = "res://addons/godotopenxrvendors/meta/.bin/libgodotopenxrmeta.linux.template_release.x86_64.so" diff --git a/app/addons/godotopenxrvendors/pico/.bin/debug/godotopenxrpico-debug.aar b/app/addons/godotopenxrvendors/pico/.bin/debug/godotopenxrpico-debug.aar deleted file mode 100644 index 3407ec2..0000000 Binary files a/app/addons/godotopenxrvendors/pico/.bin/debug/godotopenxrpico-debug.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_debug.x86_64.so b/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_debug.x86_64.so deleted file mode 100644 index 2c27da5..0000000 --- a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_debug.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e4b1ec6b67b7dd1683b6d0b96079b0443946eb6a836f1a372974053aad721a8 -size 904376 diff --git a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_release.x86_64.so b/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_release.x86_64.so deleted file mode 100644 index baea1cd..0000000 --- a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_release.x86_64.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b466b78078a8be5de46b0293fb24f90a17ce911e8a0fb010469f084fb5719d3 -size 883176 diff --git a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_debug.framework/libgodotopenxrpico.macos.template_debug b/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_debug.framework/libgodotopenxrpico.macos.template_debug deleted file mode 100644 index 62b40ab..0000000 Binary files a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_debug.framework/libgodotopenxrpico.macos.template_debug and /dev/null differ diff --git a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_release.framework/libgodotopenxrpico.macos.template_release b/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_release.framework/libgodotopenxrpico.macos.template_release deleted file mode 100644 index 046329e..0000000 Binary files a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_release.framework/libgodotopenxrpico.macos.template_release and /dev/null differ diff --git a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_debug.x86_64.dll deleted file mode 100644 index 0443949..0000000 --- a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f63bc9eac6eef5126e756c3fd168205d859ae96ad9be9ace673ce1ba05fa5d7c -size 1672704 diff --git a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_release.x86_64.dll b/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_release.x86_64.dll deleted file mode 100644 index fbee0db..0000000 --- a/app/addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_release.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7e58ea69d21c2b234a344bed15228e9f17beb0c8f8ae16d70ecfe3fe8085b2ae -size 1675776 diff --git a/app/addons/godotopenxrvendors/pico/.bin/release/godotopenxrpico-release.aar b/app/addons/godotopenxrvendors/pico/.bin/release/godotopenxrpico-release.aar deleted file mode 100644 index 443cd5d..0000000 Binary files a/app/addons/godotopenxrvendors/pico/.bin/release/godotopenxrpico-release.aar and /dev/null differ diff --git a/app/addons/godotopenxrvendors/pico/.bin/~libgodotopenxrpico.windows.template_debug.x86_64.dll b/app/addons/godotopenxrvendors/pico/.bin/~libgodotopenxrpico.windows.template_debug.x86_64.dll deleted file mode 100644 index 0443949..0000000 --- a/app/addons/godotopenxrvendors/pico/.bin/~libgodotopenxrpico.windows.template_debug.x86_64.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f63bc9eac6eef5126e756c3fd168205d859ae96ad9be9ace673ce1ba05fa5d7c -size 1672704 diff --git a/app/addons/godotopenxrvendors/pico/plugin.gdextension b/app/addons/godotopenxrvendors/pico/plugin.gdextension deleted file mode 100644 index 4d5117b..0000000 --- a/app/addons/godotopenxrvendors/pico/plugin.gdextension +++ /dev/null @@ -1,16 +0,0 @@ -[configuration] - -entry_symbol = "plugin_library_init" -compatibility_minimum = "4.2" -android_aar_plugin = true - -[libraries] - -android.debug.arm64 = "res://addons/godotopenxrvendors/pico/.bin/debug/arm64-v8a/libgodotopenxrpico.so" -android.release.arm64 = "res://addons/godotopenxrvendors/pico/.bin/release/arm64-v8a/libgodotopenxrpico.so" -macos.debug = "res://addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_debug.framework" -macos.release = "res://addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.macos.template_release.framework" -windows.debug.x86_64 = "res://addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_debug.x86_64.dll" -windows.release.x86_64 = "res://addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.windows.template_release.x86_64.dll" -linux.debug.x86_64 = "res://addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_debug.x86_64.so" -linux.release.x86_64 = "res://addons/godotopenxrvendors/pico/.bin/libgodotopenxrpico.linux.template_release.x86_64.so" diff --git a/app/addons/godotopenxrvendors/plugin.gdextension b/app/addons/godotopenxrvendors/plugin.gdextension new file mode 100644 index 0000000..c215b51 --- /dev/null +++ b/app/addons/godotopenxrvendors/plugin.gdextension @@ -0,0 +1,18 @@ +[configuration] + +entry_symbol = "plugin_library_init" +compatibility_minimum = "4.3" +android_aar_plugin = true + +[libraries] + +android.debug.arm64 = "res://addons/godotopenxrvendors/.bin/android/template_debug/arm64/libgodotopenxrvendors.so" +android.release.arm64 = "res://addons/godotopenxrvendors/.bin/android/template_release/arm64/libgodotopenxrvendors.so" +android.debug.x86_64 = "res://addons/godotopenxrvendors/.bin/android/template_debug/x86_64/libgodotopenxrvendors.so" +android.release.x86_64 = "res://addons/godotopenxrvendors/.bin/android/template_release/x86_64/libgodotopenxrvendors.so" +macos.debug = "res://addons/godotopenxrvendors/.bin/macos/template_debug/libgodotopenxrvendors.macos.framework" +macos.release = "res://addons/godotopenxrvendors/.bin/macos/template_release/libgodotopenxrvendors.macos.framework" +windows.debug.x86_64 = "res://addons/godotopenxrvendors/.bin/windows/template_debug/x86_64/libgodotopenxrvendors.dll" +windows.release.x86_64 = "res://addons/godotopenxrvendors/.bin/windows/template_release/x86_64/libgodotopenxrvendors.dll" +linux.debug.x86_64 = "res://addons/godotopenxrvendors/.bin/linux/template_debug/x86_64/libgodotopenxrvendors.so" +linux.release.x86_64 = "res://addons/godotopenxrvendors/.bin/linux/template_release/x86_64/libgodotopenxrvendors.so" diff --git a/app/addons/rdot/Rdot.gd b/app/addons/rdot/Rdot.gd index 7fc8d6c..972bd14 100644 --- a/app/addons/rdot/Rdot.gd +++ b/app/addons/rdot/Rdot.gd @@ -64,6 +64,9 @@ static func effect(callback: Callable): if !deconstructor.is_null(): deconstructor.call() + if callback.is_valid() == false: + return + var result=callback.call(_arg) if result is Callable: diff --git a/app/android/.build_version b/app/android/.build_version index bebb000..3e30b07 100644 --- a/app/android/.build_version +++ b/app/android/.build_version @@ -1 +1 @@ -4.2.2.stable +4.3.dev6 diff --git a/app/assets/chat_bubble.blend.import b/app/assets/chat_bubble.blend.import index 35e7a94..f099651 100644 --- a/app/assets/chat_bubble.blend.import +++ b/app/assets/chat_bubble.blend.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} fbx/importer=0 diff --git a/app/assets/ray.blend.import b/app/assets/ray.blend.import index 17bcd72..12068f5 100644 --- a/app/assets/ray.blend.import +++ b/app/assets/ray.blend.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} fbx/importer=0 diff --git a/app/assets/sound/analog-appliance-button.mp3 b/app/assets/sound/analog-appliance-button.mp3 new file mode 100644 index 0000000..bb82688 Binary files /dev/null and b/app/assets/sound/analog-appliance-button.mp3 differ diff --git a/app/assets/sound/analog-appliance-button.mp3.import b/app/assets/sound/analog-appliance-button.mp3.import new file mode 100644 index 0000000..0fbd522 --- /dev/null +++ b/app/assets/sound/analog-appliance-button.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://cxhsv4h1q8pm7" +path="res://.godot/imported/analog-appliance-button.mp3-3400d402b6dbe616a93c6ce4dfd33aab.mp3str" + +[deps] + +source_file="res://assets/sound/analog-appliance-button.mp3" +dest_files=["res://.godot/imported/analog-appliance-button.mp3-3400d402b6dbe616a93c6ce4dfd33aab.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/app/assets/sound/camera-shutter.mp3 b/app/assets/sound/camera-shutter.mp3 new file mode 100644 index 0000000..0cda4c0 Binary files /dev/null and b/app/assets/sound/camera-shutter.mp3 differ diff --git a/app/assets/sound/camera-shutter.mp3.import b/app/assets/sound/camera-shutter.mp3.import new file mode 100644 index 0000000..5f55887 --- /dev/null +++ b/app/assets/sound/camera-shutter.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://c0ffdufx3cgg2" +path="res://.godot/imported/camera-shutter.mp3-09c4e70bc95a3baac5e36d55131e6433.mp3str" + +[deps] + +source_file="res://assets/sound/camera-shutter.mp3" +dest_files=["res://.godot/imported/camera-shutter.mp3-09c4e70bc95a3baac5e36d55131e6433.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/app/assets/sound/crumple.mp3 b/app/assets/sound/crumple.mp3 new file mode 100644 index 0000000..8132e5f Binary files /dev/null and b/app/assets/sound/crumple.mp3 differ diff --git a/app/assets/sound/crumple.mp3.import b/app/assets/sound/crumple.mp3.import new file mode 100644 index 0000000..9190828 --- /dev/null +++ b/app/assets/sound/crumple.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://bm2uxwqfmnvs6" +path="res://.godot/imported/crumple.mp3-9a9f9e732def4983e19646093aa79cb8.mp3str" + +[deps] + +source_file="res://assets/sound/crumple.mp3" +dest_files=["res://.godot/imported/crumple.mp3-9a9f9e732def4983e19646093aa79cb8.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/app/assets/sound/finger-snap.mp3 b/app/assets/sound/finger-snap.mp3 new file mode 100644 index 0000000..b2a2b43 Binary files /dev/null and b/app/assets/sound/finger-snap.mp3 differ diff --git a/app/assets/sound/finger-snap.mp3.import b/app/assets/sound/finger-snap.mp3.import new file mode 100644 index 0000000..79951e6 --- /dev/null +++ b/app/assets/sound/finger-snap.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://du7ur0lu28cvn" +path="res://.godot/imported/finger-snap.mp3-ee69ae79e1da4049d24dd085be327ce3.mp3str" + +[deps] + +source_file="res://assets/sound/finger-snap.mp3" +dest_files=["res://.godot/imported/finger-snap.mp3-ee69ae79e1da4049d24dd085be327ce3.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/app/assets/sound/message-incoming.mp3 b/app/assets/sound/message-incoming.mp3 new file mode 100644 index 0000000..b432156 Binary files /dev/null and b/app/assets/sound/message-incoming.mp3 differ diff --git a/app/assets/sound/message-incoming.mp3.import b/app/assets/sound/message-incoming.mp3.import new file mode 100644 index 0000000..a82d9eb --- /dev/null +++ b/app/assets/sound/message-incoming.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://c0fj5p6544ab7" +path="res://.godot/imported/message-incoming.mp3-f3b0b0d850f78a95341ef72186559e01.mp3str" + +[deps] + +source_file="res://assets/sound/message-incoming.mp3" +dest_files=["res://.godot/imported/message-incoming.mp3-f3b0b0d850f78a95341ef72186559e01.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/app/assets/trash_bin.blend.import b/app/assets/trash_bin.blend.import index 91cd3d5..ee458c8 100644 --- a/app/assets/trash_bin.blend.import +++ b/app/assets/trash_bin.blend.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} fbx/importer=0 diff --git a/app/content/entities/light/light.gd b/app/content/entities/light/light.gd index b0f876c..1a5b371 100644 --- a/app/content/entities/light/light.gd +++ b/app/content/entities/light/light.gd @@ -14,6 +14,7 @@ const color_wheel_img := preload ("res://assets/canvas.png") @onready var mode_next = $Modes/Next @onready var mode_before = $Modes/Previous @onready var mode_label = $Modes/Label +@onready var snap_sound = $SnapSound var active = R.state(false) var brightness = R.state(0) # 0-255 @@ -78,6 +79,8 @@ func _ready(): "rgb_color": [int(picked_color.r * 255), int(picked_color.g * 255), int(picked_color.b * 255)], } + snap_sound.play() + HomeApi.set_state(entity_id, "on", attributes) ) color_supported = true @@ -123,6 +126,7 @@ func set_state(stateInfo): func _on_click(event): if event.target == self: + snap_sound.play() _toggle() func quick_action(): diff --git a/app/content/entities/light/light.tscn b/app/content/entities/light/light.tscn index 1bcc455..6819ead 100644 --- a/app/content/entities/light/light.tscn +++ b/app/content/entities/light/light.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://cw86rc42dv2d8"] +[gd_scene load_steps=15 format=3 uid="uid://cw86rc42dv2d8"] [ext_resource type="Script" path="res://content/entities/light/light.gd" id="1_ykxy3"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="4_4sfxb"] @@ -6,6 +6,7 @@ [ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="6_mhjlm"] [ext_resource type="Texture2D" uid="uid://hy2f6is7qjyv" path="res://assets/canvas.png" id="7_ximu1"] [ext_resource type="Script" path="res://content/functions/clickable.gd" id="8_1sfll"] +[ext_resource type="AudioStream" uid="uid://du7ur0lu28cvn" path="res://assets/sound/finger-snap.mp3" id="8_3togy"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="8_nhcff"] [sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"] @@ -105,3 +106,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.01, 0, 0) pixel_size = 0.001 text = "Default" horizontal_alignment = 0 + +[node name="SnapSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("8_3togy") +volume_db = -20.0 diff --git a/app/content/entities/switch/switch.gd b/app/content/entities/switch/switch.gd index 17ef18c..e304a9d 100644 --- a/app/content/entities/switch/switch.gd +++ b/app/content/entities/switch/switch.gd @@ -3,6 +3,7 @@ extends Entity const Entity = preload ("../entity.gd") @onready var sprite: AnimatedSprite3D = $Icon +@onready var snap_sound = $SnapSound var active = R.state(false) @@ -29,6 +30,7 @@ func set_state(stateInfo): icon.value = "toggle_" + stateInfo["state"] func _on_click(_event): + snap_sound.play() _toggle() func quick_action(): diff --git a/app/content/entities/switch/switch.tscn b/app/content/entities/switch/switch.tscn index 7c89bd6..c212cdc 100644 --- a/app/content/entities/switch/switch.tscn +++ b/app/content/entities/switch/switch.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=7 format=3 uid="uid://cscl5k7lhopj5"] +[gd_scene load_steps=8 format=3 uid="uid://cscl5k7lhopj5"] [ext_resource type="Script" path="res://content/entities/switch/switch.gd" id="1_8ffhi"] [ext_resource type="Texture2D" uid="uid://br3p0c2foputg" path="res://assets/materials/swich_on.png" id="1_w68gw"] [ext_resource type="Texture2D" uid="uid://co2ishj2hx57p" path="res://assets/materials/switch_off.png" id="2_86ba1"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="4_6xr03"] +[ext_resource type="AudioStream" uid="uid://du7ur0lu28cvn" path="res://assets/sound/finger-snap.mp3" id="5_qvw3h"] [sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"] radius = 0.0482081 @@ -37,3 +38,7 @@ sprite_frames = SubResource("SpriteFrames_ldpuo") [node name="Movable" type="Node" parent="."] script = ExtResource("4_6xr03") resizable = true + +[node name="SnapSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("5_qvw3h") +volume_db = -20.0 diff --git a/app/content/entities/timer/timer.tscn b/app/content/entities/timer/timer.tscn index b7cf37d..63108e7 100644 --- a/app/content/entities/timer/timer.tscn +++ b/app/content/entities/timer/timer.tscn @@ -10,7 +10,7 @@ [sub_resource type="BoxShape3D" id="BoxShape3D_3qyo4"] size = Vector3(0.32, 0.16, 0.02) -[sub_resource type="ShaderMaterial" id="ShaderMaterial_nktla"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_v0oi8"] resource_local_to_scene = true render_priority = 10 shader = ExtResource("6_40cd1") @@ -25,7 +25,7 @@ shader_parameter/corner_radius = 0.8 shader_parameter/roughness = 0.3 shader_parameter/grain_amount = 0.02 -[sub_resource type="QuadMesh" id="QuadMesh_mqjqg"] +[sub_resource type="QuadMesh" id="QuadMesh_pbdeb"] size = Vector2(0.32, 0.16) [node name="Timer" type="StaticBody3D" groups=["entity"]] @@ -78,7 +78,7 @@ label = "stop" icon = true [node name="Panel" parent="." instance=ExtResource("5_j3gsb")] -material_override = SubResource("ShaderMaterial_nktla") -mesh = SubResource("QuadMesh_mqjqg") +material_override = SubResource("ShaderMaterial_v0oi8") +mesh = SubResource("QuadMesh_pbdeb") size = Vector2(0.32, 0.16) corner_radius = 0.8 diff --git a/app/content/functions/movable.gd b/app/content/functions/movable.gd index 262f77f..de4fae5 100644 --- a/app/content/functions/movable.gd +++ b/app/content/functions/movable.gd @@ -13,7 +13,6 @@ signal on_moved() var initiator = null var initiator2 = null -var resizing = false var relative_transform = Transform3D() var initial_point = Vector3() @@ -27,7 +26,7 @@ var initial_transform = Transform3D() var distances = Vector2() func _process(delta): - if get_tree().debug_collisions_hint&&resizing: + if get_tree().debug_collisions_hint&&initiator2 != null: DebugDraw3D.draw_line(initial_position, initial_position + initial_direction, Color(1, 0, 0)) DebugDraw3D.draw_line(initial_position, initial_position + initial_up, Color(0, 1, 0)) @@ -38,12 +37,11 @@ func _on_grab_down(event: EventPointer): if restricted&&event.target != get_parent(): return - if resizing&&initiator2 != null: + if initiator != null&&initiator2 != null: return - if resizable&&initiator != null: + if initiator != null&&initiator2 == null&&initiator != event.initiator: initiator2 = event.initiator - resizing = true distances.y = event.ray.get_collision_point().distance_to(event.ray.global_position) @@ -54,8 +52,7 @@ func _on_grab_down(event: EventPointer): return - if resizable: - distances.x = event.ray.get_collision_point().distance_to(event.ray.global_position) + distances.x = event.ray.get_collision_point().distance_to(event.ray.global_position) initiator = event.initiator @@ -69,11 +66,14 @@ func _on_grab_move(event: EventPointer): if event.initiator != initiator: return - if resizing: + if initiator != null&&initiator2 != null: var new_position = _get_first_ray_point() var new_direction = _get_second_ray_point() - new_position var new_up = -initiator.node.global_transform.basis.z.normalized() * distances.x + if resizable == false: + new_direction = new_direction.normalized() * initial_direction.length() + if get_tree().debug_collisions_hint: DebugDraw3D.draw_line(new_position, new_position + new_direction, Color(1, 0, 0)) DebugDraw3D.draw_line(new_position, new_position + new_up, Color(0, 1, 0)) @@ -93,7 +93,6 @@ func _on_grab_move(event: EventPointer): func _on_grab_up(event: EventPointer): if event.initiator == initiator2: initiator2 = null - resizing = false _update_relative_transform() return @@ -101,12 +100,10 @@ func _on_grab_up(event: EventPointer): if initiator2 != null: initiator = initiator2 initiator2 = null - resizing = false _update_relative_transform() else: initiator = null initiator2 = null - resizing = false on_moved.emit() func _get_first_ray_point(): diff --git a/app/content/main.gd b/app/content/main.gd index 54ff0b2..b22c126 100644 --- a/app/content/main.gd +++ b/app/content/main.gd @@ -48,9 +48,6 @@ func _ready(): toggle_menu() elif action.name == "by_button": House.body.mini_view.small.value=!House.body.mini_view.small.value - elif action.name == "ax_button": - if take_screenshot(): - EventSystem.notify("Screenshot taken", EventNotify.Type.INFO) ) EventSystem.on_focus_in.connect(func(event): @@ -124,9 +121,6 @@ func _input(event): if event is InputEventKey and Input.is_key_pressed(KEY_F10): var vp = get_viewport() vp.debug_draw = (vp.debug_draw + 1) % 5 - - if event is InputEventKey and Input.is_key_pressed(KEY_F2): - take_screenshot() if event is InputEventKey and Input.is_key_pressed(KEY_M): toggle_menu() @@ -149,27 +143,4 @@ func vector_key_mapping(key_positive_x: int, key_negative_x: int, key_positive_y if vec: vec = vec.normalized() - return vec - -func take_screenshot(): - var vp = get_viewport() - var texture = vp.get_texture() - var image = texture.get_image() - - var file_name = "%s.png" % Time.get_datetime_string_from_system().replace(":", "-") - - if image == null: - return false - - if OS.get_name() == "Android": - var path = OS.get_system_dir(OS.SYSTEM_DIR_PICTURES, false) + "/immersive-home/" + file_name - - if not FileAccess.file_exists(path): - var dir = path.get_base_dir() - DirAccess.open("user://").make_dir_recursive(dir) - - image.save_png(path) - else: - image.save_png("user://screenshots/%s.png" % Time.get_datetime_string_from_system().replace(":", "-")) - - return true \ No newline at end of file + return vec \ No newline at end of file diff --git a/app/content/main.tscn b/app/content/main.tscn index 1b8d27e..88ebabf 100644 --- a/app/content/main.tscn +++ b/app/content/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=3 uid="uid://eecv28y6jxk4"] +[gd_scene load_steps=13 format=3 uid="uid://eecv28y6jxk4"] [ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="1_i4c04"] [ext_resource type="Script" path="res://content/main.gd" id="1_uvrd4"] @@ -10,6 +10,7 @@ [ext_resource type="PackedScene" uid="uid://c3kdssrmv84kv" path="res://content/ui/menu/menu.tscn" id="8_du83w"] [ext_resource type="PackedScene" uid="uid://lrehk38exd5n" path="res://content/system/keyboard/keyboard.tscn" id="9_e5n3p"] [ext_resource type="PackedScene" uid="uid://cbemihbxkd4ll" path="res://content/system/house/house.tscn" id="9_np6mw"] +[ext_resource type="Script" path="res://lib/utils/screenshot.gd" id="12_e13ym"] [ext_resource type="PackedScene" uid="uid://bhyddd1f0ry1x" path="res://content/ui/onboarding/onboarding.tscn" id="12_uq2nj"] [node name="Main" type="Node3D"] @@ -33,17 +34,17 @@ enable_passthrough = true [node name="XRControllerLeft" parent="XROrigin3D" instance=ExtResource("2_2lraw")] transform = Transform3D(0.999999, -1.39633e-11, 0, 9.48075e-12, 1, 0, 0, 0, 1, -0.355145, 0.550439, -0.477945) -[node name="IndexTip" parent="XROrigin3D/XRControllerLeft" index="6"] -transform = Transform3D(0.967526, 0.252326, -0.0150302, -0.0150302, 0.116784, 0.993043, 0.252326, -0.960569, 0.116784, -0.00665802, 0.0427913, -0.169868) +[node name="IndexTip" parent="XROrigin3D/XRControllerLeft" index="4"] +transform = Transform3D(0.967526, 0.252326, -0.0150302, -0.0150302, 0.116784, 0.993043, 0.252326, -0.960569, 0.116784, -0.00665808, 0.0427912, -0.169868) -[node name="ThumbTip" parent="XROrigin3D/XRControllerLeft" index="7"] -transform = Transform3D(0.967042, 0.24582, -0.0663439, -0.0663439, 0.494837, 0.866449, 0.24582, -0.833492, 0.494837, 0.0261569, 0.0891964, -0.0934418) +[node name="ThumbTip" parent="XROrigin3D/XRControllerLeft" index="5"] +transform = Transform3D(0.967043, 0.24582, -0.0663439, -0.0663439, 0.494837, 0.86645, 0.24582, -0.833492, 0.494837, 0.0261569, 0.0891963, -0.0934418) -[node name="MiddleTip" parent="XROrigin3D/XRControllerLeft" index="8"] -transform = Transform3D(0.98042, 0.196912, 0.00149799, 0.001498, -0.015065, 0.999885, 0.196912, -0.980305, -0.0150651, -0.00327212, -0.00771424, -0.176318) +[node name="MiddleTip" parent="XROrigin3D/XRControllerLeft" index="6"] +transform = Transform3D(0.98042, 0.196912, 0.00149799, 0.001498, -0.015065, 0.999885, 0.196912, -0.980305, -0.0150651, -0.00327212, -0.00771427, -0.176318) -[node name="Palm" parent="XROrigin3D/XRControllerLeft" index="9"] -transform = Transform3D(1, 3.12364e-06, -3.13861e-06, -3.12371e-06, 1, -1.97886e-05, 3.13854e-06, 1.97889e-05, 1, 0.0307807, -0.0419721, -0.0399505) +[node name="Palm" parent="XROrigin3D/XRControllerLeft" index="7"] +transform = Transform3D(1, 3.12361e-06, -3.13859e-06, -3.12371e-06, 1, -1.97886e-05, 3.13859e-06, 1.97889e-05, 1, 0.0307807, -0.0419722, -0.0399505) [node name="XRControllerRight" parent="XROrigin3D" instance=ExtResource("7_0b3tc")] transform = Transform3D(0.999999, -1.39635e-11, 0, 1.31553e-10, 1, 0, 0, 0, 1, 0.336726, 0.575093, -0.437942) @@ -65,5 +66,8 @@ transform = Transform3D(0.5, 5.24309e-05, 0.000144384, -0.000139169, 0.353553, 0 [node name="Onboarding" parent="." instance=ExtResource("12_uq2nj")] transform = Transform3D(1, -1.39636e-11, 0, 4.42413e-11, 1, 0, 0, 0, 1, -0.576793, 0.820168, -0.60016) +[node name="Node" type="Node" parent="."] +script = ExtResource("12_e13ym") + [editable path="XROrigin3D/XRControllerLeft"] [editable path="XROrigin3D/XRControllerLeft/hand_l"] diff --git a/app/content/system/controller_left/controller_left.gd b/app/content/system/controller_left/controller_left.gd index f7aea0b..25428b0 100644 --- a/app/content/system/controller_left/controller_left.gd +++ b/app/content/system/controller_left/controller_left.gd @@ -1,6 +1,5 @@ extends XRController3D -const Entity = preload ("res://content/entities/entity.gd") const Pointer = preload ("res://lib/utils/pointer/pointer.gd") const Initiator = preload ("res://lib/utils/pointer/initiator.gd") const Finger = preload ("res://lib/utils/touch/finger.gd") @@ -23,9 +22,6 @@ const Miniature = preload ("res://content/system/house/mini/miniature.gd") @onready var palm = $Palm @onready var ray: RayCast3D = $Raycast -@onready var area = $trash_bin/Area3D -@onready var trash_bin = $trash_bin -@onready var animation = $AnimationPlayer @onready var quick_actions = $Palm/QuickActions var hand_active = false @@ -38,72 +34,10 @@ var grip_distance = 0.02 var pressed = false var grabbed = false -var to_delete = [] -var trash_bin_visible: bool = true: - set(value): - if trash_bin_visible == value: - return - - if value: - add_child(trash_bin) - else: - if animation.is_playing(): - await animation.animation_finished - remove_child(trash_bin) - - trash_bin_visible = value - -var trash_bin_large: bool = false: - set(value): - if trash_bin_large == value: - return - - if value: - animation.play("add_trashbin") - else: - animation.play_backwards("add_trashbin") - - trash_bin_large = value - func _ready(): - trash_bin_visible = false _setup_hand() - EventSystem.on_grab_down.connect(func(event: EventPointer): - trash_bin_visible=_get_entity(event.target) != null - ) - - EventSystem.on_grab_move.connect(func(event): - if !trash_bin_visible: - return - - var entity=_get_entity(event.target) - - if entity is Entity&&area.overlaps_body(entity): - if !to_delete.has(entity): - to_delete.append(entity) - trash_bin_large=true - - else: - to_delete.erase(entity) - trash_bin_large=false - - ) - - EventSystem.on_grab_up.connect(func(_event: EventPointer): - if !trash_bin_visible: - return - - for entity in to_delete: - entity.queue_free() - to_delete.clear() - trash_bin_large=false - trash_bin_visible=false - - House.body.save_all_entities() - ) - func _process(_delta): if !hand_active: if quick_actions.is_inside_tree(): palm.remove_child(quick_actions) @@ -124,28 +58,19 @@ func _physics_process(_delta): var grab_close = distance_grab <= grip_distance if trigger_close&&!pressed: - initiator.on_press.emit(Initiator.EventType.TRIGGER) + pointer.pressed(Initiator.EventType.TRIGGER) pressed = true elif !trigger_close&&pressed: - initiator.on_release.emit(Initiator.EventType.TRIGGER) + pointer.released(Initiator.EventType.TRIGGER) pressed = false if grab_close&&!grabbed: - initiator.on_press.emit(Initiator.EventType.GRIP) + pointer.pressed(Initiator.EventType.GRIP) grabbed = true elif !grab_close&&grabbed: - initiator.on_release.emit(Initiator.EventType.GRIP) + pointer.released(Initiator.EventType.GRIP) grabbed = false -func _get_entity(node: Node): - if node is Entity: - return node - - if node.get_parent() == null: - return null - - return _get_entity(node.get_parent()) - func _setup_hand(): TouchManager.add_finger(Finger.Type.INDEX_LEFT, $IndexTip/TouchArea) @@ -183,4 +108,4 @@ func _setup_hand(): initiator.node = self pointer = Pointer.new(initiator, ray) - add_child(pointer) \ No newline at end of file + add_child(pointer) diff --git a/app/content/system/controller_left/controller_left.tscn b/app/content/system/controller_left/controller_left.tscn index 2074e32..01f80e0 100644 --- a/app/content/system/controller_left/controller_left.tscn +++ b/app/content/system/controller_left/controller_left.tscn @@ -1,12 +1,12 @@ -[gd_scene load_steps=16 format=3 uid="uid://b30w6tywfj4fp"] +[gd_scene load_steps=12 format=3 uid="uid://b30w6tywfj4fp"] [ext_resource type="Script" path="res://content/system/controller_left/controller_left.gd" id="1_2j3qs"] -[ext_resource type="PackedScene" uid="uid://dqjcqdhe3rbtn" path="res://assets/models/trash_bin/trash_bin.gltf" id="3_m33ce"] [ext_resource type="PackedScene" uid="uid://dscp8x0ari57n" path="res://content/system/raycast/raycast.tscn" id="4_n7lao"] [ext_resource type="PackedScene" uid="uid://bufelcry36rw1" path="res://addons/xr-autohandtracker/auto_handtracker.tscn" id="4_oe7fv"] [ext_resource type="PackedScene" uid="uid://dhaqth6q5yw4n" path="res://addons/godot-xr-tools/hands/model/hand_l.gltf" id="5_w1pvs"] [ext_resource type="Shader" path="res://assets/materials/hands.gdshader" id="6_wk733"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="6_x5vuc"] +[ext_resource type="PackedScene" uid="uid://cfsnkoxb7mtok" path="res://content/system/trash_bin/trash_bin.tscn" id="7_vigb6"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m58yb"] ao_enabled = true @@ -15,91 +15,8 @@ ao_enabled = true material = SubResource("StandardMaterial3D_m58yb") size = Vector3(0.01, 0.01, 0.01) -[sub_resource type="CylinderShape3D" id="CylinderShape3D_x2eyr"] -height = 0.105954 -radius = 0.0447927 - -[sub_resource type="Animation" id="Animation_7owc4"] -length = 0.001 -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("trash_bin:scale:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(0.03, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("trash_bin:scale:y") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(0.03, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/2/type = "bezier" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("trash_bin:scale:z") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(0.03, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} - -[sub_resource type="Animation" id="Animation_hax52"] -resource_name = "add_trashbin" -length = 0.3 -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("trash_bin:scale:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0.03, -0.25, 0, 0.25, 0, 0.04, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 0.3) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("trash_bin:scale:y") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0.03, -0.25, 0, 0.25, 0, 0.04, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 0.3) -} -tracks/2/type = "bezier" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("trash_bin:scale:z") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0.03, -0.25, 0, 0.25, 0, 0.04, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 0.3) -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_hkli8"] -_data = { -"RESET": SubResource("Animation_7owc4"), -"add_trashbin": SubResource("Animation_hax52") -} - [sub_resource type="ShaderMaterial" id="ShaderMaterial_ca85m"] -render_priority = 0 +render_priority = 50 shader = ExtResource("6_wk733") shader_parameter/albedo = Color(1, 1, 1, 0.4) shader_parameter/fade_offset = 0.0 @@ -117,22 +34,6 @@ script = ExtResource("1_2j3qs") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] mesh = SubResource("BoxMesh_ir3co") -[node name="trash_bin" parent="." instance=ExtResource("3_m33ce")] -transform = Transform3D(0.03, 0, 0, 0, 0.03, 0, 0, 0, 0.03, 0.0864577, -0.119983, 0.0462675) - -[node name="Area3D" type="Area3D" parent="trash_bin"] -transform = Transform3D(25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0) -collision_layer = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="trash_bin/Area3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0542412, 0) -shape = SubResource("CylinderShape3D_x2eyr") - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -libraries = { -"": SubResource("AnimationLibrary_hkli8") -} - [node name="Raycast" parent="." instance=ExtResource("4_n7lao")] is_right = false @@ -163,7 +64,7 @@ collision_mask = 4 monitorable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="IndexTip/TouchArea"] -transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0, 1, 0, 0, 0) +transform = Transform3D(1, 0, 0, 1.49012e-08, 1, 0, 1.86265e-09, -7.45058e-09, 1, 0, -0.01, 0) shape = SubResource("CapsuleShape3D_65k2y") [node name="ThumbTip" type="BoneAttachment3D" parent="."] @@ -210,4 +111,7 @@ transform = Transform3D(1, 1.73472e-18, 0, 0, 1, 0, 0, 0, 1, 0.0600001, -5.68873 label = "humidity_mid" icon = true +[node name="TrashBin" parent="." instance=ExtResource("7_vigb6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.109418, -0.126353, 0.0278937) + [editable path="hand_l"] diff --git a/app/content/system/controller_right/controller_right.gd b/app/content/system/controller_right/controller_right.gd index f63b690..36cff06 100644 --- a/app/content/system/controller_right/controller_right.gd +++ b/app/content/system/controller_right/controller_right.gd @@ -58,15 +58,15 @@ func _physics_process(_delta): var grab_close = distance_grab <= grip_distance if trigger_close&&!pressed: - initiator.on_press.emit(Initiator.EventType.TRIGGER) + pointer.pressed(Initiator.EventType.TRIGGER) pressed = true elif !trigger_close&&pressed: - initiator.on_release.emit(Initiator.EventType.TRIGGER) + pointer.released(Initiator.EventType.TRIGGER) pressed = false if grab_close&&!grabbed: - initiator.on_press.emit(Initiator.EventType.GRIP) + pointer.pressed(Initiator.EventType.GRIP) grabbed = true elif !grab_close&&grabbed: - initiator.on_release.emit(Initiator.EventType.GRIP) + pointer.released(Initiator.EventType.GRIP) grabbed = false \ No newline at end of file diff --git a/app/content/system/controller_right/controller_right.tscn b/app/content/system/controller_right/controller_right.tscn index 0c3d427..e618885 100644 --- a/app/content/system/controller_right/controller_right.tscn +++ b/app/content/system/controller_right/controller_right.tscn @@ -54,7 +54,7 @@ collision_mask = 4 monitorable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="IndexTip/TouchArea"] -transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0, 1, 0, 0, 0) +transform = Transform3D(1, 0, 0, -1.49012e-08, 1, 0, 0, -7.45058e-09, 1, 0, -0.01, 0) shape = SubResource("CapsuleShape3D_66uu0") [node name="ThumbTip" type="BoneAttachment3D" parent="."] diff --git a/app/content/system/controller_right/hands_material.tres b/app/content/system/controller_right/hands_material.tres index 3613aec..d4402f7 100644 --- a/app/content/system/controller_right/hands_material.tres +++ b/app/content/system/controller_right/hands_material.tres @@ -3,7 +3,7 @@ [ext_resource type="Shader" path="res://assets/materials/hands.gdshader" id="1_kyekt"] [resource] -render_priority = 0 +render_priority = 50 shader = ExtResource("1_kyekt") shader_parameter/albedo = Color(1, 1, 1, 0.4) shader_parameter/fade_offset = 0.0 diff --git a/app/content/system/dot/dot.gd b/app/content/system/dot/dot.gd index 548fd14..5a055b7 100644 --- a/app/content/system/dot/dot.gd +++ b/app/content/system/dot/dot.gd @@ -7,6 +7,7 @@ const TOUCH_LONG = 400.0 @export var entity: Entity @onready var collision = $CollisionShape3D +@onready var snap_sound = $SnapSound @onready var label = $Label3D var active = R.state(false) var disabled = R.state(true) @@ -36,6 +37,7 @@ func _ready(): func _on_click(_event: EventPointer): if entity.has_method("quick_action")&&miniature.entity_select.selection_active() == false: entity.quick_action() + snap_sound.play() else: miniature.entity_select.toggle(entity) @@ -62,6 +64,7 @@ func _on_touch_leave(_event: EventTouch): if touch_ran: return if entity.has_method("quick_action")&&miniature.entity_select.selection_active() == false: + snap_sound.play() entity.quick_action() else: - miniature.entity_select.toggle(entity) \ No newline at end of file + miniature.entity_select.toggle(entity) diff --git a/app/content/system/dot/dot.tscn b/app/content/system/dot/dot.tscn index 58ceac5..147f700 100644 --- a/app/content/system/dot/dot.tscn +++ b/app/content/system/dot/dot.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://b5buw1sas18n4"] +[gd_scene load_steps=6 format=3 uid="uid://b5buw1sas18n4"] [ext_resource type="Script" path="res://content/system/dot/dot.gd" id="1_vdpux"] +[ext_resource type="AudioStream" uid="uid://du7ur0lu28cvn" path="res://assets/sound/finger-snap.mp3" id="3_04fcm"] [ext_resource type="FontVariation" uid="uid://sshfnckriqxn" path="res://assets/icons/icons.tres" id="4_504vw"] [sub_resource type="SphereShape3D" id="SphereShape3D_3wgjq"] @@ -34,3 +35,7 @@ monitoring = false [node name="CollisionShape3D2" type="CollisionShape3D" parent="Area3D"] shape = SubResource("SphereShape3D_y1ne8") + +[node name="SnapSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_04fcm") +volume_db = -20.0 diff --git a/app/content/system/hands/hands.gd b/app/content/system/hands/hands.gd deleted file mode 100644 index c9a0218..0000000 --- a/app/content/system/hands/hands.gd +++ /dev/null @@ -1,150 +0,0 @@ -extends Node3D - -const Pointer = preload ("res://lib/utils/pointer/pointer.gd") -const Initiator = preload ("res://lib/utils/pointer/initiator.gd") -const Finger = preload ("res://lib/utils/touch/finger.gd") -const Touch = preload ("res://lib/utils/touch/touch.gd") -const Collide = preload ("res://lib/utils/touch/collide.gd") -const Miniature = preload ("res://content/system/house/mini/miniature.gd") - -@onready var main = $"/root/Main" -@onready var palm = $XRHandLeft/Palm -@onready var quick_actions = $XRHandLeft/Palm/QuickActions -@onready var mini_view_button = $XRHandLeft/Palm/QuickActions/MiniView -@onready var temperature_button = $XRHandLeft/Palm/QuickActions/Temperature -@onready var humidity_button = $XRHandLeft/Palm/QuickActions/Humidity -@export var ray_left: RayCast3D -@export var ray_right: RayCast3D -@export var hand_left: Node3D -@export var hand_right: Node3D - -@onready var bone_attachments_right = [$XRHandRight/IndexTip, $XRHandRight/ThumbTip, $XRHandRight/MiddleTip] -@onready var bone_attachments_left = [$XRHandLeft/IndexTip, $XRHandLeft/ThumbTip, $XRHandLeft/MiddleTip] - -enum Fingers {INDEX, THUMB, MIDDLE} - -var left_initiator: Initiator = Initiator.new() -var right_initiator: Initiator = Initiator.new() -var touch: Touch -var collide: Collide -var left_pointer: Pointer -var right_pointer: Pointer -var press_distance = 0.03 -var grip_distance = 0.03 - -var pressed_left = false -var pressed_right = false -var grabbed_left = false -var grabbed_right = false - -func _ready(): - var fingers = { - Finger.Type.INDEX_RIGHT: $XRHandRight/IndexTip/TouchArea, - Finger.Type.INDEX_LEFT: $XRHandLeft/IndexTip/TouchArea, - Finger.Type.MIDDLE_RIGHT: $XRHandRight/MiddleTip/TouchArea, - Finger.Type.MIDDLE_LEFT: $XRHandLeft/MiddleTip/TouchArea - } - - touch = Touch.new(fingers) - collide = Collide.new(hand_left, hand_right, $XRHandLeft/IndexTip/TouchArea, $XRHandRight/IndexTip/TouchArea) - add_child(touch) - add_child(collide) - - _ready_hand() - - mini_view_button.on_button_up.connect(func(): - House.body.mini_view.small.value=!House.body.mini_view.small.value - ) - - temperature_button.on_button_up.connect(func(): - if House.body.mini_view.heatmap_type.value == Miniature.HeatmapType.TEMPERATURE: - House.body.mini_view.heatmap_type.value=Miniature.HeatmapType.NONE - else: - House.body.mini_view.heatmap_type.value=Miniature.HeatmapType.TEMPERATURE - ) - - humidity_button.on_button_up.connect(func(): - if House.body.mini_view.heatmap_type.value == Miniature.HeatmapType.HUMIDITY: - House.body.mini_view.heatmap_type.value=Miniature.HeatmapType.NONE - else: - House.body.mini_view.heatmap_type.value=Miniature.HeatmapType.HUMIDITY - ) - -func _ready_hand(): - left_initiator.type = Initiator.Type.HAND_LEFT - left_initiator.node = ray_left.get_parent() - - left_pointer = Pointer.new(left_initiator, ray_left) - add_child(left_pointer) - - right_initiator.type = Initiator.Type.HAND_RIGHT - right_initiator.node = ray_right.get_parent() - - right_pointer = Pointer.new(right_initiator, ray_right) - add_child(right_pointer) - -func _process(_delta): - if main.camera.global_transform.basis.z.dot(palm.global_transform.basis.y) > 0.85: - if quick_actions.is_inside_tree() == false: palm.add_child(quick_actions) - else: - if quick_actions.is_inside_tree(): palm.remove_child(quick_actions) - -func _physics_process(_delta): - _process_hand_left(hand_left) - _process_hand_right(hand_right) - -func _process_hand_left(hand: Node3D): - var index_tip = bone_attachments_left[Fingers.INDEX].get_node("Marker3D") - var thumb_tip = bone_attachments_left[Fingers.THUMB].get_node("Marker3D") - var middle_tip = bone_attachments_left[Fingers.MIDDLE].get_node("Marker3D") - - var _ray = ray_left if hand == hand_left else ray_right - var initiator = left_initiator if hand == hand_left else right_initiator - - var distance_trigger = index_tip.global_position.distance_to(thumb_tip.global_position) - var distance_grab = middle_tip.global_position.distance_to(thumb_tip.global_position) - - var trigger_close = distance_trigger <= press_distance - var grab_close = distance_grab <= grip_distance - - if trigger_close&&!pressed_left: - initiator.on_press.emit(Initiator.EventType.TRIGGER) - pressed_left = true - elif !trigger_close&&pressed_left: - initiator.on_release.emit(Initiator.EventType.TRIGGER) - pressed_left = false - - if grab_close&&!grabbed_left: - initiator.on_press.emit(Initiator.EventType.GRIP) - grabbed_left = true - elif !grab_close&&grabbed_left: - initiator.on_release.emit(Initiator.EventType.GRIP) - grabbed_left = false - -func _process_hand_right(hand: Node3D): - var index_tip = bone_attachments_right[Fingers.INDEX].get_node("Marker3D") - var thumb_tip = bone_attachments_right[Fingers.THUMB].get_node("Marker3D") - var middle_tip = bone_attachments_right[Fingers.MIDDLE].get_node("Marker3D") - - var _ray = ray_left if hand == hand_left else ray_right - var initiator = left_initiator if hand == hand_left else right_initiator - - var distance_trigger = index_tip.global_position.distance_to(thumb_tip.global_position) - var distance_grab = middle_tip.global_position.distance_to(thumb_tip.global_position) - - var trigger_close = distance_trigger <= press_distance - var grab_close = distance_grab <= grip_distance - - if trigger_close&&!pressed_right: - initiator.on_press.emit(Initiator.EventType.TRIGGER) - pressed_right = true - elif !trigger_close&&pressed_right: - initiator.on_release.emit(Initiator.EventType.TRIGGER) - pressed_right = false - - if grab_close&&!grabbed_right: - initiator.on_press.emit(Initiator.EventType.GRIP) - grabbed_right = true - elif !grab_close&&grabbed_right: - initiator.on_release.emit(Initiator.EventType.GRIP) - grabbed_right = false \ No newline at end of file diff --git a/app/content/system/hands/hands.tscn b/app/content/system/hands/hands.tscn deleted file mode 100644 index ce0eb3f..0000000 --- a/app/content/system/hands/hands.tscn +++ /dev/null @@ -1,137 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://bsx12q23v8apy"] - -[ext_resource type="Script" path="res://content/system/hands/hands.gd" id="1_c4f76"] -[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="3_te2p8"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_dopke"] -radius = 0.001 -height = 0.02 - -[node name="Hands" type="Node3D"] -script = ExtResource("1_c4f76") - -[node name="XRHandLeft" type="Node3D" parent="."] -transform = Transform3D(0.999999, -1.39628e-11, 0, 9.48119e-12, 0.999999, -4.54747e-13, 0, 0, 0.999999, -0.25, 0, 0) - -[node name="IndexTip" type="BoneAttachment3D" parent="XRHandLeft"] -transform = Transform3D(0.967526, 0.252326, -0.0150302, -0.0150302, 0.116784, 0.993043, 0.252326, -0.960569, 0.116784, -0.00665802, 0.0427913, -0.169868) -bone_name = "Index_Tip_L" -bone_idx = 9 -use_external_skeleton = true -external_skeleton = NodePath("") - -[node name="Marker3D" type="Marker3D" parent="XRHandLeft/IndexTip"] -gizmo_extents = 0.02 - -[node name="TouchArea" type="Area3D" parent="XRHandLeft/IndexTip"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0.01) -collision_layer = 0 -collision_mask = 4 -monitorable = false - -[node name="CollisionShape3D" type="CollisionShape3D" parent="XRHandLeft/IndexTip/TouchArea"] -transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0, 1, 0, 0, 0) -shape = SubResource("CapsuleShape3D_dopke") - -[node name="ThumbTip" type="BoneAttachment3D" parent="XRHandLeft"] -transform = Transform3D(0.967043, 0.24582, -0.0663439, -0.0663439, 0.494837, 0.86645, 0.24582, -0.833492, 0.494837, 0.0261569, 0.0891964, -0.0934418) -bone_name = "Thumb_Tip_L" -bone_idx = 4 -use_external_skeleton = true -external_skeleton = NodePath("") - -[node name="Marker3D" type="Marker3D" parent="XRHandLeft/ThumbTip"] -gizmo_extents = 0.02 - -[node name="MiddleTip" type="BoneAttachment3D" parent="XRHandLeft"] -transform = Transform3D(0.98042, 0.196912, 0.00149799, 0.001498, -0.015065, 0.999885, 0.196912, -0.980305, -0.0150651, -0.00327212, -0.00771424, -0.176318) -bone_name = "Middle_Tip_L" -bone_idx = 14 -use_external_skeleton = true -external_skeleton = NodePath("") - -[node name="Marker3D" type="Marker3D" parent="XRHandLeft/MiddleTip"] -gizmo_extents = 0.02 - -[node name="TouchArea" type="Area3D" parent="XRHandLeft/MiddleTip"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0.01) -collision_layer = 0 -collision_mask = 4 -monitorable = false - -[node name="CollisionShape3D" type="CollisionShape3D" parent="XRHandLeft/MiddleTip/TouchArea"] -transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0, 1, 0, 0, 0) -shape = SubResource("CapsuleShape3D_dopke") - -[node name="Palm" type="Node3D" parent="XRHandLeft"] -transform = Transform3D(-0.707107, -8.74228e-08, -0.707107, 6.18173e-08, -1, 6.18173e-08, -0.707107, -8.29045e-24, 0.707107, 0.01, -0.04, -5.58794e-09) - -[node name="QuickActions" type="Node3D" parent="XRHandLeft/Palm"] -transform = Transform3D(0.5, -4.47035e-08, -4.37114e-08, 4.37114e-08, -2.18557e-08, 0.5, -4.47035e-08, -0.5, -2.18557e-08, 0.005, 0, 0.005) - -[node name="MiniView" parent="XRHandLeft/Palm/QuickActions" instance=ExtResource("3_te2p8")] -transform = Transform3D(1, -3.55271e-15, -4.33681e-19, 3.55271e-15, 1, 3.5525e-15, -4.33681e-19, -3.55291e-15, 1, -0.0600001, 0, 0) -label = "nest_multi_room" -icon = true - -[node name="Temperature" parent="XRHandLeft/Palm/QuickActions" instance=ExtResource("3_te2p8")] -label = "device_thermostat" -icon = true - -[node name="Humidity" parent="XRHandLeft/Palm/QuickActions" instance=ExtResource("3_te2p8")] -transform = Transform3D(1, 1.73472e-18, 0, 0, 1, 0, 0, 0, 1, 0.0600001, -5.68873e-13, 0) -label = "humidity_mid" -icon = true - -[node name="XRHandRight" type="Node3D" parent="."] -transform = Transform3D(0.999998, 0, 0, 0, 0.999999, 0, 0, 0, 0.999999, 0.264391, 0, 0) - -[node name="IndexTip" type="BoneAttachment3D" parent="XRHandRight"] -transform = Transform3D(0.967526, -0.252326, 0.0150302, 0.0150302, 0.116784, 0.993043, -0.252326, -0.960569, 0.116784, 0.00665802, 0.0427913, -0.169868) -bone_name = "Index_Tip_R" -bone_idx = 9 -use_external_skeleton = true -external_skeleton = NodePath("") - -[node name="Marker3D" type="Marker3D" parent="XRHandRight/IndexTip"] -gizmo_extents = 0.02 - -[node name="TouchArea" type="Area3D" parent="XRHandRight/IndexTip"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0.01) -collision_layer = 0 -collision_mask = 4 -monitorable = false - -[node name="CollisionShape3D" type="CollisionShape3D" parent="XRHandRight/IndexTip/TouchArea"] -transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0, 1, 0, 0, 0) -shape = SubResource("CapsuleShape3D_dopke") - -[node name="ThumbTip" type="BoneAttachment3D" parent="XRHandRight"] -transform = Transform3D(0.967042, -0.24582, 0.0663439, 0.0663439, 0.494837, 0.866449, -0.24582, -0.833492, 0.494837, -0.0261569, 0.0891963, -0.0934418) -bone_name = "Thumb_Tip_R" -bone_idx = 4 -use_external_skeleton = true -external_skeleton = NodePath("") - -[node name="Marker3D" type="Marker3D" parent="XRHandRight/ThumbTip"] -gizmo_extents = 0.02 - -[node name="MiddleTip" type="BoneAttachment3D" parent="XRHandRight"] -transform = Transform3D(0.98042, -0.196912, -0.00149799, -0.001498, -0.015065, 0.999885, -0.196912, -0.980305, -0.0150651, 0.00327212, -0.00771424, -0.176318) -bone_name = "Middle_Tip_R" -bone_idx = 14 -use_external_skeleton = true -external_skeleton = NodePath("") - -[node name="Marker3D" type="Marker3D" parent="XRHandRight/MiddleTip"] -gizmo_extents = 0.02 - -[node name="TouchArea" type="Area3D" parent="XRHandRight/MiddleTip"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0.01) -collision_layer = 0 -collision_mask = 4 -monitorable = false - -[node name="CollisionShape3D" type="CollisionShape3D" parent="XRHandRight/MiddleTip/TouchArea"] -transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0, 1, 0, 0, 0) -shape = SubResource("CapsuleShape3D_dopke") diff --git a/app/content/system/raycast/raycast.gd b/app/content/system/raycast/raycast.gd index 4f9b2f2..b2de215 100644 --- a/app/content/system/raycast/raycast.gd +++ b/app/content/system/raycast/raycast.gd @@ -28,11 +28,11 @@ func _ready(): get_parent().button_pressed.connect(func(button: String): if _event_type_map.has(button): - initiator.on_press.emit(_event_type_map[button]) + pointer.pressed(_event_type_map[button]) ) get_parent().button_released.connect(func(button: String): if _event_type_map.has(button): - initiator.on_release.emit(_event_type_map[button]) + pointer.released(_event_type_map[button]) ) func _physics_process(_delta): diff --git a/app/content/system/trash_bin/trash_bin.gd b/app/content/system/trash_bin/trash_bin.gd new file mode 100644 index 0000000..ee9c618 --- /dev/null +++ b/app/content/system/trash_bin/trash_bin.gd @@ -0,0 +1,85 @@ +extends Node3D + +const Entity = preload ("res://content/entities/entity.gd") + +@onready var trash_bin = $trash_bin +@onready var bin_area = $trash_bin/Area3D + +@onready var delete_sound = $DeleteSound +@onready var animation = $AnimationPlayer + +var to_delete = [] +var trash_bin_visible: bool = true: + set(value): + if trash_bin_visible == value: + return + + if value: + add_child(trash_bin) + else: + if animation.is_playing(): + await animation.animation_finished + remove_child(trash_bin) + + trash_bin_visible = value + +var trash_bin_large: bool = false: + set(value): + if trash_bin_large == value: + return + + if value: + animation.play("add_trashbin") + else: + animation.play_backwards("add_trashbin") + + trash_bin_large = value + +func _ready(): + trash_bin_visible = false + + EventSystem.on_grab_down.connect(func(event: EventPointer): + trash_bin_visible=_get_entity(event.target) != null + ) + + EventSystem.on_grab_move.connect(func(event): + if !trash_bin_visible: + return + + var entity=_get_entity(event.target) + + if entity is Entity&&bin_area.overlaps_body(entity): + if !to_delete.has(entity): + to_delete.append(entity) + trash_bin_large=true + + else: + to_delete.erase(entity) + trash_bin_large=false + + ) + + EventSystem.on_grab_up.connect(func(_event: EventPointer): + if !trash_bin_visible: + return + + if to_delete.size() > 0: + delete_sound.play() + + for entity in to_delete: + entity.queue_free() + to_delete.clear() + trash_bin_large=false + trash_bin_visible=false + + House.body.save_all_entities() + ) + +func _get_entity(node: Node): + if node is Entity: + return node + + if node.get_parent() == null: + return null + + return _get_entity(node.get_parent()) \ No newline at end of file diff --git a/app/content/system/trash_bin/trash_bin.tscn b/app/content/system/trash_bin/trash_bin.tscn new file mode 100644 index 0000000..f74d7e0 --- /dev/null +++ b/app/content/system/trash_bin/trash_bin.tscn @@ -0,0 +1,93 @@ +[gd_scene load_steps=8 format=3 uid="uid://cfsnkoxb7mtok"] + +[ext_resource type="PackedScene" uid="uid://dqjcqdhe3rbtn" path="res://assets/models/trash_bin/trash_bin.gltf" id="1_g2oxl"] +[ext_resource type="Script" path="res://content/system/trash_bin/trash_bin.gd" id="1_krk5w"] +[ext_resource type="AudioStream" uid="uid://bm2uxwqfmnvs6" path="res://assets/sound/crumple.mp3" id="3_p7u0v"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_fmaps"] +height = 0.105954 +radius = 0.0447927 + +[sub_resource type="Animation" id="Animation_wg64y"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("trash_bin:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.03, 0.03, 0.03)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("trash_bin:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, -0.02, 0)] +} + +[sub_resource type="Animation" id="Animation_cxelh"] +resource_name = "add_trashbin" +length = 0.4 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("trash_bin:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0.03, 0.03, 0.03), Vector3(0.04, 0.04, 0.04)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("trash_bin:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, -0.02, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hrejr"] +_data = { +"RESET": SubResource("Animation_wg64y"), +"add_trashbin": SubResource("Animation_cxelh") +} + +[node name="TrashBin" type="Node3D"] +script = ExtResource("1_krk5w") + +[node name="trash_bin" parent="." instance=ExtResource("1_g2oxl")] +transform = Transform3D(0.03, 0, 0, 0, 0.03, 0, 0, 0, 0.03, 0, -0.02, 0) + +[node name="Area3D" type="Area3D" parent="trash_bin"] +transform = Transform3D(25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0) +collision_layer = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="trash_bin/Area3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0542412, 0) +shape = SubResource("CylinderShape3D_fmaps") + +[node name="DeleteSound" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource("3_p7u0v") +volume_db = -10.0 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_hrejr") +} diff --git a/app/content/ui/components/button/button.gd b/app/content/ui/components/button/button.gd index 8e2f592..845c6fe 100644 --- a/app/content/ui/components/button/button.gd +++ b/app/content/ui/components/button/button.gd @@ -19,6 +19,7 @@ const ECHO_WAIT_REPEAT = 0.1 @onready var finger_area_collision: CollisionShape3D = $FingerArea/CollisionShape3D @onready var touch_collision: CollisionShape3D = $TouchBody/CollisionShape3D @onready var touch: StaticBody3D = $TouchBody +@onready var click_sound = $ClickSound @export var focusable: bool = true: set(value): @@ -115,7 +116,7 @@ func _on_press_down(event): event.bubbling = false return - AudioPlayer.play_effect("click") + click_sound.play() if toggleable: return @@ -163,7 +164,7 @@ func _on_touch_enter(event: EventTouch): event.bubbling = false return - AudioPlayer.play_effect("click") + click_sound.play() if toggleable: active = !active diff --git a/app/content/ui/components/button/button.tscn b/app/content/ui/components/button/button.tscn index f18baf5..f23899c 100644 --- a/app/content/ui/components/button/button.tscn +++ b/app/content/ui/components/button/button.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=8 format=3 uid="uid://bsjqdvkt0u87c"] +[gd_scene load_steps=9 format=3 uid="uid://bsjqdvkt0u87c"] [ext_resource type="Script" path="res://content/ui/components/button/button.gd" id="1_74x7g"] [ext_resource type="Shader" path="res://content/ui/components/panel/glass.gdshader" id="2_db5by"] [ext_resource type="Script" path="res://content/ui/components/panel/panel.gd" id="3_skm86"] +[ext_resource type="AudioStream" uid="uid://c1yu80uj3fsn7" path="res://assets/sound/click.wav" id="4_51sb0"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_n8om1"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_826v7"] resource_local_to_scene = true render_priority = 10 shader = ExtResource("2_db5by") @@ -19,7 +20,7 @@ shader_parameter/corner_radius = 0.2 shader_parameter/roughness = 0.3 shader_parameter/grain_amount = 0.02 -[sub_resource type="QuadMesh" id="QuadMesh_dxm1i"] +[sub_resource type="QuadMesh" id="QuadMesh_02501"] size = Vector2(0.04, 0.04) [sub_resource type="BoxShape3D" id="BoxShape3D_xwopm"] @@ -42,8 +43,8 @@ collision_mask = 0 [node name="Panel3D" type="MeshInstance3D" parent="Body"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) -material_override = SubResource("ShaderMaterial_n8om1") -mesh = SubResource("QuadMesh_dxm1i") +material_override = SubResource("ShaderMaterial_826v7") +mesh = SubResource("QuadMesh_02501") skeleton = NodePath("../..") script = ExtResource("3_skm86") size = Vector2(0.04, 0.04) @@ -78,3 +79,7 @@ collision_mask = 0 [node name="CollisionShape3D" type="CollisionShape3D" parent="TouchBody"] shape = SubResource("BoxShape3D_xwopm") + +[node name="ClickSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("4_51sb0") +volume_db = -18.0 diff --git a/app/content/ui/components/input/input.gd b/app/content/ui/components/input/input.gd index e358066..27f0d3c 100644 --- a/app/content/ui/components/input/input.gd +++ b/app/content/ui/components/input/input.gd @@ -13,6 +13,7 @@ signal on_text_changed(text: String) @onready var animation: AnimationPlayer = $AnimationPlayer @onready var label: Label3D = $Body/Label @onready var placeholder_label: Label3D = $Body/Placeholder +@onready var snap_sound = $SnapSound @export var placeholder: String = "": set(value): @@ -135,6 +136,7 @@ func _on_focus_in(_event): caret.visible = true panel.active = true animation.play("blink") + snap_sound.play() _update_placeholder() func update_caret_position(event): diff --git a/app/content/ui/components/input/input.tscn b/app/content/ui/components/input/input.tscn index 8ecf22b..6cd016a 100644 --- a/app/content/ui/components/input/input.tscn +++ b/app/content/ui/components/input/input.tscn @@ -5,7 +5,7 @@ [ext_resource type="FontVariation" uid="uid://d2ofyimg5s65q" path="res://assets/fonts/ui_font_500.tres" id="3_ij5fh"] [ext_resource type="Shader" path="res://content/ui/components/panel/glass.gdshader" id="3_nl02b"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_a00dk"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_46adm"] resource_local_to_scene = true render_priority = 10 shader = ExtResource("3_nl02b") @@ -20,7 +20,7 @@ shader_parameter/corner_radius = 0.2 shader_parameter/roughness = 0.3 shader_parameter/grain_amount = 0.02 -[sub_resource type="QuadMesh" id="QuadMesh_har6y"] +[sub_resource type="QuadMesh" id="QuadMesh_1me1o"] size = Vector2(0.15, 0.03) [sub_resource type="BoxShape3D" id="BoxShape3D_x4yp8"] @@ -83,8 +83,8 @@ collision_mask = 6 [node name="Panel3D" type="MeshInstance3D" parent="Body"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) -material_override = SubResource("ShaderMaterial_a00dk") -mesh = SubResource("QuadMesh_har6y") +material_override = SubResource("ShaderMaterial_46adm") +mesh = SubResource("QuadMesh_1me1o") script = ExtResource("3_3bvrj") size = Vector2(0.15, 0.03) @@ -128,3 +128,5 @@ root_node = NodePath("../Body") libraries = { "": SubResource("AnimationLibrary_1sy4t") } + +[node name="SnapSound" type="AudioStreamPlayer" parent="."] diff --git a/app/content/ui/menu/edit/edit_menu.gd b/app/content/ui/menu/edit/edit_menu.gd index a4db3d2..b541c94 100644 --- a/app/content/ui/menu/edit/edit_menu.gd +++ b/app/content/ui/menu/edit/edit_menu.gd @@ -4,6 +4,7 @@ const ButtonScene = preload ("res://content/ui/components/button/button.tscn") @onready var devices_page = $Devices @onready var entities_page = $Entities +@onready var spawn_sound = $SpawnSound var selected_device = R.state(null) @@ -17,7 +18,7 @@ func _ready(): ) entities_page.on_select_entity.connect(func(entity_name): - AudioPlayer.play_effect("spawn") + spawn_sound.play() var entity=House.body.create_entity(entity_name, global_position) diff --git a/app/content/ui/menu/edit/edit_menu.tscn b/app/content/ui/menu/edit/edit_menu.tscn index 5a21003..34d4f6b 100644 --- a/app/content/ui/menu/edit/edit_menu.tscn +++ b/app/content/ui/menu/edit/edit_menu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://crrb0l3ekuotj"] +[gd_scene load_steps=14 format=3 uid="uid://crrb0l3ekuotj"] [ext_resource type="Script" path="res://content/ui/menu/edit/edit_menu.gd" id="1_34cbn"] [ext_resource type="Script" path="res://content/ui/menu/edit/devices.gd" id="2_rkvf4"] @@ -10,6 +10,7 @@ [ext_resource type="Script" path="res://content/ui/menu/edit/entities.gd" id="5_t34xe"] [ext_resource type="Script" path="res://content/ui/components/flex_container/flex_container.gd" id="6_cr6p6"] [ext_resource type="PackedScene" uid="uid://blrhy2uccrdn4" path="res://content/ui/components/input/input.tscn" id="6_evh58"] +[ext_resource type="AudioStream" uid="uid://cn2qohl6abgeu" path="res://assets/sound/spawn.wav" id="11_7qxwt"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_hstwo"] render_priority = -3 @@ -131,3 +132,7 @@ visible = false material_override = SubResource("ShaderMaterial_hstwo") mesh = SubResource("QuadMesh_4pj6f") skeleton = NodePath("../..") + +[node name="SpawnSound" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource("11_7qxwt") +volume_db = -10.0 diff --git a/app/content/ui/menu/menu.gd b/app/content/ui/menu/menu.gd index bb0c8b6..ca458f5 100644 --- a/app/content/ui/menu/menu.gd +++ b/app/content/ui/menu/menu.gd @@ -3,6 +3,8 @@ extends Node3D const Notification = preload ("res://content/ui/components/notification/notification.tscn") @onready var animation_player = $AnimationPlayer +@onready var open_sound = $OpenSound +@onready var close_sound = $CloseSound @onready var notify_place = $AnimationContainer/NotifyPlace @onready var main = $"/root/Main" @@ -18,10 +20,12 @@ func _ready(): main.add_child(self) move_into_view() animation_player.play_backwards("hide_menu") - AudioPlayer.play_effect("open_menu") + open_sound.play() + close_sound.stop() else: animation_player.play("hide_menu") - AudioPlayer.play_effect("close_menu") + close_sound.play() + open_sound.stop() ) animation_player.animation_finished.connect(func(_animation): diff --git a/app/content/ui/menu/menu.tscn b/app/content/ui/menu/menu.tscn index 38ecc2d..0ceb679 100644 --- a/app/content/ui/menu/menu.tscn +++ b/app/content/ui/menu/menu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=21 format=3 uid="uid://c3kdssrmv84kv"] +[gd_scene load_steps=23 format=3 uid="uid://c3kdssrmv84kv"] [ext_resource type="Script" path="res://content/ui/menu/menu.gd" id="1_ng4u3"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="2_8coxu"] @@ -11,9 +11,11 @@ [ext_resource type="PackedScene" uid="uid://ddpxthb414unp" path="res://content/ui/menu/view/view_menu.tscn" id="8_71pkg"] [ext_resource type="PackedScene" uid="uid://c01gkeldvjwtr" path="res://content/ui/menu/room/room_menu.tscn" id="10_u4i1x"] [ext_resource type="PackedScene" uid="uid://c6r4higceibif" path="res://content/ui/menu/settings/settings_menu.tscn" id="11_7wm6b"] +[ext_resource type="AudioStream" uid="uid://nmm8y0xt5wyj" path="res://assets/sound/open_menu.wav" id="12_dsnuc"] +[ext_resource type="AudioStream" uid="uid://bnx2uv4nmra8f" path="res://assets/sound/close_menu.wav" id="13_nnnln"] [sub_resource type="BoxShape3D" id="BoxShape3D_e1esh"] -size = Vector3(0.51, 0.32, 0.013) +size = Vector3(0.51, 0.32, 0.034332) [sub_resource type="ShaderMaterial" id="ShaderMaterial_du6qr"] render_priority = 0 @@ -188,7 +190,7 @@ _data = { } [sub_resource type="BoxShape3D" id="BoxShape3D_emmtq"] -size = Vector3(0.542114, 0.355225, 0.0774612) +size = Vector3(0.542114, 0.355225, 0.091465) [node name="Menu" type="StaticBody3D"] collision_layer = 6 @@ -196,7 +198,7 @@ collision_mask = 6 script = ExtResource("1_ng4u3") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, -0.005) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, -0.015666) shape = SubResource("BoxShape3D_e1esh") [node name="Movable" type="Node" parent="."] @@ -303,5 +305,13 @@ collision_mask = 0 monitoring = false [node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0299683, 0, 0.00889969) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0299683, 0, 0.0018978) shape = SubResource("BoxShape3D_emmtq") + +[node name="OpenSound" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource("12_dsnuc") +volume_db = -6.0 + +[node name="CloseSound" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource("13_nnnln") +volume_db = -6.0 diff --git a/app/export_presets.cfg b/app/export_presets.cfg index 993b505..75dff01 100644 --- a/app/export_presets.cfg +++ b/app/export_presets.cfg @@ -3,6 +3,7 @@ name="Android" platform="Android" runnable=true +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -13,12 +14,16 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.0.options] custom_template/debug="" custom_template/release="" gradle_build/use_gradle_build=true +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false gradle_build/export_format=0 gradle_build/min_sdk="" gradle_build/target_sdk="" @@ -221,12 +226,18 @@ xr_features/enable_pico_plugin=false xr_features/enable_lynx_plugin=false xr_features/enable_khronos_plugin=false meta_xr_features/use_scene_api=false +meta_xr_features/face_tracking=0 +meta_xr_features/render_model=0 +meta_xr_features/use_overlay_keyboard=false +meta_xr_features/use_experimental_features=false +meta_xr_features/boundary_mode=0 [preset.1] name="AndroidProduction" platform="Android" runnable=false +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -237,12 +248,16 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.1.options] custom_template/debug="" custom_template/release="" gradle_build/use_gradle_build=true +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false gradle_build/export_format=0 gradle_build/min_sdk="" gradle_build/target_sdk="32" @@ -445,12 +460,18 @@ xr_features/enable_pico_plugin=false xr_features/enable_lynx_plugin=false xr_features/enable_khronos_plugin=false meta_xr_features/use_scene_api=false +meta_xr_features/face_tracking=0 +meta_xr_features/render_model=0 +meta_xr_features/use_overlay_keyboard=false +meta_xr_features/use_experimental_features=false +meta_xr_features/boundary_mode=1 [preset.2] name="AndroidProduction Pico" platform="Android" runnable=false +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -461,12 +482,16 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.2.options] custom_template/debug="" custom_template/release="" gradle_build/use_gradle_build=true +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false gradle_build/export_format=0 gradle_build/min_sdk="" gradle_build/target_sdk="32" @@ -669,12 +694,18 @@ plugins/GodotOpenXRPico=false xr_features/hand_tracking=1 xr_features/hand_tracking_frequency=1 xr_features/passthrough=2 +meta_xr_features/face_tracking=0 +meta_xr_features/render_model=0 +meta_xr_features/use_overlay_keyboard=false +meta_xr_features/use_experimental_features=false +meta_xr_features/boundary_mode=0 [preset.3] name="AndroidProduction Khronos" platform="Android" runnable=false +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -685,12 +716,16 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.3.options] custom_template/debug="" custom_template/release="" gradle_build/use_gradle_build=true +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false gradle_build/export_format=0 gradle_build/min_sdk="" gradle_build/target_sdk="32" @@ -893,3 +928,8 @@ plugins/GodotOpenXRPico=false xr_features/hand_tracking=1 xr_features/hand_tracking_frequency=1 xr_features/passthrough=2 +meta_xr_features/face_tracking=0 +meta_xr_features/render_model=0 +meta_xr_features/use_overlay_keyboard=false +meta_xr_features/use_experimental_features=false +meta_xr_features/boundary_mode=0 diff --git a/app/lib/globals/audio_player.gd b/app/lib/globals/audio_player.gd deleted file mode 100644 index 4165940..0000000 --- a/app/lib/globals/audio_player.gd +++ /dev/null @@ -1,26 +0,0 @@ -extends AudioStreamPlayer - -const click_sound = preload ("res://assets/sound/click.wav") -const spawn_sound = preload ("res://assets/sound/spawn.wav") -const open_menu = preload ("res://assets/sound/open_menu.wav") -const close_menu = preload ("res://assets/sound/close_menu.wav") - -func _ready(): - volume_db = -18 - -## Plays a given sound effect -func play_effect(sound): - if sound == "click": - stream = click_sound - volume_db = -18 - elif sound == "spawn": - stream = spawn_sound - volume_db = -10 - elif sound == "open_menu": - stream = open_menu - volume_db = -6 - elif sound == "close_menu": - stream = close_menu - volume_db = -6 - - play() diff --git a/app/lib/utils/pointer/initiator.gd b/app/lib/utils/pointer/initiator.gd index 12e13d0..8c8481f 100644 --- a/app/lib/utils/pointer/initiator.gd +++ b/app/lib/utils/pointer/initiator.gd @@ -13,9 +13,6 @@ enum EventType { TRIGGER, } -signal on_press(type: EventType) -signal on_release(type: EventType) - var node: Node3D var type: Type diff --git a/app/lib/utils/pointer/pointer.gd b/app/lib/utils/pointer/pointer.gd index e299a4a..8cd44a6 100644 --- a/app/lib/utils/pointer/pointer.gd +++ b/app/lib/utils/pointer/pointer.gd @@ -19,10 +19,6 @@ func _init(initiator: Initiator, ray: RayCast3D): self.initiator = initiator self.ray = ray -func _ready(): - initiator.on_press.connect(_on_pressed) - initiator.on_release.connect(_on_released) - func _physics_process(_delta): _handle_enter_leave() _handle_move() @@ -56,7 +52,7 @@ func _handle_enter_leave(): last_collided = collider -func _on_pressed(type: Initiator.EventType): +func pressed(type: Initiator.EventType): var collider = ray.get_collider() if collider == null: @@ -73,7 +69,7 @@ func _on_pressed(type: Initiator.EventType): click_point = ray.get_collision_point() _emit_event("grab_down", collider) -func _on_released(type: Initiator.EventType): +func released(type: Initiator.EventType): match type: Initiator.EventType.TRIGGER: if is_pressed: diff --git a/app/lib/utils/screenshot.gd b/app/lib/utils/screenshot.gd new file mode 100644 index 0000000..a1b15a8 --- /dev/null +++ b/app/lib/utils/screenshot.gd @@ -0,0 +1,65 @@ +extends Node + +const photo_sound_stream = preload ("res://assets/sound/camera-shutter.mp3") + +var timer = Timer.new() +var photo_sound = AudioStreamPlayer.new() + +func _ready(): + timer.wait_time = 2 + timer.one_shot = true + + photo_sound.stream = photo_sound_stream + photo_sound.volume_db = -10 + + EventSystem.on_action_down.connect(func(action): + if action.name == "ax_button": + timer.start() + ) + + timer.timeout.connect(func(): + EventSystem.notify("Screenshot taken", EventNotify.Type.INFO) + take_screenshot() + ) + + add_child(timer) + add_child(photo_sound) + +func _input(event): + if event is InputEventKey and Input.is_key_pressed(KEY_F2): + timer.start() + +func take_screenshot(): + var file_name = "%s.png" % Time.get_datetime_string_from_system().replace(":", "-") + + var path = OS.get_system_dir(OS.SYSTEM_DIR_PICTURES) + "/immersive-home/" + file_name + + print("Saving screenshot to: %s" % path) + + if not FileAccess.file_exists(path): + var dir = path.get_base_dir() + DirAccess.open("user://").make_dir_recursive(dir) + + var image + + if OS.get_name() == "Android": + var viewport_rid = get_viewport().get_viewport_rid() + var texture_rid = RenderingServer.viewport_get_texture(viewport_rid) + image = RenderingServer.texture_2d_layer_get(texture_rid, 0) + print(image) + + if image == null: + return false + + else: + var vp = get_viewport() + var texture = vp.get_texture() + image = texture.get_image() + + if image == null: + return false + + image.save_png(path) + photo_sound.play() + + return true \ No newline at end of file diff --git a/app/project.godot b/app/project.godot index 9e33be5..8ee7307 100644 --- a/app/project.godot +++ b/app/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="ImmersiveHome" run/main_scene="res://content/main.tscn" -config/features=PackedStringArray("4.2", "GL Compatibility") +config/features=PackedStringArray("4.3", "GL Compatibility") config/icon="res://assets/logo.png" [audio] @@ -22,7 +22,6 @@ driver/enable_input=true [autoload] XRToolsUserSettings="*res://addons/godot-xr-tools/user_settings/user_settings.gd" -AudioPlayer="*res://lib/globals/audio_player.gd" HomeApi="*res://lib/globals/home_api.gd" Store="*res://lib/globals/main_store.gd" EventSystem="*res://lib/globals/event_system.gd" @@ -71,12 +70,13 @@ common/physics_ticks_per_second=30 renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" textures/vram_compression/import_etc2_astc=true +environment/ssao/quality=0 viewport/transparent_background=true [xr] openxr/enabled=true -openxr/foveation_level=1 +openxr/foveation_level=3 openxr/foveation_dynamic=true openxr/startup_alert=false shaders/enabled=true