diff --git a/README.md b/README.md index a905b1b..33e23cd 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,3 @@ A cross-platform SteamVR overlay application that aims to have many useful tools ## Usage At the moment all interacions are done with the trigger buttons, this will use steamvr actions and be configurable in the future. -To load in images with the `ImageViewer` overlay, they have to be in the user folder; that is `%Appdata%\Roaming\ovr-utils\` on windows or `~/.local/share/ovr-utils/` on linux. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..470d3a7 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,35 @@ +# WIP documentation + +## Hierarchy + +``` +OverlayManager +- MyOverlayInstance + - [...] + - OverlayViewport + - Container + - MyOverlay + - [...] + - OverlayInteraction + - VR + - [colliders for vr trackers etc] + - Grabbable + - Clickable + - Touchable + +``` + + +## overlay interaction types +Each overlay instance has a OverlayInteraction node, which spawns the different interaction modules depending on what is defined in the OVERLAY_PROPERTIES. + +The modules/interaction types are: +- Grabbable +- Touchable +- Clickable + +These modules connect signals from different places to the interaction manager (`OverlayInteraction`) +Touchable connects collision signals to mouse inputs (potentially logic between to help prevent double presses) +Clickable connects vr button signals to mouse inputs +Grabbable connects vr button signals to grab logic, while telling the interaction manager to pause normal interaction + diff --git a/ovr-utils/Main.tscn b/ovr-utils/Main.tscn deleted file mode 100644 index 0f1756c..0000000 --- a/ovr-utils/Main.tscn +++ /dev/null @@ -1,3 +0,0 @@ -[gd_scene format=2] - -[node name="Main" type="Node"] diff --git a/ovr-utils/addons/godot-openvr/meshes/README.md b/ovr-utils/addons/godot-openvr/meshes/README.md deleted file mode 100644 index a609eb7..0000000 --- a/ovr-utils/addons/godot-openvr/meshes/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The resources here are taken from: `Steam\steamapps\common\SteamVR\resources\rendermodels\vr_glove\` - -To save space in the repository only the slim models are included while the texture maps have been taken from the full versions. - -See `../scenes/ovr_left_hand.tscn` and `../scenes/ovr_right_hand.tscn` for implementation details diff --git a/ovr-utils/addons/godot-openvr/meshes/blinn1.material b/ovr-utils/addons/godot-openvr/meshes/blinn1.material deleted file mode 100644 index 6f0a5b0..0000000 Binary files a/ovr-utils/addons/godot-openvr/meshes/blinn1.material and /dev/null differ diff --git a/ovr-utils/addons/godot-openvr/meshes/blinn2.material b/ovr-utils/addons/godot-openvr/meshes/blinn2.material deleted file mode 100644 index e82f4ce..0000000 Binary files a/ovr-utils/addons/godot-openvr/meshes/blinn2.material and /dev/null differ diff --git a/ovr-utils/addons/godot-openvr/meshes/hands_albedo.png.import b/ovr-utils/addons/godot-openvr/meshes/hands_albedo.png.import deleted file mode 100644 index ed71632..0000000 --- a/ovr-utils/addons/godot-openvr/meshes/hands_albedo.png.import +++ /dev/null @@ -1,36 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path.s3tc="res://.import/hands_albedo.png-149a10baba7906560a9f9eab8fadf1d8.s3tc.stex" -path.etc2="res://.import/hands_albedo.png-149a10baba7906560a9f9eab8fadf1d8.etc2.stex" -metadata={ -"imported_formats": [ "s3tc", "etc2" ], -"vram_texture": true -} - -[deps] - -source_file="res://addons/godot-openvr/meshes/hands_albedo.png" -dest_files=[ "res://.import/hands_albedo.png-149a10baba7906560a9f9eab8fadf1d8.s3tc.stex", "res://.import/hands_albedo.png-149a10baba7906560a9f9eab8fadf1d8.etc2.stex" ] - -[params] - -compress/mode=2 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=true -flags/filter=true -flags/mipmaps=true -flags/anisotropic=false -flags/srgb=1 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/ovr-utils/addons/godot-openvr/meshes/hands_normal.png b/ovr-utils/addons/godot-openvr/meshes/hands_normal.png deleted file mode 100644 index d708102..0000000 Binary files a/ovr-utils/addons/godot-openvr/meshes/hands_normal.png and /dev/null differ diff --git a/ovr-utils/addons/godot-openvr/meshes/hands_normal.png.import b/ovr-utils/addons/godot-openvr/meshes/hands_normal.png.import deleted file mode 100644 index d34f073..0000000 --- a/ovr-utils/addons/godot-openvr/meshes/hands_normal.png.import +++ /dev/null @@ -1,36 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path.s3tc="res://.import/hands_normal.png-eab7a86e959f13e1294e8f67904a8873.s3tc.stex" -path.etc2="res://.import/hands_normal.png-eab7a86e959f13e1294e8f67904a8873.etc2.stex" -metadata={ -"imported_formats": [ "s3tc", "etc2" ], -"vram_texture": true -} - -[deps] - -source_file="res://addons/godot-openvr/meshes/hands_normal.png" -dest_files=[ "res://.import/hands_normal.png-eab7a86e959f13e1294e8f67904a8873.s3tc.stex", "res://.import/hands_normal.png-eab7a86e959f13e1294e8f67904a8873.etc2.stex" ] - -[params] - -compress/mode=2 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=1 -flags/repeat=true -flags/filter=true -flags/mipmaps=true -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/ovr-utils/addons/godot-openvr/meshes/models_hands_vr_glove_vmat.material b/ovr-utils/addons/godot-openvr/meshes/models_hands_vr_glove_vmat.material deleted file mode 100644 index 3a870d4..0000000 Binary files a/ovr-utils/addons/godot-openvr/meshes/models_hands_vr_glove_vmat.material and /dev/null differ diff --git a/ovr-utils/addons/godot-openvr/meshes/vr_glove_left_model_slim.glb b/ovr-utils/addons/godot-openvr/meshes/vr_glove_left_model_slim.glb deleted file mode 100644 index 7214a90..0000000 Binary files a/ovr-utils/addons/godot-openvr/meshes/vr_glove_left_model_slim.glb and /dev/null differ diff --git a/ovr-utils/addons/godot-openvr/meshes/vr_glove_left_model_slim.glb.import b/ovr-utils/addons/godot-openvr/meshes/vr_glove_left_model_slim.glb.import deleted file mode 100644 index 506e9dd..0000000 --- a/ovr-utils/addons/godot-openvr/meshes/vr_glove_left_model_slim.glb.import +++ /dev/null @@ -1,1063 +0,0 @@ -[remap] - -importer="scene" -type="PackedScene" -path="res://.import/vr_glove_left_model_slim.glb-8eb4d606fd297e3eb0e89b81fe711f50.scn" - -[deps] - -source_file="res://addons/godot-openvr/meshes/vr_glove_left_model_slim.glb" -dest_files=[ "res://.import/vr_glove_left_model_slim.glb-8eb4d606fd297e3eb0e89b81fe711f50.scn" ] - -[params] - -nodes/root_type="Spatial" -nodes/root_name="Scene Root" -nodes/root_scale=1.0 -nodes/custom_script="" -nodes/storage=0 -materials/location=1 -materials/storage=1 -materials/keep_on_reimport=true -meshes/compress=true -meshes/ensure_tangents=true -meshes/storage=0 -meshes/light_baking=0 -meshes/lightmap_texel_size=0.1 -skins/use_named_skins=true -external_files/store_in_subdir=false -animation/import=true -animation/fps=15 -animation/filter_script="" -animation/storage=false -animation/keep_custom_tracks=false -animation/optimizer/enabled=true -animation/optimizer/max_linear_error=0.05 -animation/optimizer/max_angular_error=0.01 -animation/optimizer/max_angle=22 -animation/optimizer/remove_unused_tracks=true -animation/clips/amount=0 -animation/clip_1/name="" -animation/clip_1/start_frame=0 -animation/clip_1/end_frame=0 -animation/clip_1/loops=false -animation/clip_2/name="" -animation/clip_2/start_frame=0 -animation/clip_2/end_frame=0 -animation/clip_2/loops=false -animation/clip_3/name="" -animation/clip_3/start_frame=0 -animation/clip_3/end_frame=0 -animation/clip_3/loops=false -animation/clip_4/name="" -animation/clip_4/start_frame=0 -animation/clip_4/end_frame=0 -animation/clip_4/loops=false -animation/clip_5/name="" -animation/clip_5/start_frame=0 -animation/clip_5/end_frame=0 -animation/clip_5/loops=false -animation/clip_6/name="" -animation/clip_6/start_frame=0 -animation/clip_6/end_frame=0 -animation/clip_6/loops=false -animation/clip_7/name="" -animation/clip_7/start_frame=0 -animation/clip_7/end_frame=0 -animation/clip_7/loops=false -animation/clip_8/name="" -animation/clip_8/start_frame=0 -animation/clip_8/end_frame=0 -animation/clip_8/loops=false -animation/clip_9/name="" -animation/clip_9/start_frame=0 -animation/clip_9/end_frame=0 -animation/clip_9/loops=false -animation/clip_10/name="" -animation/clip_10/start_frame=0 -animation/clip_10/end_frame=0 -animation/clip_10/loops=false -animation/clip_11/name="" -animation/clip_11/start_frame=0 -animation/clip_11/end_frame=0 -animation/clip_11/loops=false -animation/clip_12/name="" -animation/clip_12/start_frame=0 -animation/clip_12/end_frame=0 -animation/clip_12/loops=false -animation/clip_13/name="" -animation/clip_13/start_frame=0 -animation/clip_13/end_frame=0 -animation/clip_13/loops=false -animation/clip_14/name="" -animation/clip_14/start_frame=0 -animation/clip_14/end_frame=0 -animation/clip_14/loops=false -animation/clip_15/name="" -animation/clip_15/start_frame=0 -animation/clip_15/end_frame=0 -animation/clip_15/loops=false -animation/clip_16/name="" -animation/clip_16/start_frame=0 -animation/clip_16/end_frame=0 -animation/clip_16/loops=false -animation/clip_17/name="" -animation/clip_17/start_frame=0 -animation/clip_17/end_frame=0 -animation/clip_17/loops=false -animation/clip_18/name="" -animation/clip_18/start_frame=0 -animation/clip_18/end_frame=0 -animation/clip_18/loops=false -animation/clip_19/name="" -animation/clip_19/start_frame=0 -animation/clip_19/end_frame=0 -animation/clip_19/loops=false -animation/clip_20/name="" -animation/clip_20/start_frame=0 -animation/clip_20/end_frame=0 -animation/clip_20/loops=false -animation/clip_21/name="" -animation/clip_21/start_frame=0 -animation/clip_21/end_frame=0 -animation/clip_21/loops=false -animation/clip_22/name="" -animation/clip_22/start_frame=0 -animation/clip_22/end_frame=0 -animation/clip_22/loops=false -animation/clip_23/name="" -animation/clip_23/start_frame=0 -animation/clip_23/end_frame=0 -animation/clip_23/loops=false -animation/clip_24/name="" -animation/clip_24/start_frame=0 -animation/clip_24/end_frame=0 -animation/clip_24/loops=false -animation/clip_25/name="" -animation/clip_25/start_frame=0 -animation/clip_25/end_frame=0 -animation/clip_25/loops=false -animation/clip_26/name="" -animation/clip_26/start_frame=0 -animation/clip_26/end_frame=0 -animation/clip_26/loops=false -animation/clip_27/name="" -animation/clip_27/start_frame=0 -animation/clip_27/end_frame=0 -animation/clip_27/loops=false -animation/clip_28/name="" -animation/clip_28/start_frame=0 -animation/clip_28/end_frame=0 -animation/clip_28/loops=false -animation/clip_29/name="" -animation/clip_29/start_frame=0 -animation/clip_29/end_frame=0 -animation/clip_29/loops=false -animation/clip_30/name="" -animation/clip_30/start_frame=0 -animation/clip_30/end_frame=0 -animation/clip_30/loops=false -animation/clip_31/name="" -animation/clip_31/start_frame=0 -animation/clip_31/end_frame=0 -animation/clip_31/loops=false -animation/clip_32/name="" -animation/clip_32/start_frame=0 -animation/clip_32/end_frame=0 -animation/clip_32/loops=false -animation/clip_33/name="" -animation/clip_33/start_frame=0 -animation/clip_33/end_frame=0 -animation/clip_33/loops=false -animation/clip_34/name="" -animation/clip_34/start_frame=0 -animation/clip_34/end_frame=0 -animation/clip_34/loops=false -animation/clip_35/name="" -animation/clip_35/start_frame=0 -animation/clip_35/end_frame=0 -animation/clip_35/loops=false -animation/clip_36/name="" -animation/clip_36/start_frame=0 -animation/clip_36/end_frame=0 -animation/clip_36/loops=false -animation/clip_37/name="" -animation/clip_37/start_frame=0 -animation/clip_37/end_frame=0 -animation/clip_37/loops=false -animation/clip_38/name="" -animation/clip_38/start_frame=0 -animation/clip_38/end_frame=0 -animation/clip_38/loops=false -animation/clip_39/name="" -animation/clip_39/start_frame=0 -animation/clip_39/end_frame=0 -animation/clip_39/loops=false -animation/clip_40/name="" -animation/clip_40/start_frame=0 -animation/clip_40/end_frame=0 -animation/clip_40/loops=false -animation/clip_41/name="" -animation/clip_41/start_frame=0 -animation/clip_41/end_frame=0 -animation/clip_41/loops=false -animation/clip_42/name="" -animation/clip_42/start_frame=0 -animation/clip_42/end_frame=0 -animation/clip_42/loops=false -animation/clip_43/name="" -animation/clip_43/start_frame=0 -animation/clip_43/end_frame=0 -animation/clip_43/loops=false -animation/clip_44/name="" -animation/clip_44/start_frame=0 -animation/clip_44/end_frame=0 -animation/clip_44/loops=false -animation/clip_45/name="" -animation/clip_45/start_frame=0 -animation/clip_45/end_frame=0 -animation/clip_45/loops=false -animation/clip_46/name="" -animation/clip_46/start_frame=0 -animation/clip_46/end_frame=0 -animation/clip_46/loops=false -animation/clip_47/name="" -animation/clip_47/start_frame=0 -animation/clip_47/end_frame=0 -animation/clip_47/loops=false -animation/clip_48/name="" -animation/clip_48/start_frame=0 -animation/clip_48/end_frame=0 -animation/clip_48/loops=false -animation/clip_49/name="" -animation/clip_49/start_frame=0 -animation/clip_49/end_frame=0 -animation/clip_49/loops=false -animation/clip_50/name="" -animation/clip_50/start_frame=0 -animation/clip_50/end_frame=0 -animation/clip_50/loops=false -animation/clip_51/name="" -animation/clip_51/start_frame=0 -animation/clip_51/end_frame=0 -animation/clip_51/loops=false -animation/clip_52/name="" -animation/clip_52/start_frame=0 -animation/clip_52/end_frame=0 -animation/clip_52/loops=false -animation/clip_53/name="" -animation/clip_53/start_frame=0 -animation/clip_53/end_frame=0 -animation/clip_53/loops=false -animation/clip_54/name="" -animation/clip_54/start_frame=0 -animation/clip_54/end_frame=0 -animation/clip_54/loops=false -animation/clip_55/name="" -animation/clip_55/start_frame=0 -animation/clip_55/end_frame=0 -animation/clip_55/loops=false -animation/clip_56/name="" -animation/clip_56/start_frame=0 -animation/clip_56/end_frame=0 -animation/clip_56/loops=false -animation/clip_57/name="" -animation/clip_57/start_frame=0 -animation/clip_57/end_frame=0 -animation/clip_57/loops=false -animation/clip_58/name="" -animation/clip_58/start_frame=0 -animation/clip_58/end_frame=0 -animation/clip_58/loops=false -animation/clip_59/name="" -animation/clip_59/start_frame=0 -animation/clip_59/end_frame=0 -animation/clip_59/loops=false -animation/clip_60/name="" -animation/clip_60/start_frame=0 -animation/clip_60/end_frame=0 -animation/clip_60/loops=false -animation/clip_61/name="" -animation/clip_61/start_frame=0 -animation/clip_61/end_frame=0 -animation/clip_61/loops=false -animation/clip_62/name="" -animation/clip_62/start_frame=0 -animation/clip_62/end_frame=0 -animation/clip_62/loops=false -animation/clip_63/name="" -animation/clip_63/start_frame=0 -animation/clip_63/end_frame=0 -animation/clip_63/loops=false -animation/clip_64/name="" -animation/clip_64/start_frame=0 -animation/clip_64/end_frame=0 -animation/clip_64/loops=false -animation/clip_65/name="" -animation/clip_65/start_frame=0 -animation/clip_65/end_frame=0 -animation/clip_65/loops=false -animation/clip_66/name="" -animation/clip_66/start_frame=0 -animation/clip_66/end_frame=0 -animation/clip_66/loops=false -animation/clip_67/name="" -animation/clip_67/start_frame=0 -animation/clip_67/end_frame=0 -animation/clip_67/loops=false -animation/clip_68/name="" -animation/clip_68/start_frame=0 -animation/clip_68/end_frame=0 -animation/clip_68/loops=false -animation/clip_69/name="" -animation/clip_69/start_frame=0 -animation/clip_69/end_frame=0 -animation/clip_69/loops=false -animation/clip_70/name="" -animation/clip_70/start_frame=0 -animation/clip_70/end_frame=0 -animation/clip_70/loops=false -animation/clip_71/name="" -animation/clip_71/start_frame=0 -animation/clip_71/end_frame=0 -animation/clip_71/loops=false -animation/clip_72/name="" -animation/clip_72/start_frame=0 -animation/clip_72/end_frame=0 -animation/clip_72/loops=false -animation/clip_73/name="" -animation/clip_73/start_frame=0 -animation/clip_73/end_frame=0 -animation/clip_73/loops=false -animation/clip_74/name="" -animation/clip_74/start_frame=0 -animation/clip_74/end_frame=0 -animation/clip_74/loops=false -animation/clip_75/name="" -animation/clip_75/start_frame=0 -animation/clip_75/end_frame=0 -animation/clip_75/loops=false -animation/clip_76/name="" -animation/clip_76/start_frame=0 -animation/clip_76/end_frame=0 -animation/clip_76/loops=false -animation/clip_77/name="" -animation/clip_77/start_frame=0 -animation/clip_77/end_frame=0 -animation/clip_77/loops=false -animation/clip_78/name="" -animation/clip_78/start_frame=0 -animation/clip_78/end_frame=0 -animation/clip_78/loops=false -animation/clip_79/name="" -animation/clip_79/start_frame=0 -animation/clip_79/end_frame=0 -animation/clip_79/loops=false -animation/clip_80/name="" -animation/clip_80/start_frame=0 -animation/clip_80/end_frame=0 -animation/clip_80/loops=false -animation/clip_81/name="" -animation/clip_81/start_frame=0 -animation/clip_81/end_frame=0 -animation/clip_81/loops=false -animation/clip_82/name="" -animation/clip_82/start_frame=0 -animation/clip_82/end_frame=0 -animation/clip_82/loops=false -animation/clip_83/name="" -animation/clip_83/start_frame=0 -animation/clip_83/end_frame=0 -animation/clip_83/loops=false -animation/clip_84/name="" -animation/clip_84/start_frame=0 -animation/clip_84/end_frame=0 -animation/clip_84/loops=false -animation/clip_85/name="" -animation/clip_85/start_frame=0 -animation/clip_85/end_frame=0 -animation/clip_85/loops=false -animation/clip_86/name="" -animation/clip_86/start_frame=0 -animation/clip_86/end_frame=0 -animation/clip_86/loops=false -animation/clip_87/name="" -animation/clip_87/start_frame=0 -animation/clip_87/end_frame=0 -animation/clip_87/loops=false -animation/clip_88/name="" -animation/clip_88/start_frame=0 -animation/clip_88/end_frame=0 -animation/clip_88/loops=false -animation/clip_89/name="" -animation/clip_89/start_frame=0 -animation/clip_89/end_frame=0 -animation/clip_89/loops=false -animation/clip_90/name="" -animation/clip_90/start_frame=0 -animation/clip_90/end_frame=0 -animation/clip_90/loops=false -animation/clip_91/name="" -animation/clip_91/start_frame=0 -animation/clip_91/end_frame=0 -animation/clip_91/loops=false -animation/clip_92/name="" -animation/clip_92/start_frame=0 -animation/clip_92/end_frame=0 -animation/clip_92/loops=false -animation/clip_93/name="" -animation/clip_93/start_frame=0 -animation/clip_93/end_frame=0 -animation/clip_93/loops=false -animation/clip_94/name="" -animation/clip_94/start_frame=0 -animation/clip_94/end_frame=0 -animation/clip_94/loops=false -animation/clip_95/name="" -animation/clip_95/start_frame=0 -animation/clip_95/end_frame=0 -animation/clip_95/loops=false -animation/clip_96/name="" -animation/clip_96/start_frame=0 -animation/clip_96/end_frame=0 -animation/clip_96/loops=false -animation/clip_97/name="" -animation/clip_97/start_frame=0 -animation/clip_97/end_frame=0 -animation/clip_97/loops=false -animation/clip_98/name="" -animation/clip_98/start_frame=0 -animation/clip_98/end_frame=0 -animation/clip_98/loops=false -animation/clip_99/name="" -animation/clip_99/start_frame=0 -animation/clip_99/end_frame=0 -animation/clip_99/loops=false -animation/clip_100/name="" -animation/clip_100/start_frame=0 -animation/clip_100/end_frame=0 -animation/clip_100/loops=false -animation/clip_101/name="" -animation/clip_101/start_frame=0 -animation/clip_101/end_frame=0 -animation/clip_101/loops=false -animation/clip_102/name="" -animation/clip_102/start_frame=0 -animation/clip_102/end_frame=0 -animation/clip_102/loops=false -animation/clip_103/name="" -animation/clip_103/start_frame=0 -animation/clip_103/end_frame=0 -animation/clip_103/loops=false -animation/clip_104/name="" -animation/clip_104/start_frame=0 -animation/clip_104/end_frame=0 -animation/clip_104/loops=false -animation/clip_105/name="" -animation/clip_105/start_frame=0 -animation/clip_105/end_frame=0 -animation/clip_105/loops=false -animation/clip_106/name="" -animation/clip_106/start_frame=0 -animation/clip_106/end_frame=0 -animation/clip_106/loops=false -animation/clip_107/name="" -animation/clip_107/start_frame=0 -animation/clip_107/end_frame=0 -animation/clip_107/loops=false -animation/clip_108/name="" -animation/clip_108/start_frame=0 -animation/clip_108/end_frame=0 -animation/clip_108/loops=false -animation/clip_109/name="" -animation/clip_109/start_frame=0 -animation/clip_109/end_frame=0 -animation/clip_109/loops=false -animation/clip_110/name="" -animation/clip_110/start_frame=0 -animation/clip_110/end_frame=0 -animation/clip_110/loops=false -animation/clip_111/name="" -animation/clip_111/start_frame=0 -animation/clip_111/end_frame=0 -animation/clip_111/loops=false -animation/clip_112/name="" -animation/clip_112/start_frame=0 -animation/clip_112/end_frame=0 -animation/clip_112/loops=false -animation/clip_113/name="" -animation/clip_113/start_frame=0 -animation/clip_113/end_frame=0 -animation/clip_113/loops=false -animation/clip_114/name="" -animation/clip_114/start_frame=0 -animation/clip_114/end_frame=0 -animation/clip_114/loops=false -animation/clip_115/name="" -animation/clip_115/start_frame=0 -animation/clip_115/end_frame=0 -animation/clip_115/loops=false -animation/clip_116/name="" -animation/clip_116/start_frame=0 -animation/clip_116/end_frame=0 -animation/clip_116/loops=false -animation/clip_117/name="" -animation/clip_117/start_frame=0 -animation/clip_117/end_frame=0 -animation/clip_117/loops=false -animation/clip_118/name="" -animation/clip_118/start_frame=0 -animation/clip_118/end_frame=0 -animation/clip_118/loops=false -animation/clip_119/name="" -animation/clip_119/start_frame=0 -animation/clip_119/end_frame=0 -animation/clip_119/loops=false -animation/clip_120/name="" -animation/clip_120/start_frame=0 -animation/clip_120/end_frame=0 -animation/clip_120/loops=false -animation/clip_121/name="" -animation/clip_121/start_frame=0 -animation/clip_121/end_frame=0 -animation/clip_121/loops=false -animation/clip_122/name="" -animation/clip_122/start_frame=0 -animation/clip_122/end_frame=0 -animation/clip_122/loops=false -animation/clip_123/name="" -animation/clip_123/start_frame=0 -animation/clip_123/end_frame=0 -animation/clip_123/loops=false -animation/clip_124/name="" -animation/clip_124/start_frame=0 -animation/clip_124/end_frame=0 -animation/clip_124/loops=false -animation/clip_125/name="" -animation/clip_125/start_frame=0 -animation/clip_125/end_frame=0 -animation/clip_125/loops=false -animation/clip_126/name="" -animation/clip_126/start_frame=0 -animation/clip_126/end_frame=0 -animation/clip_126/loops=false -animation/clip_127/name="" -animation/clip_127/start_frame=0 -animation/clip_127/end_frame=0 -animation/clip_127/loops=false -animation/clip_128/name="" -animation/clip_128/start_frame=0 -animation/clip_128/end_frame=0 -animation/clip_128/loops=false -animation/clip_129/name="" -animation/clip_129/start_frame=0 -animation/clip_129/end_frame=0 -animation/clip_129/loops=false -animation/clip_130/name="" -animation/clip_130/start_frame=0 -animation/clip_130/end_frame=0 -animation/clip_130/loops=false -animation/clip_131/name="" -animation/clip_131/start_frame=0 -animation/clip_131/end_frame=0 -animation/clip_131/loops=false -animation/clip_132/name="" -animation/clip_132/start_frame=0 -animation/clip_132/end_frame=0 -animation/clip_132/loops=false -animation/clip_133/name="" -animation/clip_133/start_frame=0 -animation/clip_133/end_frame=0 -animation/clip_133/loops=false -animation/clip_134/name="" -animation/clip_134/start_frame=0 -animation/clip_134/end_frame=0 -animation/clip_134/loops=false -animation/clip_135/name="" -animation/clip_135/start_frame=0 -animation/clip_135/end_frame=0 -animation/clip_135/loops=false -animation/clip_136/name="" -animation/clip_136/start_frame=0 -animation/clip_136/end_frame=0 -animation/clip_136/loops=false -animation/clip_137/name="" -animation/clip_137/start_frame=0 -animation/clip_137/end_frame=0 -animation/clip_137/loops=false -animation/clip_138/name="" -animation/clip_138/start_frame=0 -animation/clip_138/end_frame=0 -animation/clip_138/loops=false -animation/clip_139/name="" -animation/clip_139/start_frame=0 -animation/clip_139/end_frame=0 -animation/clip_139/loops=false -animation/clip_140/name="" -animation/clip_140/start_frame=0 -animation/clip_140/end_frame=0 -animation/clip_140/loops=false -animation/clip_141/name="" -animation/clip_141/start_frame=0 -animation/clip_141/end_frame=0 -animation/clip_141/loops=false -animation/clip_142/name="" -animation/clip_142/start_frame=0 -animation/clip_142/end_frame=0 -animation/clip_142/loops=false -animation/clip_143/name="" -animation/clip_143/start_frame=0 -animation/clip_143/end_frame=0 -animation/clip_143/loops=false -animation/clip_144/name="" -animation/clip_144/start_frame=0 -animation/clip_144/end_frame=0 -animation/clip_144/loops=false -animation/clip_145/name="" -animation/clip_145/start_frame=0 -animation/clip_145/end_frame=0 -animation/clip_145/loops=false -animation/clip_146/name="" -animation/clip_146/start_frame=0 -animation/clip_146/end_frame=0 -animation/clip_146/loops=false -animation/clip_147/name="" -animation/clip_147/start_frame=0 -animation/clip_147/end_frame=0 -animation/clip_147/loops=false -animation/clip_148/name="" -animation/clip_148/start_frame=0 -animation/clip_148/end_frame=0 -animation/clip_148/loops=false -animation/clip_149/name="" -animation/clip_149/start_frame=0 -animation/clip_149/end_frame=0 -animation/clip_149/loops=false -animation/clip_150/name="" -animation/clip_150/start_frame=0 -animation/clip_150/end_frame=0 -animation/clip_150/loops=false -animation/clip_151/name="" -animation/clip_151/start_frame=0 -animation/clip_151/end_frame=0 -animation/clip_151/loops=false -animation/clip_152/name="" -animation/clip_152/start_frame=0 -animation/clip_152/end_frame=0 -animation/clip_152/loops=false -animation/clip_153/name="" -animation/clip_153/start_frame=0 -animation/clip_153/end_frame=0 -animation/clip_153/loops=false -animation/clip_154/name="" -animation/clip_154/start_frame=0 -animation/clip_154/end_frame=0 -animation/clip_154/loops=false -animation/clip_155/name="" -animation/clip_155/start_frame=0 -animation/clip_155/end_frame=0 -animation/clip_155/loops=false -animation/clip_156/name="" -animation/clip_156/start_frame=0 -animation/clip_156/end_frame=0 -animation/clip_156/loops=false -animation/clip_157/name="" -animation/clip_157/start_frame=0 -animation/clip_157/end_frame=0 -animation/clip_157/loops=false -animation/clip_158/name="" -animation/clip_158/start_frame=0 -animation/clip_158/end_frame=0 -animation/clip_158/loops=false -animation/clip_159/name="" -animation/clip_159/start_frame=0 -animation/clip_159/end_frame=0 -animation/clip_159/loops=false -animation/clip_160/name="" -animation/clip_160/start_frame=0 -animation/clip_160/end_frame=0 -animation/clip_160/loops=false -animation/clip_161/name="" -animation/clip_161/start_frame=0 -animation/clip_161/end_frame=0 -animation/clip_161/loops=false -animation/clip_162/name="" -animation/clip_162/start_frame=0 -animation/clip_162/end_frame=0 -animation/clip_162/loops=false -animation/clip_163/name="" -animation/clip_163/start_frame=0 -animation/clip_163/end_frame=0 -animation/clip_163/loops=false -animation/clip_164/name="" -animation/clip_164/start_frame=0 -animation/clip_164/end_frame=0 -animation/clip_164/loops=false -animation/clip_165/name="" -animation/clip_165/start_frame=0 -animation/clip_165/end_frame=0 -animation/clip_165/loops=false -animation/clip_166/name="" -animation/clip_166/start_frame=0 -animation/clip_166/end_frame=0 -animation/clip_166/loops=false -animation/clip_167/name="" -animation/clip_167/start_frame=0 -animation/clip_167/end_frame=0 -animation/clip_167/loops=false -animation/clip_168/name="" -animation/clip_168/start_frame=0 -animation/clip_168/end_frame=0 -animation/clip_168/loops=false -animation/clip_169/name="" -animation/clip_169/start_frame=0 -animation/clip_169/end_frame=0 -animation/clip_169/loops=false -animation/clip_170/name="" -animation/clip_170/start_frame=0 -animation/clip_170/end_frame=0 -animation/clip_170/loops=false -animation/clip_171/name="" -animation/clip_171/start_frame=0 -animation/clip_171/end_frame=0 -animation/clip_171/loops=false -animation/clip_172/name="" -animation/clip_172/start_frame=0 -animation/clip_172/end_frame=0 -animation/clip_172/loops=false -animation/clip_173/name="" -animation/clip_173/start_frame=0 -animation/clip_173/end_frame=0 -animation/clip_173/loops=false -animation/clip_174/name="" -animation/clip_174/start_frame=0 -animation/clip_174/end_frame=0 -animation/clip_174/loops=false -animation/clip_175/name="" -animation/clip_175/start_frame=0 -animation/clip_175/end_frame=0 -animation/clip_175/loops=false -animation/clip_176/name="" -animation/clip_176/start_frame=0 -animation/clip_176/end_frame=0 -animation/clip_176/loops=false -animation/clip_177/name="" -animation/clip_177/start_frame=0 -animation/clip_177/end_frame=0 -animation/clip_177/loops=false -animation/clip_178/name="" -animation/clip_178/start_frame=0 -animation/clip_178/end_frame=0 -animation/clip_178/loops=false -animation/clip_179/name="" -animation/clip_179/start_frame=0 -animation/clip_179/end_frame=0 -animation/clip_179/loops=false -animation/clip_180/name="" -animation/clip_180/start_frame=0 -animation/clip_180/end_frame=0 -animation/clip_180/loops=false -animation/clip_181/name="" -animation/clip_181/start_frame=0 -animation/clip_181/end_frame=0 -animation/clip_181/loops=false -animation/clip_182/name="" -animation/clip_182/start_frame=0 -animation/clip_182/end_frame=0 -animation/clip_182/loops=false -animation/clip_183/name="" -animation/clip_183/start_frame=0 -animation/clip_183/end_frame=0 -animation/clip_183/loops=false -animation/clip_184/name="" -animation/clip_184/start_frame=0 -animation/clip_184/end_frame=0 -animation/clip_184/loops=false -animation/clip_185/name="" -animation/clip_185/start_frame=0 -animation/clip_185/end_frame=0 -animation/clip_185/loops=false -animation/clip_186/name="" -animation/clip_186/start_frame=0 -animation/clip_186/end_frame=0 -animation/clip_186/loops=false -animation/clip_187/name="" -animation/clip_187/start_frame=0 -animation/clip_187/end_frame=0 -animation/clip_187/loops=false -animation/clip_188/name="" -animation/clip_188/start_frame=0 -animation/clip_188/end_frame=0 -animation/clip_188/loops=false -animation/clip_189/name="" -animation/clip_189/start_frame=0 -animation/clip_189/end_frame=0 -animation/clip_189/loops=false -animation/clip_190/name="" -animation/clip_190/start_frame=0 -animation/clip_190/end_frame=0 -animation/clip_190/loops=false -animation/clip_191/name="" -animation/clip_191/start_frame=0 -animation/clip_191/end_frame=0 -animation/clip_191/loops=false -animation/clip_192/name="" -animation/clip_192/start_frame=0 -animation/clip_192/end_frame=0 -animation/clip_192/loops=false -animation/clip_193/name="" -animation/clip_193/start_frame=0 -animation/clip_193/end_frame=0 -animation/clip_193/loops=false -animation/clip_194/name="" -animation/clip_194/start_frame=0 -animation/clip_194/end_frame=0 -animation/clip_194/loops=false -animation/clip_195/name="" -animation/clip_195/start_frame=0 -animation/clip_195/end_frame=0 -animation/clip_195/loops=false -animation/clip_196/name="" -animation/clip_196/start_frame=0 -animation/clip_196/end_frame=0 -animation/clip_196/loops=false -animation/clip_197/name="" -animation/clip_197/start_frame=0 -animation/clip_197/end_frame=0 -animation/clip_197/loops=false -animation/clip_198/name="" -animation/clip_198/start_frame=0 -animation/clip_198/end_frame=0 -animation/clip_198/loops=false -animation/clip_199/name="" -animation/clip_199/start_frame=0 -animation/clip_199/end_frame=0 -animation/clip_199/loops=false -animation/clip_200/name="" -animation/clip_200/start_frame=0 -animation/clip_200/end_frame=0 -animation/clip_200/loops=false -animation/clip_201/name="" -animation/clip_201/start_frame=0 -animation/clip_201/end_frame=0 -animation/clip_201/loops=false -animation/clip_202/name="" -animation/clip_202/start_frame=0 -animation/clip_202/end_frame=0 -animation/clip_202/loops=false -animation/clip_203/name="" -animation/clip_203/start_frame=0 -animation/clip_203/end_frame=0 -animation/clip_203/loops=false -animation/clip_204/name="" -animation/clip_204/start_frame=0 -animation/clip_204/end_frame=0 -animation/clip_204/loops=false -animation/clip_205/name="" -animation/clip_205/start_frame=0 -animation/clip_205/end_frame=0 -animation/clip_205/loops=false -animation/clip_206/name="" -animation/clip_206/start_frame=0 -animation/clip_206/end_frame=0 -animation/clip_206/loops=false -animation/clip_207/name="" -animation/clip_207/start_frame=0 -animation/clip_207/end_frame=0 -animation/clip_207/loops=false -animation/clip_208/name="" -animation/clip_208/start_frame=0 -animation/clip_208/end_frame=0 -animation/clip_208/loops=false -animation/clip_209/name="" -animation/clip_209/start_frame=0 -animation/clip_209/end_frame=0 -animation/clip_209/loops=false -animation/clip_210/name="" -animation/clip_210/start_frame=0 -animation/clip_210/end_frame=0 -animation/clip_210/loops=false -animation/clip_211/name="" -animation/clip_211/start_frame=0 -animation/clip_211/end_frame=0 -animation/clip_211/loops=false -animation/clip_212/name="" -animation/clip_212/start_frame=0 -animation/clip_212/end_frame=0 -animation/clip_212/loops=false -animation/clip_213/name="" -animation/clip_213/start_frame=0 -animation/clip_213/end_frame=0 -animation/clip_213/loops=false -animation/clip_214/name="" -animation/clip_214/start_frame=0 -animation/clip_214/end_frame=0 -animation/clip_214/loops=false -animation/clip_215/name="" -animation/clip_215/start_frame=0 -animation/clip_215/end_frame=0 -animation/clip_215/loops=false -animation/clip_216/name="" -animation/clip_216/start_frame=0 -animation/clip_216/end_frame=0 -animation/clip_216/loops=false -animation/clip_217/name="" -animation/clip_217/start_frame=0 -animation/clip_217/end_frame=0 -animation/clip_217/loops=false -animation/clip_218/name="" -animation/clip_218/start_frame=0 -animation/clip_218/end_frame=0 -animation/clip_218/loops=false -animation/clip_219/name="" -animation/clip_219/start_frame=0 -animation/clip_219/end_frame=0 -animation/clip_219/loops=false -animation/clip_220/name="" -animation/clip_220/start_frame=0 -animation/clip_220/end_frame=0 -animation/clip_220/loops=false -animation/clip_221/name="" -animation/clip_221/start_frame=0 -animation/clip_221/end_frame=0 -animation/clip_221/loops=false -animation/clip_222/name="" -animation/clip_222/start_frame=0 -animation/clip_222/end_frame=0 -animation/clip_222/loops=false -animation/clip_223/name="" -animation/clip_223/start_frame=0 -animation/clip_223/end_frame=0 -animation/clip_223/loops=false -animation/clip_224/name="" -animation/clip_224/start_frame=0 -animation/clip_224/end_frame=0 -animation/clip_224/loops=false -animation/clip_225/name="" -animation/clip_225/start_frame=0 -animation/clip_225/end_frame=0 -animation/clip_225/loops=false -animation/clip_226/name="" -animation/clip_226/start_frame=0 -animation/clip_226/end_frame=0 -animation/clip_226/loops=false -animation/clip_227/name="" -animation/clip_227/start_frame=0 -animation/clip_227/end_frame=0 -animation/clip_227/loops=false -animation/clip_228/name="" -animation/clip_228/start_frame=0 -animation/clip_228/end_frame=0 -animation/clip_228/loops=false -animation/clip_229/name="" -animation/clip_229/start_frame=0 -animation/clip_229/end_frame=0 -animation/clip_229/loops=false -animation/clip_230/name="" -animation/clip_230/start_frame=0 -animation/clip_230/end_frame=0 -animation/clip_230/loops=false -animation/clip_231/name="" -animation/clip_231/start_frame=0 -animation/clip_231/end_frame=0 -animation/clip_231/loops=false -animation/clip_232/name="" -animation/clip_232/start_frame=0 -animation/clip_232/end_frame=0 -animation/clip_232/loops=false -animation/clip_233/name="" -animation/clip_233/start_frame=0 -animation/clip_233/end_frame=0 -animation/clip_233/loops=false -animation/clip_234/name="" -animation/clip_234/start_frame=0 -animation/clip_234/end_frame=0 -animation/clip_234/loops=false -animation/clip_235/name="" -animation/clip_235/start_frame=0 -animation/clip_235/end_frame=0 -animation/clip_235/loops=false -animation/clip_236/name="" -animation/clip_236/start_frame=0 -animation/clip_236/end_frame=0 -animation/clip_236/loops=false -animation/clip_237/name="" -animation/clip_237/start_frame=0 -animation/clip_237/end_frame=0 -animation/clip_237/loops=false -animation/clip_238/name="" -animation/clip_238/start_frame=0 -animation/clip_238/end_frame=0 -animation/clip_238/loops=false -animation/clip_239/name="" -animation/clip_239/start_frame=0 -animation/clip_239/end_frame=0 -animation/clip_239/loops=false -animation/clip_240/name="" -animation/clip_240/start_frame=0 -animation/clip_240/end_frame=0 -animation/clip_240/loops=false -animation/clip_241/name="" -animation/clip_241/start_frame=0 -animation/clip_241/end_frame=0 -animation/clip_241/loops=false -animation/clip_242/name="" -animation/clip_242/start_frame=0 -animation/clip_242/end_frame=0 -animation/clip_242/loops=false -animation/clip_243/name="" -animation/clip_243/start_frame=0 -animation/clip_243/end_frame=0 -animation/clip_243/loops=false -animation/clip_244/name="" -animation/clip_244/start_frame=0 -animation/clip_244/end_frame=0 -animation/clip_244/loops=false -animation/clip_245/name="" -animation/clip_245/start_frame=0 -animation/clip_245/end_frame=0 -animation/clip_245/loops=false -animation/clip_246/name="" -animation/clip_246/start_frame=0 -animation/clip_246/end_frame=0 -animation/clip_246/loops=false -animation/clip_247/name="" -animation/clip_247/start_frame=0 -animation/clip_247/end_frame=0 -animation/clip_247/loops=false -animation/clip_248/name="" -animation/clip_248/start_frame=0 -animation/clip_248/end_frame=0 -animation/clip_248/loops=false -animation/clip_249/name="" -animation/clip_249/start_frame=0 -animation/clip_249/end_frame=0 -animation/clip_249/loops=false -animation/clip_250/name="" -animation/clip_250/start_frame=0 -animation/clip_250/end_frame=0 -animation/clip_250/loops=false -animation/clip_251/name="" -animation/clip_251/start_frame=0 -animation/clip_251/end_frame=0 -animation/clip_251/loops=false -animation/clip_252/name="" -animation/clip_252/start_frame=0 -animation/clip_252/end_frame=0 -animation/clip_252/loops=false -animation/clip_253/name="" -animation/clip_253/start_frame=0 -animation/clip_253/end_frame=0 -animation/clip_253/loops=false -animation/clip_254/name="" -animation/clip_254/start_frame=0 -animation/clip_254/end_frame=0 -animation/clip_254/loops=false -animation/clip_255/name="" -animation/clip_255/start_frame=0 -animation/clip_255/end_frame=0 -animation/clip_255/loops=false -animation/clip_256/name="" -animation/clip_256/start_frame=0 -animation/clip_256/end_frame=0 -animation/clip_256/loops=false diff --git a/ovr-utils/addons/godot-openvr/meshes/vr_glove_right_model_slim.glb b/ovr-utils/addons/godot-openvr/meshes/vr_glove_right_model_slim.glb deleted file mode 100644 index f58ebc3..0000000 Binary files a/ovr-utils/addons/godot-openvr/meshes/vr_glove_right_model_slim.glb and /dev/null differ diff --git a/ovr-utils/addons/godot-openvr/meshes/vr_glove_right_model_slim.glb.import b/ovr-utils/addons/godot-openvr/meshes/vr_glove_right_model_slim.glb.import deleted file mode 100644 index 41c0172..0000000 --- a/ovr-utils/addons/godot-openvr/meshes/vr_glove_right_model_slim.glb.import +++ /dev/null @@ -1,1063 +0,0 @@ -[remap] - -importer="scene" -type="PackedScene" -path="res://.import/vr_glove_right_model_slim.glb-c6782795f1fc3235de97a5f6c8ba1231.scn" - -[deps] - -source_file="res://addons/godot-openvr/meshes/vr_glove_right_model_slim.glb" -dest_files=[ "res://.import/vr_glove_right_model_slim.glb-c6782795f1fc3235de97a5f6c8ba1231.scn" ] - -[params] - -nodes/root_type="Spatial" -nodes/root_name="Scene Root" -nodes/root_scale=1.0 -nodes/custom_script="" -nodes/storage=0 -materials/location=1 -materials/storage=1 -materials/keep_on_reimport=true -meshes/compress=true -meshes/ensure_tangents=true -meshes/storage=0 -meshes/light_baking=0 -meshes/lightmap_texel_size=0.1 -skins/use_named_skins=true -external_files/store_in_subdir=false -animation/import=true -animation/fps=15 -animation/filter_script="" -animation/storage=false -animation/keep_custom_tracks=false -animation/optimizer/enabled=true -animation/optimizer/max_linear_error=0.05 -animation/optimizer/max_angular_error=0.01 -animation/optimizer/max_angle=22 -animation/optimizer/remove_unused_tracks=true -animation/clips/amount=0 -animation/clip_1/name="" -animation/clip_1/start_frame=0 -animation/clip_1/end_frame=0 -animation/clip_1/loops=false -animation/clip_2/name="" -animation/clip_2/start_frame=0 -animation/clip_2/end_frame=0 -animation/clip_2/loops=false -animation/clip_3/name="" -animation/clip_3/start_frame=0 -animation/clip_3/end_frame=0 -animation/clip_3/loops=false -animation/clip_4/name="" -animation/clip_4/start_frame=0 -animation/clip_4/end_frame=0 -animation/clip_4/loops=false -animation/clip_5/name="" -animation/clip_5/start_frame=0 -animation/clip_5/end_frame=0 -animation/clip_5/loops=false -animation/clip_6/name="" -animation/clip_6/start_frame=0 -animation/clip_6/end_frame=0 -animation/clip_6/loops=false -animation/clip_7/name="" -animation/clip_7/start_frame=0 -animation/clip_7/end_frame=0 -animation/clip_7/loops=false -animation/clip_8/name="" -animation/clip_8/start_frame=0 -animation/clip_8/end_frame=0 -animation/clip_8/loops=false -animation/clip_9/name="" -animation/clip_9/start_frame=0 -animation/clip_9/end_frame=0 -animation/clip_9/loops=false -animation/clip_10/name="" -animation/clip_10/start_frame=0 -animation/clip_10/end_frame=0 -animation/clip_10/loops=false -animation/clip_11/name="" -animation/clip_11/start_frame=0 -animation/clip_11/end_frame=0 -animation/clip_11/loops=false -animation/clip_12/name="" -animation/clip_12/start_frame=0 -animation/clip_12/end_frame=0 -animation/clip_12/loops=false -animation/clip_13/name="" -animation/clip_13/start_frame=0 -animation/clip_13/end_frame=0 -animation/clip_13/loops=false -animation/clip_14/name="" -animation/clip_14/start_frame=0 -animation/clip_14/end_frame=0 -animation/clip_14/loops=false -animation/clip_15/name="" -animation/clip_15/start_frame=0 -animation/clip_15/end_frame=0 -animation/clip_15/loops=false -animation/clip_16/name="" -animation/clip_16/start_frame=0 -animation/clip_16/end_frame=0 -animation/clip_16/loops=false -animation/clip_17/name="" -animation/clip_17/start_frame=0 -animation/clip_17/end_frame=0 -animation/clip_17/loops=false -animation/clip_18/name="" -animation/clip_18/start_frame=0 -animation/clip_18/end_frame=0 -animation/clip_18/loops=false -animation/clip_19/name="" -animation/clip_19/start_frame=0 -animation/clip_19/end_frame=0 -animation/clip_19/loops=false -animation/clip_20/name="" -animation/clip_20/start_frame=0 -animation/clip_20/end_frame=0 -animation/clip_20/loops=false -animation/clip_21/name="" -animation/clip_21/start_frame=0 -animation/clip_21/end_frame=0 -animation/clip_21/loops=false -animation/clip_22/name="" -animation/clip_22/start_frame=0 -animation/clip_22/end_frame=0 -animation/clip_22/loops=false -animation/clip_23/name="" -animation/clip_23/start_frame=0 -animation/clip_23/end_frame=0 -animation/clip_23/loops=false -animation/clip_24/name="" -animation/clip_24/start_frame=0 -animation/clip_24/end_frame=0 -animation/clip_24/loops=false -animation/clip_25/name="" -animation/clip_25/start_frame=0 -animation/clip_25/end_frame=0 -animation/clip_25/loops=false -animation/clip_26/name="" -animation/clip_26/start_frame=0 -animation/clip_26/end_frame=0 -animation/clip_26/loops=false -animation/clip_27/name="" -animation/clip_27/start_frame=0 -animation/clip_27/end_frame=0 -animation/clip_27/loops=false -animation/clip_28/name="" -animation/clip_28/start_frame=0 -animation/clip_28/end_frame=0 -animation/clip_28/loops=false -animation/clip_29/name="" -animation/clip_29/start_frame=0 -animation/clip_29/end_frame=0 -animation/clip_29/loops=false -animation/clip_30/name="" -animation/clip_30/start_frame=0 -animation/clip_30/end_frame=0 -animation/clip_30/loops=false -animation/clip_31/name="" -animation/clip_31/start_frame=0 -animation/clip_31/end_frame=0 -animation/clip_31/loops=false -animation/clip_32/name="" -animation/clip_32/start_frame=0 -animation/clip_32/end_frame=0 -animation/clip_32/loops=false -animation/clip_33/name="" -animation/clip_33/start_frame=0 -animation/clip_33/end_frame=0 -animation/clip_33/loops=false -animation/clip_34/name="" -animation/clip_34/start_frame=0 -animation/clip_34/end_frame=0 -animation/clip_34/loops=false -animation/clip_35/name="" -animation/clip_35/start_frame=0 -animation/clip_35/end_frame=0 -animation/clip_35/loops=false -animation/clip_36/name="" -animation/clip_36/start_frame=0 -animation/clip_36/end_frame=0 -animation/clip_36/loops=false -animation/clip_37/name="" -animation/clip_37/start_frame=0 -animation/clip_37/end_frame=0 -animation/clip_37/loops=false -animation/clip_38/name="" -animation/clip_38/start_frame=0 -animation/clip_38/end_frame=0 -animation/clip_38/loops=false -animation/clip_39/name="" -animation/clip_39/start_frame=0 -animation/clip_39/end_frame=0 -animation/clip_39/loops=false -animation/clip_40/name="" -animation/clip_40/start_frame=0 -animation/clip_40/end_frame=0 -animation/clip_40/loops=false -animation/clip_41/name="" -animation/clip_41/start_frame=0 -animation/clip_41/end_frame=0 -animation/clip_41/loops=false -animation/clip_42/name="" -animation/clip_42/start_frame=0 -animation/clip_42/end_frame=0 -animation/clip_42/loops=false -animation/clip_43/name="" -animation/clip_43/start_frame=0 -animation/clip_43/end_frame=0 -animation/clip_43/loops=false -animation/clip_44/name="" -animation/clip_44/start_frame=0 -animation/clip_44/end_frame=0 -animation/clip_44/loops=false -animation/clip_45/name="" -animation/clip_45/start_frame=0 -animation/clip_45/end_frame=0 -animation/clip_45/loops=false -animation/clip_46/name="" -animation/clip_46/start_frame=0 -animation/clip_46/end_frame=0 -animation/clip_46/loops=false -animation/clip_47/name="" -animation/clip_47/start_frame=0 -animation/clip_47/end_frame=0 -animation/clip_47/loops=false -animation/clip_48/name="" -animation/clip_48/start_frame=0 -animation/clip_48/end_frame=0 -animation/clip_48/loops=false -animation/clip_49/name="" -animation/clip_49/start_frame=0 -animation/clip_49/end_frame=0 -animation/clip_49/loops=false -animation/clip_50/name="" -animation/clip_50/start_frame=0 -animation/clip_50/end_frame=0 -animation/clip_50/loops=false -animation/clip_51/name="" -animation/clip_51/start_frame=0 -animation/clip_51/end_frame=0 -animation/clip_51/loops=false -animation/clip_52/name="" -animation/clip_52/start_frame=0 -animation/clip_52/end_frame=0 -animation/clip_52/loops=false -animation/clip_53/name="" -animation/clip_53/start_frame=0 -animation/clip_53/end_frame=0 -animation/clip_53/loops=false -animation/clip_54/name="" -animation/clip_54/start_frame=0 -animation/clip_54/end_frame=0 -animation/clip_54/loops=false -animation/clip_55/name="" -animation/clip_55/start_frame=0 -animation/clip_55/end_frame=0 -animation/clip_55/loops=false -animation/clip_56/name="" -animation/clip_56/start_frame=0 -animation/clip_56/end_frame=0 -animation/clip_56/loops=false -animation/clip_57/name="" -animation/clip_57/start_frame=0 -animation/clip_57/end_frame=0 -animation/clip_57/loops=false -animation/clip_58/name="" -animation/clip_58/start_frame=0 -animation/clip_58/end_frame=0 -animation/clip_58/loops=false -animation/clip_59/name="" -animation/clip_59/start_frame=0 -animation/clip_59/end_frame=0 -animation/clip_59/loops=false -animation/clip_60/name="" -animation/clip_60/start_frame=0 -animation/clip_60/end_frame=0 -animation/clip_60/loops=false -animation/clip_61/name="" -animation/clip_61/start_frame=0 -animation/clip_61/end_frame=0 -animation/clip_61/loops=false -animation/clip_62/name="" -animation/clip_62/start_frame=0 -animation/clip_62/end_frame=0 -animation/clip_62/loops=false -animation/clip_63/name="" -animation/clip_63/start_frame=0 -animation/clip_63/end_frame=0 -animation/clip_63/loops=false -animation/clip_64/name="" -animation/clip_64/start_frame=0 -animation/clip_64/end_frame=0 -animation/clip_64/loops=false -animation/clip_65/name="" -animation/clip_65/start_frame=0 -animation/clip_65/end_frame=0 -animation/clip_65/loops=false -animation/clip_66/name="" -animation/clip_66/start_frame=0 -animation/clip_66/end_frame=0 -animation/clip_66/loops=false -animation/clip_67/name="" -animation/clip_67/start_frame=0 -animation/clip_67/end_frame=0 -animation/clip_67/loops=false -animation/clip_68/name="" -animation/clip_68/start_frame=0 -animation/clip_68/end_frame=0 -animation/clip_68/loops=false -animation/clip_69/name="" -animation/clip_69/start_frame=0 -animation/clip_69/end_frame=0 -animation/clip_69/loops=false -animation/clip_70/name="" -animation/clip_70/start_frame=0 -animation/clip_70/end_frame=0 -animation/clip_70/loops=false -animation/clip_71/name="" -animation/clip_71/start_frame=0 -animation/clip_71/end_frame=0 -animation/clip_71/loops=false -animation/clip_72/name="" -animation/clip_72/start_frame=0 -animation/clip_72/end_frame=0 -animation/clip_72/loops=false -animation/clip_73/name="" -animation/clip_73/start_frame=0 -animation/clip_73/end_frame=0 -animation/clip_73/loops=false -animation/clip_74/name="" -animation/clip_74/start_frame=0 -animation/clip_74/end_frame=0 -animation/clip_74/loops=false -animation/clip_75/name="" -animation/clip_75/start_frame=0 -animation/clip_75/end_frame=0 -animation/clip_75/loops=false -animation/clip_76/name="" -animation/clip_76/start_frame=0 -animation/clip_76/end_frame=0 -animation/clip_76/loops=false -animation/clip_77/name="" -animation/clip_77/start_frame=0 -animation/clip_77/end_frame=0 -animation/clip_77/loops=false -animation/clip_78/name="" -animation/clip_78/start_frame=0 -animation/clip_78/end_frame=0 -animation/clip_78/loops=false -animation/clip_79/name="" -animation/clip_79/start_frame=0 -animation/clip_79/end_frame=0 -animation/clip_79/loops=false -animation/clip_80/name="" -animation/clip_80/start_frame=0 -animation/clip_80/end_frame=0 -animation/clip_80/loops=false -animation/clip_81/name="" -animation/clip_81/start_frame=0 -animation/clip_81/end_frame=0 -animation/clip_81/loops=false -animation/clip_82/name="" -animation/clip_82/start_frame=0 -animation/clip_82/end_frame=0 -animation/clip_82/loops=false -animation/clip_83/name="" -animation/clip_83/start_frame=0 -animation/clip_83/end_frame=0 -animation/clip_83/loops=false -animation/clip_84/name="" -animation/clip_84/start_frame=0 -animation/clip_84/end_frame=0 -animation/clip_84/loops=false -animation/clip_85/name="" -animation/clip_85/start_frame=0 -animation/clip_85/end_frame=0 -animation/clip_85/loops=false -animation/clip_86/name="" -animation/clip_86/start_frame=0 -animation/clip_86/end_frame=0 -animation/clip_86/loops=false -animation/clip_87/name="" -animation/clip_87/start_frame=0 -animation/clip_87/end_frame=0 -animation/clip_87/loops=false -animation/clip_88/name="" -animation/clip_88/start_frame=0 -animation/clip_88/end_frame=0 -animation/clip_88/loops=false -animation/clip_89/name="" -animation/clip_89/start_frame=0 -animation/clip_89/end_frame=0 -animation/clip_89/loops=false -animation/clip_90/name="" -animation/clip_90/start_frame=0 -animation/clip_90/end_frame=0 -animation/clip_90/loops=false -animation/clip_91/name="" -animation/clip_91/start_frame=0 -animation/clip_91/end_frame=0 -animation/clip_91/loops=false -animation/clip_92/name="" -animation/clip_92/start_frame=0 -animation/clip_92/end_frame=0 -animation/clip_92/loops=false -animation/clip_93/name="" -animation/clip_93/start_frame=0 -animation/clip_93/end_frame=0 -animation/clip_93/loops=false -animation/clip_94/name="" -animation/clip_94/start_frame=0 -animation/clip_94/end_frame=0 -animation/clip_94/loops=false -animation/clip_95/name="" -animation/clip_95/start_frame=0 -animation/clip_95/end_frame=0 -animation/clip_95/loops=false -animation/clip_96/name="" -animation/clip_96/start_frame=0 -animation/clip_96/end_frame=0 -animation/clip_96/loops=false -animation/clip_97/name="" -animation/clip_97/start_frame=0 -animation/clip_97/end_frame=0 -animation/clip_97/loops=false -animation/clip_98/name="" -animation/clip_98/start_frame=0 -animation/clip_98/end_frame=0 -animation/clip_98/loops=false -animation/clip_99/name="" -animation/clip_99/start_frame=0 -animation/clip_99/end_frame=0 -animation/clip_99/loops=false -animation/clip_100/name="" -animation/clip_100/start_frame=0 -animation/clip_100/end_frame=0 -animation/clip_100/loops=false -animation/clip_101/name="" -animation/clip_101/start_frame=0 -animation/clip_101/end_frame=0 -animation/clip_101/loops=false -animation/clip_102/name="" -animation/clip_102/start_frame=0 -animation/clip_102/end_frame=0 -animation/clip_102/loops=false -animation/clip_103/name="" -animation/clip_103/start_frame=0 -animation/clip_103/end_frame=0 -animation/clip_103/loops=false -animation/clip_104/name="" -animation/clip_104/start_frame=0 -animation/clip_104/end_frame=0 -animation/clip_104/loops=false -animation/clip_105/name="" -animation/clip_105/start_frame=0 -animation/clip_105/end_frame=0 -animation/clip_105/loops=false -animation/clip_106/name="" -animation/clip_106/start_frame=0 -animation/clip_106/end_frame=0 -animation/clip_106/loops=false -animation/clip_107/name="" -animation/clip_107/start_frame=0 -animation/clip_107/end_frame=0 -animation/clip_107/loops=false -animation/clip_108/name="" -animation/clip_108/start_frame=0 -animation/clip_108/end_frame=0 -animation/clip_108/loops=false -animation/clip_109/name="" -animation/clip_109/start_frame=0 -animation/clip_109/end_frame=0 -animation/clip_109/loops=false -animation/clip_110/name="" -animation/clip_110/start_frame=0 -animation/clip_110/end_frame=0 -animation/clip_110/loops=false -animation/clip_111/name="" -animation/clip_111/start_frame=0 -animation/clip_111/end_frame=0 -animation/clip_111/loops=false -animation/clip_112/name="" -animation/clip_112/start_frame=0 -animation/clip_112/end_frame=0 -animation/clip_112/loops=false -animation/clip_113/name="" -animation/clip_113/start_frame=0 -animation/clip_113/end_frame=0 -animation/clip_113/loops=false -animation/clip_114/name="" -animation/clip_114/start_frame=0 -animation/clip_114/end_frame=0 -animation/clip_114/loops=false -animation/clip_115/name="" -animation/clip_115/start_frame=0 -animation/clip_115/end_frame=0 -animation/clip_115/loops=false -animation/clip_116/name="" -animation/clip_116/start_frame=0 -animation/clip_116/end_frame=0 -animation/clip_116/loops=false -animation/clip_117/name="" -animation/clip_117/start_frame=0 -animation/clip_117/end_frame=0 -animation/clip_117/loops=false -animation/clip_118/name="" -animation/clip_118/start_frame=0 -animation/clip_118/end_frame=0 -animation/clip_118/loops=false -animation/clip_119/name="" -animation/clip_119/start_frame=0 -animation/clip_119/end_frame=0 -animation/clip_119/loops=false -animation/clip_120/name="" -animation/clip_120/start_frame=0 -animation/clip_120/end_frame=0 -animation/clip_120/loops=false -animation/clip_121/name="" -animation/clip_121/start_frame=0 -animation/clip_121/end_frame=0 -animation/clip_121/loops=false -animation/clip_122/name="" -animation/clip_122/start_frame=0 -animation/clip_122/end_frame=0 -animation/clip_122/loops=false -animation/clip_123/name="" -animation/clip_123/start_frame=0 -animation/clip_123/end_frame=0 -animation/clip_123/loops=false -animation/clip_124/name="" -animation/clip_124/start_frame=0 -animation/clip_124/end_frame=0 -animation/clip_124/loops=false -animation/clip_125/name="" -animation/clip_125/start_frame=0 -animation/clip_125/end_frame=0 -animation/clip_125/loops=false -animation/clip_126/name="" -animation/clip_126/start_frame=0 -animation/clip_126/end_frame=0 -animation/clip_126/loops=false -animation/clip_127/name="" -animation/clip_127/start_frame=0 -animation/clip_127/end_frame=0 -animation/clip_127/loops=false -animation/clip_128/name="" -animation/clip_128/start_frame=0 -animation/clip_128/end_frame=0 -animation/clip_128/loops=false -animation/clip_129/name="" -animation/clip_129/start_frame=0 -animation/clip_129/end_frame=0 -animation/clip_129/loops=false -animation/clip_130/name="" -animation/clip_130/start_frame=0 -animation/clip_130/end_frame=0 -animation/clip_130/loops=false -animation/clip_131/name="" -animation/clip_131/start_frame=0 -animation/clip_131/end_frame=0 -animation/clip_131/loops=false -animation/clip_132/name="" -animation/clip_132/start_frame=0 -animation/clip_132/end_frame=0 -animation/clip_132/loops=false -animation/clip_133/name="" -animation/clip_133/start_frame=0 -animation/clip_133/end_frame=0 -animation/clip_133/loops=false -animation/clip_134/name="" -animation/clip_134/start_frame=0 -animation/clip_134/end_frame=0 -animation/clip_134/loops=false -animation/clip_135/name="" -animation/clip_135/start_frame=0 -animation/clip_135/end_frame=0 -animation/clip_135/loops=false -animation/clip_136/name="" -animation/clip_136/start_frame=0 -animation/clip_136/end_frame=0 -animation/clip_136/loops=false -animation/clip_137/name="" -animation/clip_137/start_frame=0 -animation/clip_137/end_frame=0 -animation/clip_137/loops=false -animation/clip_138/name="" -animation/clip_138/start_frame=0 -animation/clip_138/end_frame=0 -animation/clip_138/loops=false -animation/clip_139/name="" -animation/clip_139/start_frame=0 -animation/clip_139/end_frame=0 -animation/clip_139/loops=false -animation/clip_140/name="" -animation/clip_140/start_frame=0 -animation/clip_140/end_frame=0 -animation/clip_140/loops=false -animation/clip_141/name="" -animation/clip_141/start_frame=0 -animation/clip_141/end_frame=0 -animation/clip_141/loops=false -animation/clip_142/name="" -animation/clip_142/start_frame=0 -animation/clip_142/end_frame=0 -animation/clip_142/loops=false -animation/clip_143/name="" -animation/clip_143/start_frame=0 -animation/clip_143/end_frame=0 -animation/clip_143/loops=false -animation/clip_144/name="" -animation/clip_144/start_frame=0 -animation/clip_144/end_frame=0 -animation/clip_144/loops=false -animation/clip_145/name="" -animation/clip_145/start_frame=0 -animation/clip_145/end_frame=0 -animation/clip_145/loops=false -animation/clip_146/name="" -animation/clip_146/start_frame=0 -animation/clip_146/end_frame=0 -animation/clip_146/loops=false -animation/clip_147/name="" -animation/clip_147/start_frame=0 -animation/clip_147/end_frame=0 -animation/clip_147/loops=false -animation/clip_148/name="" -animation/clip_148/start_frame=0 -animation/clip_148/end_frame=0 -animation/clip_148/loops=false -animation/clip_149/name="" -animation/clip_149/start_frame=0 -animation/clip_149/end_frame=0 -animation/clip_149/loops=false -animation/clip_150/name="" -animation/clip_150/start_frame=0 -animation/clip_150/end_frame=0 -animation/clip_150/loops=false -animation/clip_151/name="" -animation/clip_151/start_frame=0 -animation/clip_151/end_frame=0 -animation/clip_151/loops=false -animation/clip_152/name="" -animation/clip_152/start_frame=0 -animation/clip_152/end_frame=0 -animation/clip_152/loops=false -animation/clip_153/name="" -animation/clip_153/start_frame=0 -animation/clip_153/end_frame=0 -animation/clip_153/loops=false -animation/clip_154/name="" -animation/clip_154/start_frame=0 -animation/clip_154/end_frame=0 -animation/clip_154/loops=false -animation/clip_155/name="" -animation/clip_155/start_frame=0 -animation/clip_155/end_frame=0 -animation/clip_155/loops=false -animation/clip_156/name="" -animation/clip_156/start_frame=0 -animation/clip_156/end_frame=0 -animation/clip_156/loops=false -animation/clip_157/name="" -animation/clip_157/start_frame=0 -animation/clip_157/end_frame=0 -animation/clip_157/loops=false -animation/clip_158/name="" -animation/clip_158/start_frame=0 -animation/clip_158/end_frame=0 -animation/clip_158/loops=false -animation/clip_159/name="" -animation/clip_159/start_frame=0 -animation/clip_159/end_frame=0 -animation/clip_159/loops=false -animation/clip_160/name="" -animation/clip_160/start_frame=0 -animation/clip_160/end_frame=0 -animation/clip_160/loops=false -animation/clip_161/name="" -animation/clip_161/start_frame=0 -animation/clip_161/end_frame=0 -animation/clip_161/loops=false -animation/clip_162/name="" -animation/clip_162/start_frame=0 -animation/clip_162/end_frame=0 -animation/clip_162/loops=false -animation/clip_163/name="" -animation/clip_163/start_frame=0 -animation/clip_163/end_frame=0 -animation/clip_163/loops=false -animation/clip_164/name="" -animation/clip_164/start_frame=0 -animation/clip_164/end_frame=0 -animation/clip_164/loops=false -animation/clip_165/name="" -animation/clip_165/start_frame=0 -animation/clip_165/end_frame=0 -animation/clip_165/loops=false -animation/clip_166/name="" -animation/clip_166/start_frame=0 -animation/clip_166/end_frame=0 -animation/clip_166/loops=false -animation/clip_167/name="" -animation/clip_167/start_frame=0 -animation/clip_167/end_frame=0 -animation/clip_167/loops=false -animation/clip_168/name="" -animation/clip_168/start_frame=0 -animation/clip_168/end_frame=0 -animation/clip_168/loops=false -animation/clip_169/name="" -animation/clip_169/start_frame=0 -animation/clip_169/end_frame=0 -animation/clip_169/loops=false -animation/clip_170/name="" -animation/clip_170/start_frame=0 -animation/clip_170/end_frame=0 -animation/clip_170/loops=false -animation/clip_171/name="" -animation/clip_171/start_frame=0 -animation/clip_171/end_frame=0 -animation/clip_171/loops=false -animation/clip_172/name="" -animation/clip_172/start_frame=0 -animation/clip_172/end_frame=0 -animation/clip_172/loops=false -animation/clip_173/name="" -animation/clip_173/start_frame=0 -animation/clip_173/end_frame=0 -animation/clip_173/loops=false -animation/clip_174/name="" -animation/clip_174/start_frame=0 -animation/clip_174/end_frame=0 -animation/clip_174/loops=false -animation/clip_175/name="" -animation/clip_175/start_frame=0 -animation/clip_175/end_frame=0 -animation/clip_175/loops=false -animation/clip_176/name="" -animation/clip_176/start_frame=0 -animation/clip_176/end_frame=0 -animation/clip_176/loops=false -animation/clip_177/name="" -animation/clip_177/start_frame=0 -animation/clip_177/end_frame=0 -animation/clip_177/loops=false -animation/clip_178/name="" -animation/clip_178/start_frame=0 -animation/clip_178/end_frame=0 -animation/clip_178/loops=false -animation/clip_179/name="" -animation/clip_179/start_frame=0 -animation/clip_179/end_frame=0 -animation/clip_179/loops=false -animation/clip_180/name="" -animation/clip_180/start_frame=0 -animation/clip_180/end_frame=0 -animation/clip_180/loops=false -animation/clip_181/name="" -animation/clip_181/start_frame=0 -animation/clip_181/end_frame=0 -animation/clip_181/loops=false -animation/clip_182/name="" -animation/clip_182/start_frame=0 -animation/clip_182/end_frame=0 -animation/clip_182/loops=false -animation/clip_183/name="" -animation/clip_183/start_frame=0 -animation/clip_183/end_frame=0 -animation/clip_183/loops=false -animation/clip_184/name="" -animation/clip_184/start_frame=0 -animation/clip_184/end_frame=0 -animation/clip_184/loops=false -animation/clip_185/name="" -animation/clip_185/start_frame=0 -animation/clip_185/end_frame=0 -animation/clip_185/loops=false -animation/clip_186/name="" -animation/clip_186/start_frame=0 -animation/clip_186/end_frame=0 -animation/clip_186/loops=false -animation/clip_187/name="" -animation/clip_187/start_frame=0 -animation/clip_187/end_frame=0 -animation/clip_187/loops=false -animation/clip_188/name="" -animation/clip_188/start_frame=0 -animation/clip_188/end_frame=0 -animation/clip_188/loops=false -animation/clip_189/name="" -animation/clip_189/start_frame=0 -animation/clip_189/end_frame=0 -animation/clip_189/loops=false -animation/clip_190/name="" -animation/clip_190/start_frame=0 -animation/clip_190/end_frame=0 -animation/clip_190/loops=false -animation/clip_191/name="" -animation/clip_191/start_frame=0 -animation/clip_191/end_frame=0 -animation/clip_191/loops=false -animation/clip_192/name="" -animation/clip_192/start_frame=0 -animation/clip_192/end_frame=0 -animation/clip_192/loops=false -animation/clip_193/name="" -animation/clip_193/start_frame=0 -animation/clip_193/end_frame=0 -animation/clip_193/loops=false -animation/clip_194/name="" -animation/clip_194/start_frame=0 -animation/clip_194/end_frame=0 -animation/clip_194/loops=false -animation/clip_195/name="" -animation/clip_195/start_frame=0 -animation/clip_195/end_frame=0 -animation/clip_195/loops=false -animation/clip_196/name="" -animation/clip_196/start_frame=0 -animation/clip_196/end_frame=0 -animation/clip_196/loops=false -animation/clip_197/name="" -animation/clip_197/start_frame=0 -animation/clip_197/end_frame=0 -animation/clip_197/loops=false -animation/clip_198/name="" -animation/clip_198/start_frame=0 -animation/clip_198/end_frame=0 -animation/clip_198/loops=false -animation/clip_199/name="" -animation/clip_199/start_frame=0 -animation/clip_199/end_frame=0 -animation/clip_199/loops=false -animation/clip_200/name="" -animation/clip_200/start_frame=0 -animation/clip_200/end_frame=0 -animation/clip_200/loops=false -animation/clip_201/name="" -animation/clip_201/start_frame=0 -animation/clip_201/end_frame=0 -animation/clip_201/loops=false -animation/clip_202/name="" -animation/clip_202/start_frame=0 -animation/clip_202/end_frame=0 -animation/clip_202/loops=false -animation/clip_203/name="" -animation/clip_203/start_frame=0 -animation/clip_203/end_frame=0 -animation/clip_203/loops=false -animation/clip_204/name="" -animation/clip_204/start_frame=0 -animation/clip_204/end_frame=0 -animation/clip_204/loops=false -animation/clip_205/name="" -animation/clip_205/start_frame=0 -animation/clip_205/end_frame=0 -animation/clip_205/loops=false -animation/clip_206/name="" -animation/clip_206/start_frame=0 -animation/clip_206/end_frame=0 -animation/clip_206/loops=false -animation/clip_207/name="" -animation/clip_207/start_frame=0 -animation/clip_207/end_frame=0 -animation/clip_207/loops=false -animation/clip_208/name="" -animation/clip_208/start_frame=0 -animation/clip_208/end_frame=0 -animation/clip_208/loops=false -animation/clip_209/name="" -animation/clip_209/start_frame=0 -animation/clip_209/end_frame=0 -animation/clip_209/loops=false -animation/clip_210/name="" -animation/clip_210/start_frame=0 -animation/clip_210/end_frame=0 -animation/clip_210/loops=false -animation/clip_211/name="" -animation/clip_211/start_frame=0 -animation/clip_211/end_frame=0 -animation/clip_211/loops=false -animation/clip_212/name="" -animation/clip_212/start_frame=0 -animation/clip_212/end_frame=0 -animation/clip_212/loops=false -animation/clip_213/name="" -animation/clip_213/start_frame=0 -animation/clip_213/end_frame=0 -animation/clip_213/loops=false -animation/clip_214/name="" -animation/clip_214/start_frame=0 -animation/clip_214/end_frame=0 -animation/clip_214/loops=false -animation/clip_215/name="" -animation/clip_215/start_frame=0 -animation/clip_215/end_frame=0 -animation/clip_215/loops=false -animation/clip_216/name="" -animation/clip_216/start_frame=0 -animation/clip_216/end_frame=0 -animation/clip_216/loops=false -animation/clip_217/name="" -animation/clip_217/start_frame=0 -animation/clip_217/end_frame=0 -animation/clip_217/loops=false -animation/clip_218/name="" -animation/clip_218/start_frame=0 -animation/clip_218/end_frame=0 -animation/clip_218/loops=false -animation/clip_219/name="" -animation/clip_219/start_frame=0 -animation/clip_219/end_frame=0 -animation/clip_219/loops=false -animation/clip_220/name="" -animation/clip_220/start_frame=0 -animation/clip_220/end_frame=0 -animation/clip_220/loops=false -animation/clip_221/name="" -animation/clip_221/start_frame=0 -animation/clip_221/end_frame=0 -animation/clip_221/loops=false -animation/clip_222/name="" -animation/clip_222/start_frame=0 -animation/clip_222/end_frame=0 -animation/clip_222/loops=false -animation/clip_223/name="" -animation/clip_223/start_frame=0 -animation/clip_223/end_frame=0 -animation/clip_223/loops=false -animation/clip_224/name="" -animation/clip_224/start_frame=0 -animation/clip_224/end_frame=0 -animation/clip_224/loops=false -animation/clip_225/name="" -animation/clip_225/start_frame=0 -animation/clip_225/end_frame=0 -animation/clip_225/loops=false -animation/clip_226/name="" -animation/clip_226/start_frame=0 -animation/clip_226/end_frame=0 -animation/clip_226/loops=false -animation/clip_227/name="" -animation/clip_227/start_frame=0 -animation/clip_227/end_frame=0 -animation/clip_227/loops=false -animation/clip_228/name="" -animation/clip_228/start_frame=0 -animation/clip_228/end_frame=0 -animation/clip_228/loops=false -animation/clip_229/name="" -animation/clip_229/start_frame=0 -animation/clip_229/end_frame=0 -animation/clip_229/loops=false -animation/clip_230/name="" -animation/clip_230/start_frame=0 -animation/clip_230/end_frame=0 -animation/clip_230/loops=false -animation/clip_231/name="" -animation/clip_231/start_frame=0 -animation/clip_231/end_frame=0 -animation/clip_231/loops=false -animation/clip_232/name="" -animation/clip_232/start_frame=0 -animation/clip_232/end_frame=0 -animation/clip_232/loops=false -animation/clip_233/name="" -animation/clip_233/start_frame=0 -animation/clip_233/end_frame=0 -animation/clip_233/loops=false -animation/clip_234/name="" -animation/clip_234/start_frame=0 -animation/clip_234/end_frame=0 -animation/clip_234/loops=false -animation/clip_235/name="" -animation/clip_235/start_frame=0 -animation/clip_235/end_frame=0 -animation/clip_235/loops=false -animation/clip_236/name="" -animation/clip_236/start_frame=0 -animation/clip_236/end_frame=0 -animation/clip_236/loops=false -animation/clip_237/name="" -animation/clip_237/start_frame=0 -animation/clip_237/end_frame=0 -animation/clip_237/loops=false -animation/clip_238/name="" -animation/clip_238/start_frame=0 -animation/clip_238/end_frame=0 -animation/clip_238/loops=false -animation/clip_239/name="" -animation/clip_239/start_frame=0 -animation/clip_239/end_frame=0 -animation/clip_239/loops=false -animation/clip_240/name="" -animation/clip_240/start_frame=0 -animation/clip_240/end_frame=0 -animation/clip_240/loops=false -animation/clip_241/name="" -animation/clip_241/start_frame=0 -animation/clip_241/end_frame=0 -animation/clip_241/loops=false -animation/clip_242/name="" -animation/clip_242/start_frame=0 -animation/clip_242/end_frame=0 -animation/clip_242/loops=false -animation/clip_243/name="" -animation/clip_243/start_frame=0 -animation/clip_243/end_frame=0 -animation/clip_243/loops=false -animation/clip_244/name="" -animation/clip_244/start_frame=0 -animation/clip_244/end_frame=0 -animation/clip_244/loops=false -animation/clip_245/name="" -animation/clip_245/start_frame=0 -animation/clip_245/end_frame=0 -animation/clip_245/loops=false -animation/clip_246/name="" -animation/clip_246/start_frame=0 -animation/clip_246/end_frame=0 -animation/clip_246/loops=false -animation/clip_247/name="" -animation/clip_247/start_frame=0 -animation/clip_247/end_frame=0 -animation/clip_247/loops=false -animation/clip_248/name="" -animation/clip_248/start_frame=0 -animation/clip_248/end_frame=0 -animation/clip_248/loops=false -animation/clip_249/name="" -animation/clip_249/start_frame=0 -animation/clip_249/end_frame=0 -animation/clip_249/loops=false -animation/clip_250/name="" -animation/clip_250/start_frame=0 -animation/clip_250/end_frame=0 -animation/clip_250/loops=false -animation/clip_251/name="" -animation/clip_251/start_frame=0 -animation/clip_251/end_frame=0 -animation/clip_251/loops=false -animation/clip_252/name="" -animation/clip_252/start_frame=0 -animation/clip_252/end_frame=0 -animation/clip_252/loops=false -animation/clip_253/name="" -animation/clip_253/start_frame=0 -animation/clip_253/end_frame=0 -animation/clip_253/loops=false -animation/clip_254/name="" -animation/clip_254/start_frame=0 -animation/clip_254/end_frame=0 -animation/clip_254/loops=false -animation/clip_255/name="" -animation/clip_255/start_frame=0 -animation/clip_255/end_frame=0 -animation/clip_255/loops=false -animation/clip_256/name="" -animation/clip_256/start_frame=0 -animation/clip_256/end_frame=0 -animation/clip_256/loops=false diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_left_hand.tscn b/ovr-utils/addons/godot-openvr/scenes/ovr_left_hand.tscn deleted file mode 100644 index 7e01821..0000000 --- a/ovr-utils/addons/godot-openvr/scenes/ovr_left_hand.tscn +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene load_steps=5 format=2] - -[ext_resource path="res://addons/godot-openvr/meshes/vr_glove_left_model_slim.glb" type="PackedScene" id=1] -[ext_resource path="res://addons/godot-openvr/meshes/models_hands_vr_glove_vmat.material" type="Material" id=2] -[ext_resource path="res://addons/godot-openvr/OpenVRPose.gdns" type="Script" id=3] -[ext_resource path="res://addons/godot-openvr/OpenVRSkeleton.gdns" type="Script" id=4] - -[node name="ovr_left_hand" instance=ExtResource( 1 )] -script = ExtResource( 3 ) -action = "/actions/godot/in/left_hand" - -[node name="Skeleton" parent="RootNode" index="0"] -bones/5/bound_children = [ NodePath("Thumb") ] -bones/10/bound_children = [ NodePath("Index") ] -bones/15/bound_children = [ NodePath("Middle") ] -bones/20/bound_children = [ NodePath("Ring") ] -bones/25/bound_children = [ NodePath("Pinky") ] -script = ExtResource( 4 ) -action = "/actions/godot/in/left_hand" - -[node name="vr_glove_left_slim" parent="RootNode/Skeleton" index="0"] -material/0 = ExtResource( 2 ) - -[node name="Thumb" type="BoneAttachment" parent="RootNode/Skeleton" index="1"] -transform = Transform( -0.347509, 0.0284256, 0.937246, -0.13095, -0.991217, -0.0184906, 0.928488, -0.129158, 0.348178, -0.0498674, 0.056092, 0.112777 ) -bone_name = "finger_thumb_l_end" - -[node name="Index" type="BoneAttachment" parent="RootNode/Skeleton" index="2"] -transform = Transform( -0.717079, -0.669965, 0.19221, -0.076153, -0.19881, -0.977075, 0.69282, -0.715277, 0.0915429, -0.0345977, 0.0355404, 0.164767 ) -bone_name = "finger_index_l_end" - -[node name="Middle" type="BoneAttachment" parent="RootNode/Skeleton" index="3"] -transform = Transform( -0.755126, -0.650532, 0.0812012, -0.0513261, -0.064817, -0.996576, 0.653568, -0.756708, 0.0155557, -0.0321126, 0.00654218, 0.171613 ) -bone_name = "finger_middle_l_end" - -[node name="Ring" type="BoneAttachment" parent="RootNode/Skeleton" index="4"] -transform = Transform( -0.749612, -0.661178, -0.0304372, -0.0961052, 0.154228, -0.98335, 0.654864, -0.734206, -0.179154, -0.0346831, -0.0253934, 0.156924 ) -bone_name = "finger_ring_l_end" - -[node name="Pinky" type="BoneAttachment" parent="RootNode/Skeleton" index="5"] -transform = Transform( -0.615435, -0.749373, -0.244295, -0.0354297, 0.335934, -0.941219, 0.787391, -0.570604, -0.233296, -0.0270969, -0.0462902, 0.133467 ) -bone_name = "finger_pinky_l_end" diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_right_hand.tscn b/ovr-utils/addons/godot-openvr/scenes/ovr_right_hand.tscn deleted file mode 100644 index fa8bcfc..0000000 --- a/ovr-utils/addons/godot-openvr/scenes/ovr_right_hand.tscn +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene load_steps=5 format=2] - -[ext_resource path="res://addons/godot-openvr/meshes/vr_glove_right_model_slim.glb" type="PackedScene" id=1] -[ext_resource path="res://addons/godot-openvr/meshes/models_hands_vr_glove_vmat.material" type="Material" id=2] -[ext_resource path="res://addons/godot-openvr/OpenVRPose.gdns" type="Script" id=3] -[ext_resource path="res://addons/godot-openvr/OpenVRSkeleton.gdns" type="Script" id=4] - -[node name="ovr_right_hand" instance=ExtResource( 1 )] -script = ExtResource( 3 ) -action = "/actions/godot/in/right_hand" - -[node name="Skeleton" parent="RootNode" index="0"] -bones/5/bound_children = [ NodePath("Thumb") ] -bones/10/bound_children = [ NodePath("Index") ] -bones/15/bound_children = [ NodePath("Middle") ] -bones/20/bound_children = [ NodePath("Ring") ] -bones/25/bound_children = [ NodePath("Pinky") ] -script = ExtResource( 4 ) -action = "/actions/godot/in/right_hand" - -[node name="vr_glove_right_slim" parent="RootNode/Skeleton" index="0"] -material/0 = ExtResource( 2 ) - -[node name="Thumb" type="BoneAttachment" parent="RootNode/Skeleton" index="1"] -transform = Transform( -0.347509, 0.0284256, 0.937246, 0.130949, 0.991217, 0.0184906, -0.928488, 0.129158, -0.348179, 0.0498674, 0.0560921, 0.112777 ) -bone_name = "finger_thumb_r_end" - -[node name="Index" type="BoneAttachment" parent="RootNode/Skeleton" index="2"] -transform = Transform( -0.717079, -0.669965, 0.19221, 0.0761528, 0.19881, 0.977075, -0.69282, 0.715277, -0.0915429, 0.0345977, 0.0355405, 0.164767 ) -bone_name = "finger_index_r_end" - -[node name="Middle" type="BoneAttachment" parent="RootNode/Skeleton" index="3"] -transform = Transform( -0.755126, -0.650532, 0.0812013, 0.0513261, 0.064817, 0.996577, -0.653568, 0.756708, -0.0155557, 0.0321126, 0.00654219, 0.171613 ) -bone_name = "finger_middle_r_end" - -[node name="Ring" type="BoneAttachment" parent="RootNode/Skeleton" index="4"] -transform = Transform( -0.749612, -0.661178, -0.0304372, 0.0961052, -0.154228, 0.98335, -0.654864, 0.734206, 0.179154, 0.0346831, -0.0253934, 0.156924 ) -bone_name = "finger_ring_r_end" - -[node name="Pinky" type="BoneAttachment" parent="RootNode/Skeleton" index="5"] -transform = Transform( -0.615435, -0.749373, -0.244295, 0.0354297, -0.335934, 0.941219, -0.787391, 0.570604, 0.233296, 0.0270969, -0.0462902, 0.133467 ) -bone_name = "finger_pinky_r_end" diff --git a/ovr-utils/addons/openvr_overlay/OverlayCursor.tscn b/ovr-utils/addons/openvr_overlay/OverlayCursor.tscn deleted file mode 100644 index 7993016..0000000 --- a/ovr-utils/addons/openvr_overlay/OverlayCursor.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://addons/openvr_overlay/interaction/overlay_cursor.gd" type="Script" id=1] - -[node name="OverlayCursor" type="Node"] -script = ExtResource( 1 ) diff --git a/ovr-utils/addons/openvr_overlay/OverlayGrab.tscn b/ovr-utils/addons/openvr_overlay/OverlayGrab.tscn deleted file mode 100644 index 0535b42..0000000 --- a/ovr-utils/addons/openvr_overlay/OverlayGrab.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://addons/openvr_overlay/interaction/overlay_grab.gd" type="Script" id=1] - -[node name="OverlayGrab" type="Node"] -script = ExtResource( 1 ) diff --git a/ovr-utils/addons/openvr_overlay/interaction/OverlayArea.tscn b/ovr-utils/addons/openvr_overlay/interaction/OverlayArea.tscn deleted file mode 100644 index 6825095..0000000 --- a/ovr-utils/addons/openvr_overlay/interaction/OverlayArea.tscn +++ /dev/null @@ -1,10 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[sub_resource type="BoxShape" id=1] -resource_local_to_scene = true -extents = Vector3( 0.2, 0.2, 0.01 ) - -[node name="OverlayArea" type="Area"] - -[node name="CollisionShape" type="CollisionShape" parent="."] -shape = SubResource( 1 ) diff --git a/ovr-utils/addons/openvr_overlay/interaction/overlay_cursor.gd b/ovr-utils/addons/openvr_overlay/interaction/overlay_cursor.gd deleted file mode 100644 index 98104d5..0000000 --- a/ovr-utils/addons/openvr_overlay/interaction/overlay_cursor.gd +++ /dev/null @@ -1,70 +0,0 @@ -extends Node - - -var cursor_node = preload("res://addons/openvr_overlay/interaction/Cursor.tscn").instance() -onready var viewport: Viewport = get_node("../../OverlayViewport") -onready var _i = get_parent() - -var curr_pos: Vector2 -var prev_pos := Vector2(-1000, 1000) - -func _ready() -> void: - viewport.add_child(cursor_node) - get_parent().connect("trigger_on", self, "_trigger_on") - get_parent().connect("trigger_off", self, "_trigger_off") - - -func _process(_delta: float) -> void: - curr_pos = get_canvas_pos() - _update_cursor() - _send_move_event() - prev_pos = curr_pos - - -#get canvas position of active controller -func get_canvas_pos() -> Vector2: - if not _i.active_controller: - return Vector2(-1000, 1000) # offscreen - - var controller_local_pos = _i._overlay_area.global_transform.xform_inv(\ - _i.tracker_nodes[_i.active_controller].translation) - var pos = Vector2(controller_local_pos.x, controller_local_pos.y) - - var overlay_size = Vector2(2048, 2048) - # scale to pixels - pos *= overlay_size.x - pos /= _i.get_parent().width_meters - # adjust to center - pos.y *= -1 - pos += overlay_size * 0.5 - return pos - - -func _update_cursor(): - cursor_node.rect_position = get_canvas_pos() - - -func _send_move_event(): - var event = InputEventMouseMotion.new() - event.position = prev_pos - event.relative = curr_pos - prev_pos - event.speed = event.relative - viewport.input(event) - - - -func _send_click_event(state: bool): - var click_event = InputEventMouseButton.new() - click_event.position = curr_pos - click_event.pressed = state - click_event.button_index = 1 - viewport.input(click_event) - - -func _trigger_on(): - _send_click_event(true) - - -func _trigger_off(): - _send_click_event(false) - diff --git a/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd b/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd deleted file mode 100644 index 13ea563..0000000 --- a/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd +++ /dev/null @@ -1,126 +0,0 @@ -extends Node - -signal touch_on # a controller entered -signal touch_off # a controller exited -signal trigger_on # trigger pushed while touching -signal trigger_off# trigger released - -var touch_state := false -var trigger_state := false -var grab_mode := false setget set_grab_mode - -# controller that currently has the trigger down -var active_controller := "" -# reference to the area node thats used for touch -var _overlay_area = preload("res://addons/openvr_overlay/interaction/OverlayArea.tscn").instance() -var _right_is_activator := false # this hand has a collider on it to trigger things on the overlay -var _left_is_activator := false - -var pause_triggers := false # disable triggers updating - -onready var tracker_nodes = { - "head": $VR/head, - "left": $VR/left, - "right": $VR/right, - "world": $VR -} - - -func _ready() -> void: - add_child(_overlay_area) - _overlay_area.connect("body_entered", self, "_on_OverlayArea_entered") - _overlay_area.connect("body_exited", self, "_on_OverlayArea_exited") - - get_parent().connect("width_changed", self, "_update_width") - get_parent().connect("offset_changed", self, "_update_offset") - get_parent().connect("target_changed", self, "_update_target") - - OverlayManager.connect("grab_mode_changed", self, "update_selection") - - _update_width() - _update_offset() - _update_target() - - -func _trigger_on(controller): - if touch_state: - active_controller = controller - trigger_state = true - emit_signal("trigger_on") - - -func _trigger_off(): - trigger_state = false - emit_signal("trigger_off") - - -func _on_OverlayArea_entered(body: Node) -> void: - if body.get_node("../../..") != self or pause_triggers or !get_parent().overlay_visible: - return - touch_state = true - active_controller = body.get_parent().name - update_selection() - emit_signal("touch_on") - - -func _on_OverlayArea_exited(body: Node) -> void: - if body.get_node("../../..") != self or pause_triggers or !get_parent().overlay_visible: - return - # TODO revert to other controller if both were touching (edge case) - active_controller = "" - touch_state = false - update_selection() - emit_signal("touch_off") - - -func update_selection(): - var sel = touch_state and (Settings.s.grab_mode or grab_mode) - get_parent().get_node("OverlayViewport/Selected").visible = sel - - -func set_grab_mode(state: bool) -> void: - grab_mode = state - update_selection() - - -func _update_width(): - var ratio = OverlayInit.ovr_interface.get_render_targetsize() - var extents = get_parent().width_meters * 0.5 - _overlay_area.get_child(0).shape.set_extents(Vector3(extents, extents * ratio.y/ratio.x, 0.05)) - - -func _update_offset(): - _overlay_area.translation = get_parent().translation - _overlay_area.rotation = get_parent().rotation - - -func _update_target(): - # reparent _overlay_area - _overlay_area.get_parent().remove_child(_overlay_area) - tracker_nodes[get_parent().current_target].add_child(_overlay_area) - - _left_is_activator = get_parent().current_target != "left" - _right_is_activator = get_parent().current_target != "right" - # toggle appropriate colliders - $VR/left/OverlayActivator/Collision.disabled = !_left_is_activator - $VR/right/OverlayActivator/Collision.disabled = !_right_is_activator - - -func _on_RightHand_button_pressed(button: int) -> void: - if button == JOY_VR_TRIGGER and _right_is_activator: - _trigger_on("right") - - -func _on_RightHand_button_release(button: int) -> void: - if button == JOY_VR_TRIGGER and active_controller == "right": - _trigger_off() - - -func _on_LeftHand_button_pressed(button: int) -> void: - if button == JOY_VR_TRIGGER and _left_is_activator: - _trigger_on("left") - - -func _on_LeftHand_button_release(button: int) -> void: - if button == JOY_VR_TRIGGER and active_controller == "left": - _trigger_off() diff --git a/src/Main.tscn b/src/Main.tscn new file mode 100644 index 0000000..123ab04 --- /dev/null +++ b/src/Main.tscn @@ -0,0 +1,6 @@ +[gd_scene format=2] + +[node name="Main" type="Node"] +__meta__ = { +"_editor_description_": "Everything is loaded using autoloads so this scene is just a dummy" +} diff --git a/ovr-utils/OverlayManager.tscn b/src/OverlayManager.tscn similarity index 96% rename from ovr-utils/OverlayManager.tscn rename to src/OverlayManager.tscn index 925ea82..dddbb22 100644 --- a/ovr-utils/OverlayManager.tscn +++ b/src/OverlayManager.tscn @@ -8,6 +8,5 @@ script = ExtResource( 4 ) [node name="MainOverlay" parent="." instance=ExtResource( 2 )] -add_cursor = true [node name="OverlaySettingsSync" parent="MainOverlay" instance=ExtResource( 3 )] diff --git a/ovr-utils/OverlaySettingsSync.tscn b/src/OverlaySettingsSync.tscn similarity index 100% rename from ovr-utils/OverlaySettingsSync.tscn rename to src/OverlaySettingsSync.tscn diff --git a/src/addons/gdvk/GDVK.tscn b/src/addons/gdvk/GDVK.tscn new file mode 100644 index 0000000..24c3c32 --- /dev/null +++ b/src/addons/gdvk/GDVK.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/gdvk/gdvk.gdns" type="Script" id=1] + +[node name="GDVK" type="Node"] +script = ExtResource( 1 ) diff --git a/ovr-utils/addons/godot-openvr/meshes/hands_albedo.png b/src/addons/gdvk/bin/win64/libgdvk.dll old mode 100644 new mode 100755 similarity index 64% rename from ovr-utils/addons/godot-openvr/meshes/hands_albedo.png rename to src/addons/gdvk/bin/win64/libgdvk.dll index 395b83b..9aaa02d Binary files a/ovr-utils/addons/godot-openvr/meshes/hands_albedo.png and b/src/addons/gdvk/bin/win64/libgdvk.dll differ diff --git a/src/addons/gdvk/bin/x11/libgdvk.so b/src/addons/gdvk/bin/x11/libgdvk.so new file mode 100755 index 0000000..5f9df7e Binary files /dev/null and b/src/addons/gdvk/bin/x11/libgdvk.so differ diff --git a/src/addons/gdvk/gdvk.gdnlib b/src/addons/gdvk/gdvk.gdnlib new file mode 100644 index 0000000..5c71e68 --- /dev/null +++ b/src/addons/gdvk/gdvk.gdnlib @@ -0,0 +1,17 @@ +[general] + +singleton=false +load_once=true +symbol_prefix="gdvk_" +reloadable=true + +[entry] + +X11.64="res://addons/gdvk/bin/x11/libgdvk.so" +Windows.64="res://addons/gdvk/bin/win64/libgdvk.dll" + +[dependencies] + +X11.64=[ ] +Windows.64=[ ] +OSX.64=[ ] diff --git a/src/addons/gdvk/gdvk.gdns b/src/addons/gdvk/gdvk.gdns new file mode 100644 index 0000000..4b84e82 --- /dev/null +++ b/src/addons/gdvk/gdvk.gdns @@ -0,0 +1,8 @@ +[gd_resource type="NativeScript" load_steps=2 format=2] + +[ext_resource path="res://addons/gdvk/gdvk.gdnlib" type="GDNativeLibrary" id=1] + +[resource] +resource_name = "gdvk" +class_name = "GDVK" +library = ExtResource( 1 ) diff --git a/src/addons/gdvk/gdvk_plugin.gd b/src/addons/gdvk/gdvk_plugin.gd new file mode 100644 index 0000000..3ff0173 --- /dev/null +++ b/src/addons/gdvk/gdvk_plugin.gd @@ -0,0 +1,10 @@ +tool +extends EditorPlugin + + +func _enter_tree() -> void: + add_autoload_singleton("GDVK", "res://addons/gdvk/GDVK.tscn") + + +func _exit_tree() -> void: + remove_autoload_singleton("GDVK") diff --git a/src/addons/gdvk/plugin.cfg b/src/addons/gdvk/plugin.cfg new file mode 100644 index 0000000..4315d7b --- /dev/null +++ b/src/addons/gdvk/plugin.cfg @@ -0,0 +1,9 @@ +[plugin] + +name="GDVK" +description="Godot virtual keyboard plugin + +see https://github.com/CrispyPin/gdvk" +author="CrispyPin" +version="0.1.0" +script="gdvk_plugin.gd" diff --git a/ovr-utils/addons/godot-openvr/CHANGES.md b/src/addons/godot-openvr/CHANGES.md similarity index 100% rename from ovr-utils/addons/godot-openvr/CHANGES.md rename to src/addons/godot-openvr/CHANGES.md diff --git a/ovr-utils/addons/godot-openvr/EditorPlugin.gd b/src/addons/godot-openvr/EditorPlugin.gd similarity index 100% rename from ovr-utils/addons/godot-openvr/EditorPlugin.gd rename to src/addons/godot-openvr/EditorPlugin.gd diff --git a/ovr-utils/addons/godot-openvr/LICENSE b/src/addons/godot-openvr/LICENSE similarity index 100% rename from ovr-utils/addons/godot-openvr/LICENSE rename to src/addons/godot-openvr/LICENSE diff --git a/ovr-utils/addons/godot-openvr/OpenVRAction.gdns b/src/addons/godot-openvr/OpenVRAction.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRAction.gdns rename to src/addons/godot-openvr/OpenVRAction.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVRConfig.gdns b/src/addons/godot-openvr/OpenVRConfig.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRConfig.gdns rename to src/addons/godot-openvr/OpenVRConfig.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVRController.gdns b/src/addons/godot-openvr/OpenVRController.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRController.gdns rename to src/addons/godot-openvr/OpenVRController.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVRExportPlugin.gd b/src/addons/godot-openvr/OpenVRExportPlugin.gd similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRExportPlugin.gd rename to src/addons/godot-openvr/OpenVRExportPlugin.gd diff --git a/ovr-utils/addons/godot-openvr/OpenVRHaptics.gdns b/src/addons/godot-openvr/OpenVRHaptics.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRHaptics.gdns rename to src/addons/godot-openvr/OpenVRHaptics.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVROverlay.gdns b/src/addons/godot-openvr/OpenVROverlay.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVROverlay.gdns rename to src/addons/godot-openvr/OpenVROverlay.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVRPose.gdns b/src/addons/godot-openvr/OpenVRPose.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRPose.gdns rename to src/addons/godot-openvr/OpenVRPose.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVRRenderModel.gdns b/src/addons/godot-openvr/OpenVRRenderModel.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRRenderModel.gdns rename to src/addons/godot-openvr/OpenVRRenderModel.gdns diff --git a/ovr-utils/addons/godot-openvr/OpenVRSkeleton.gdns b/src/addons/godot-openvr/OpenVRSkeleton.gdns similarity index 100% rename from ovr-utils/addons/godot-openvr/OpenVRSkeleton.gdns rename to src/addons/godot-openvr/OpenVRSkeleton.gdns diff --git a/ovr-utils/addons/godot-openvr/actions/actions.json b/src/addons/godot-openvr/actions/actions.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/actions.json rename to src/addons/godot-openvr/actions/actions.json diff --git a/ovr-utils/addons/godot-openvr/actions/bindings_gamepad.json b/src/addons/godot-openvr/actions/bindings_gamepad.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/bindings_gamepad.json rename to src/addons/godot-openvr/actions/bindings_gamepad.json diff --git a/ovr-utils/addons/godot-openvr/actions/bindings_generic.json b/src/addons/godot-openvr/actions/bindings_generic.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/bindings_generic.json rename to src/addons/godot-openvr/actions/bindings_generic.json diff --git a/ovr-utils/addons/godot-openvr/actions/bindings_holographic_controller.json b/src/addons/godot-openvr/actions/bindings_holographic_controller.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/bindings_holographic_controller.json rename to src/addons/godot-openvr/actions/bindings_holographic_controller.json diff --git a/ovr-utils/addons/godot-openvr/actions/bindings_index_controller.json b/src/addons/godot-openvr/actions/bindings_index_controller.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/bindings_index_controller.json rename to src/addons/godot-openvr/actions/bindings_index_controller.json diff --git a/ovr-utils/addons/godot-openvr/actions/bindings_oculus_touch.json b/src/addons/godot-openvr/actions/bindings_oculus_touch.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/bindings_oculus_touch.json rename to src/addons/godot-openvr/actions/bindings_oculus_touch.json diff --git a/ovr-utils/addons/godot-openvr/actions/bindings_vive_controller.json b/src/addons/godot-openvr/actions/bindings_vive_controller.json similarity index 100% rename from ovr-utils/addons/godot-openvr/actions/bindings_vive_controller.json rename to src/addons/godot-openvr/actions/bindings_vive_controller.json diff --git a/ovr-utils/addons/godot-openvr/bin/LICENSE b/src/addons/godot-openvr/bin/LICENSE similarity index 100% rename from ovr-utils/addons/godot-openvr/bin/LICENSE rename to src/addons/godot-openvr/bin/LICENSE diff --git a/ovr-utils/addons/godot-openvr/bin/win64/libgodot_openvr.dll b/src/addons/godot-openvr/bin/win64/libgodot_openvr.dll similarity index 100% rename from ovr-utils/addons/godot-openvr/bin/win64/libgodot_openvr.dll rename to src/addons/godot-openvr/bin/win64/libgodot_openvr.dll diff --git a/ovr-utils/addons/godot-openvr/bin/win64/openvr_api.dll b/src/addons/godot-openvr/bin/win64/openvr_api.dll similarity index 100% rename from ovr-utils/addons/godot-openvr/bin/win64/openvr_api.dll rename to src/addons/godot-openvr/bin/win64/openvr_api.dll diff --git a/ovr-utils/addons/godot-openvr/bin/x11/libgodot_openvr.so b/src/addons/godot-openvr/bin/x11/libgodot_openvr.so similarity index 100% rename from ovr-utils/addons/godot-openvr/bin/x11/libgodot_openvr.so rename to src/addons/godot-openvr/bin/x11/libgodot_openvr.so diff --git a/ovr-utils/addons/godot-openvr/bin/x11/libopenvr_api.so b/src/addons/godot-openvr/bin/x11/libopenvr_api.so similarity index 100% rename from ovr-utils/addons/godot-openvr/bin/x11/libopenvr_api.so rename to src/addons/godot-openvr/bin/x11/libopenvr_api.so diff --git a/ovr-utils/addons/godot-openvr/godot_openvr.gdnlib b/src/addons/godot-openvr/godot_openvr.gdnlib similarity index 100% rename from ovr-utils/addons/godot-openvr/godot_openvr.gdnlib rename to src/addons/godot-openvr/godot_openvr.gdnlib diff --git a/ovr-utils/addons/godot-openvr/icon.png b/src/addons/godot-openvr/icon.png similarity index 100% rename from ovr-utils/addons/godot-openvr/icon.png rename to src/addons/godot-openvr/icon.png diff --git a/ovr-utils/addons/godot-openvr/icon.png.import b/src/addons/godot-openvr/icon.png.import similarity index 100% rename from ovr-utils/addons/godot-openvr/icon.png.import rename to src/addons/godot-openvr/icon.png.import diff --git a/ovr-utils/addons/godot-openvr/plugin.cfg b/src/addons/godot-openvr/plugin.cfg similarity index 100% rename from ovr-utils/addons/godot-openvr/plugin.cfg rename to src/addons/godot-openvr/plugin.cfg diff --git a/ovr-utils/addons/godot-openvr/scenes/framecounter_in_3d.tscn b/src/addons/godot-openvr/scenes/framecounter_in_3d.tscn similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/framecounter_in_3d.tscn rename to src/addons/godot-openvr/scenes/framecounter_in_3d.tscn diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_controller.gd b/src/addons/godot-openvr/scenes/ovr_controller.gd similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_controller.gd rename to src/addons/godot-openvr/scenes/ovr_controller.gd diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_controller.tscn b/src/addons/godot-openvr/scenes/ovr_controller.tscn similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_controller.tscn rename to src/addons/godot-openvr/scenes/ovr_controller.tscn diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_first_person.tscn b/src/addons/godot-openvr/scenes/ovr_first_person.tscn similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_first_person.tscn rename to src/addons/godot-openvr/scenes/ovr_first_person.tscn diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_main.gd b/src/addons/godot-openvr/scenes/ovr_main.gd similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_main.gd rename to src/addons/godot-openvr/scenes/ovr_main.gd diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_render_model.gd b/src/addons/godot-openvr/scenes/ovr_render_model.gd similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_render_model.gd rename to src/addons/godot-openvr/scenes/ovr_render_model.gd diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_render_model.tscn b/src/addons/godot-openvr/scenes/ovr_render_model.tscn similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_render_model.tscn rename to src/addons/godot-openvr/scenes/ovr_render_model.tscn diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_shader_cache.gd b/src/addons/godot-openvr/scenes/ovr_shader_cache.gd similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_shader_cache.gd rename to src/addons/godot-openvr/scenes/ovr_shader_cache.gd diff --git a/ovr-utils/addons/godot-openvr/scenes/ovr_shader_cache.tscn b/src/addons/godot-openvr/scenes/ovr_shader_cache.tscn similarity index 100% rename from ovr-utils/addons/godot-openvr/scenes/ovr_shader_cache.tscn rename to src/addons/godot-openvr/scenes/ovr_shader_cache.tscn diff --git a/ovr-utils/addons/openvr_overlay/MissingOverlay.tscn b/src/addons/openvr_overlay/MissingOverlay.tscn similarity index 100% rename from ovr-utils/addons/openvr_overlay/MissingOverlay.tscn rename to src/addons/openvr_overlay/MissingOverlay.tscn diff --git a/ovr-utils/addons/openvr_overlay/OverlayInstance.tscn b/src/addons/openvr_overlay/OverlayInstance.tscn similarity index 89% rename from ovr-utils/addons/openvr_overlay/OverlayInstance.tscn rename to src/addons/openvr_overlay/OverlayInstance.tscn index f9928eb..ede672e 100644 --- a/ovr-utils/addons/openvr_overlay/OverlayInstance.tscn +++ b/src/addons/openvr_overlay/OverlayInstance.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://addons/openvr_overlay/overlay_instance.gd" type="Script" id=1] +[ext_resource path="res://addons/openvr_overlay/OverlayInteraction.tscn" type="PackedScene" id=2] [ext_resource path="res://addons/godot-openvr/OpenVROverlay.gdns" type="Script" id=3] [sub_resource type="StyleBoxFlat" id=1] @@ -21,7 +22,6 @@ script = ExtResource( 1 ) [node name="OverlayViewport" type="Viewport" parent="."] size = Vector2( 2048, 2048 ) transparent_bg = true -handle_input_locally = false hdr = false disable_3d = true usage = 0 @@ -64,3 +64,5 @@ texture = SubResource( 2 ) expand = true stretch_mode = 5 flip_v = true + +[node name="OverlayInteraction" parent="." instance=ExtResource( 2 )] diff --git a/ovr-utils/addons/openvr_overlay/OverlayInteraction.tscn b/src/addons/openvr_overlay/OverlayInteraction.tscn similarity index 82% rename from ovr-utils/addons/openvr_overlay/OverlayInteraction.tscn rename to src/addons/openvr_overlay/OverlayInteraction.tscn index 9d0b978..5e5c959 100644 --- a/ovr-utils/addons/openvr_overlay/OverlayInteraction.tscn +++ b/src/addons/openvr_overlay/OverlayInteraction.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=2] [ext_resource path="res://addons/openvr_overlay/interaction/overlay_interaction.gd" type="Script" id=1] -[ext_resource path="res://addons/openvr_overlay/interaction/OverlayActivator.tscn" type="PackedScene" id=6] +[ext_resource path="res://addons/openvr_overlay/interaction/OverlayArea.tscn" type="PackedScene" id=2] [node name="OverlayInteraction" type="Node"] script = ExtResource( 1 ) @@ -10,16 +10,14 @@ script = ExtResource( 1 ) [node name="left" type="ARVRController" parent="VR"] -[node name="OverlayActivator" parent="VR/left" instance=ExtResource( 6 )] - [node name="right" type="ARVRController" parent="VR"] controller_id = 2 -[node name="OverlayActivator" parent="VR/right" instance=ExtResource( 6 )] - [node name="head" type="ARVRCamera" parent="VR"] visible = false +[node name="OverlayArea" parent="." instance=ExtResource( 2 )] + [connection signal="button_pressed" from="VR/left" to="." method="_on_LeftHand_button_pressed"] [connection signal="button_release" from="VR/left" to="." method="_on_LeftHand_button_release"] [connection signal="button_pressed" from="VR/right" to="." method="_on_RightHand_button_pressed"] diff --git a/src/addons/openvr_overlay/OverlayInteractionRoot.tscn b/src/addons/openvr_overlay/OverlayInteractionRoot.tscn new file mode 100644 index 0000000..912f27d --- /dev/null +++ b/src/addons/openvr_overlay/OverlayInteractionRoot.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/openvr_overlay/interaction/HandCollider.tscn" type="PackedScene" id=1] + +[node name="OverlayInteractionRoot" type="Node"] + +[node name="VR" type="ARVROrigin" parent="."] + +[node name="left" type="ARVRController" parent="VR"] + +[node name="HandCollider" parent="VR/left" groups=[ +"left", +] instance=ExtResource( 1 )] +collision_layer = 20 + +[node name="right" type="ARVRController" parent="VR"] +controller_id = 2 + +[node name="HandCollider" parent="VR/right" groups=[ +"right", +] instance=ExtResource( 1 )] +collision_layer = 10 + +[node name="head" type="ARVRCamera" parent="VR"] +visible = false diff --git a/ovr-utils/addons/openvr_overlay/interaction/Cursor.tscn b/src/addons/openvr_overlay/interaction/Cursor.tscn similarity index 100% rename from ovr-utils/addons/openvr_overlay/interaction/Cursor.tscn rename to src/addons/openvr_overlay/interaction/Cursor.tscn diff --git a/ovr-utils/addons/openvr_overlay/interaction/OverlayActivator.tscn b/src/addons/openvr_overlay/interaction/HandCollider.tscn similarity index 65% rename from ovr-utils/addons/openvr_overlay/interaction/OverlayActivator.tscn rename to src/addons/openvr_overlay/interaction/HandCollider.tscn index d705ca9..e238145 100644 --- a/ovr-utils/addons/openvr_overlay/interaction/OverlayActivator.tscn +++ b/src/addons/openvr_overlay/interaction/HandCollider.tscn @@ -4,7 +4,10 @@ margin = 0.001 radius = 0.01 -[node name="OverlayActivator" type="StaticBody"] +[node name="HandCollider" type="Area"] +monitoring = false +collision_layer = 30 +collision_mask = 0 [node name="Collision" type="CollisionShape" parent="."] shape = SubResource( 1 ) diff --git a/src/addons/openvr_overlay/interaction/OverlayArea.tscn b/src/addons/openvr_overlay/interaction/OverlayArea.tscn new file mode 100644 index 0000000..137fc12 --- /dev/null +++ b/src/addons/openvr_overlay/interaction/OverlayArea.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=3 format=2] + +[sub_resource type="BoxShape" id=1] +resource_local_to_scene = true +extents = Vector3( 0.2, 0.2, 0.1 ) + +[sub_resource type="BoxShape" id=2] +resource_local_to_scene = true +extents = Vector3( 0.2, 0.2, 0.01 ) + +[node name="OverlayArea" type="Spatial"] + +[node name="AreaNear" type="Area" parent="."] +monitorable = false +collision_layer = 0 +collision_mask = 6 + +[node name="CollisionShape" type="CollisionShape" parent="AreaNear"] +shape = SubResource( 1 ) + +[node name="AreaTouch" type="Area" parent="."] +monitorable = false +collision_layer = 0 +collision_mask = 24 + +[node name="CollisionShape" type="CollisionShape" parent="AreaTouch"] +shape = SubResource( 2 ) diff --git a/ovr-utils/addons/openvr_overlay/interaction/cursor.png b/src/addons/openvr_overlay/interaction/cursor.png similarity index 100% rename from ovr-utils/addons/openvr_overlay/interaction/cursor.png rename to src/addons/openvr_overlay/interaction/cursor.png diff --git a/ovr-utils/addons/openvr_overlay/interaction/cursor.png.import b/src/addons/openvr_overlay/interaction/cursor.png.import similarity index 100% rename from ovr-utils/addons/openvr_overlay/interaction/cursor.png.import rename to src/addons/openvr_overlay/interaction/cursor.png.import diff --git a/src/addons/openvr_overlay/interaction/mod/Clickable.tscn b/src/addons/openvr_overlay/interaction/mod/Clickable.tscn new file mode 100644 index 0000000..0930847 --- /dev/null +++ b/src/addons/openvr_overlay/interaction/mod/Clickable.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/openvr_overlay/interaction/mod/clickable.gd" type="Script" id=1] + +[node name="Clickable" type="Node"] +script = ExtResource( 1 ) diff --git a/src/addons/openvr_overlay/interaction/mod/Grabbable.tscn b/src/addons/openvr_overlay/interaction/mod/Grabbable.tscn new file mode 100644 index 0000000..41a9f85 --- /dev/null +++ b/src/addons/openvr_overlay/interaction/mod/Grabbable.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/openvr_overlay/interaction/mod/grabbable.gd" type="Script" id=1] + +[node name="Grabbable" type="Node"] +script = ExtResource( 1 ) diff --git a/src/addons/openvr_overlay/interaction/mod/Touchable.tscn b/src/addons/openvr_overlay/interaction/mod/Touchable.tscn new file mode 100644 index 0000000..f75ed18 --- /dev/null +++ b/src/addons/openvr_overlay/interaction/mod/Touchable.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/openvr_overlay/interaction/mod/clickable.gd" type="Script" id=1] + +[node name="Touchable" type="Node"] +script = ExtResource( 1 ) +is_touch = true diff --git a/src/addons/openvr_overlay/interaction/mod/clickable.gd b/src/addons/openvr_overlay/interaction/mod/clickable.gd new file mode 100644 index 0000000..f13b674 --- /dev/null +++ b/src/addons/openvr_overlay/interaction/mod/clickable.gd @@ -0,0 +1,109 @@ +extends Node + +export var is_touch := false + +onready var viewport: Viewport = get_node("../../OverlayViewport") +onready var _i = get_parent() + +var cursor_pos := { + "right": Vector2(), + "left": Vector2(), +} +var prev_pos := { + "right": Vector2(), + "left": Vector2(), +} +var click := { + "right": false, + "left": false, +} +var active_side := "" + +var cursor_nodes := { + "right": preload("res://addons/openvr_overlay/interaction/Cursor.tscn").instance(), + "left": preload("res://addons/openvr_overlay/interaction/Cursor.tscn").instance(), +} + +func _ready() -> void: + viewport.add_child(cursor_nodes.right) + viewport.add_child(cursor_nodes.left) + if is_touch: + get_parent().connect("touch_on", self, "_trigger_on") + get_parent().connect("touch_off", self, "_trigger_off") + else: + get_parent().connect("trigger_on", self, "_trigger_on") + get_parent().connect("trigger_off", self, "_trigger_off") + + +func _process(delta: float) -> void: + cursor_pos.right = get_canvas_pos("right") + cursor_pos.left = get_canvas_pos("left") + _update_cursors() +# _send_move_event() + prev_pos = cursor_pos.duplicate(true) + + + +# get canvas position of controller +func get_canvas_pos(controller) -> Vector2: + var controller_local_pos = _i._overlay_area.global_transform.xform_inv(\ + _i.tracker_nodes[controller].translation) + var pos = Vector2(controller_local_pos.x, controller_local_pos.y) + + var overlay_size = Vector2(2048, 2048) + # scale to pixels + pos *= overlay_size.x + pos /= _i.get_parent().width_meters + # adjust to center + pos.y *= -1 + pos += overlay_size * 0.5 + return pos + + +func _update_cursors(): + cursor_nodes.right.visible = _i.state.right.near + cursor_nodes.left.visible = _i.state.left.near + cursor_nodes.right.rect_position = cursor_pos.right + cursor_nodes.left.rect_position = cursor_pos.left + + +func _send_move_event(): + if not active_side: + return# only send move events while a cursor is held down + + var event = InputEventMouseMotion.new() + event.position = prev_pos[active_side] + event.relative = cursor_pos[active_side] - prev_pos[active_side] + event.speed = event.relative + viewport.input(event) + + +func _send_click_event(state: bool, controller: String): + if click[controller] == state: + return # already in that state + click[controller] = state + _update_active_side() + var click_event = InputEventMouseButton.new() + click_event.position = cursor_pos[controller] + click_event.pressed = state + click_event.button_index = 1 + viewport.input(click_event) +# print("SENT EVENT ", click_event.position, " -- ", click_event.pressed) + + +func _trigger_on(controller): + if click.right or click.left: + return + _send_click_event(true, controller) + + +func _trigger_off(controller): + _send_click_event(false, controller) + +func _update_active_side() -> void: + if click.right: + active_side = "right" + elif click.left: + active_side = "left" + else: + active_side = "" diff --git a/ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd b/src/addons/openvr_overlay/interaction/mod/grabbable.gd similarity index 86% rename from ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd rename to src/addons/openvr_overlay/interaction/mod/grabbable.gd index 6a67447..b2edefd 100644 --- a/ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd +++ b/src/addons/openvr_overlay/interaction/mod/grabbable.gd @@ -22,18 +22,18 @@ func _ready() -> void: get_parent().connect("trigger_off", self, "_trigger_off") -func _trigger_on(): +func _trigger_on(controller): if Settings.s.grab_mode or _interaction.grab_mode: - begin_move() + begin_move(controller) -func _trigger_off(): +func _trigger_off(_controller): finish_move() -func begin_move(): - if not _interaction.active_controller: - print("Could not begin moving overlay, no controller is touching overlay. <", _overlay.name, ">") +func begin_move(controller="right"): + if not _interaction.state[controller].near: + print("Could not begin moving overlay, " + controller + " controller is not touching overlay. <", _overlay.name, ">") return if is_moving: return @@ -41,7 +41,7 @@ func begin_move(): _interaction.pause_triggers = true # store current states to revert after move _pre_move_target = _overlay.current_target - _mover_hand_name = _interaction.active_controller + _mover_hand_name = controller _mover_hand_offsets = _overlay.get_offset(_mover_hand_name) # calculate offsets from active controller to overlay diff --git a/src/addons/openvr_overlay/interaction/overlay_interaction.gd b/src/addons/openvr_overlay/interaction/overlay_interaction.gd new file mode 100644 index 0000000..693466a --- /dev/null +++ b/src/addons/openvr_overlay/interaction/overlay_interaction.gd @@ -0,0 +1,188 @@ +extends Node + + +signal near_on # a controller entered the near area (enable cursor and/or touch visualiser) +signal near_off # a controller exited +signal touch_on +signal touch_off +signal trigger_on # trigger pushed while touching +signal trigger_off # trigger released + +var grab_mode := false setget set_grab_mode + +# reference to the area node thats used for touch +var _overlay_area: Spatial# = preload("res://addons/openvr_overlay/interaction/OverlayArea.tscn").instance() +var _right_is_activator := false # this hand has a collider on it to trigger things on the overlay +var _left_is_activator := false + +var pause_triggers := false # disable triggers updating (used by grab module) + +var state := { + "right": { + "active": false, + "near": false, + "touch": false, + "trigger": false, + }, + "left": { + "active": false, + "near": false, + "touch": false, + "trigger": false, + }, +} + + +onready var tracker_nodes = { + "head": $VR/head, + "left": $VR/left, + "right": $VR/right, + "world": $VR +} + + +func _ready() -> void: + _overlay_area = $OverlayArea + _overlay_area.get_node("AreaNear"). connect("area_entered", self, "_on_Near_entered") + _overlay_area.get_node("AreaNear"). connect("area_exited", self, "_on_Near_exited") + _overlay_area.get_node("AreaTouch").connect("area_entered", self, "_on_Touch_entered") + _overlay_area.get_node("AreaTouch").connect("area_exited", self, "_on_Touch_exited") + + get_parent().connect("width_changed", self, "_update_width") + get_parent().connect("offset_changed", self, "_update_offset") + get_parent().connect("target_changed", self, "_update_target") + + OverlayManager.connect("grab_mode_changed", self, "update_selection") + + call_deferred("_update_width") + call_deferred("_update_offset") + call_deferred("_update_target") + + +func _trigger_on(controller): + if state[controller].near: + state[controller].trigger = true +# print("TRIGGER ON ", controller) + emit_signal("trigger_on", controller) + + +func _trigger_off(controller): + state[controller].trigger = false +# print("TRIGGER OFF ", controller) + emit_signal("trigger_off", controller) + + +func _on_Near_entered(body: Node) -> void: + if pause_triggers or !get_parent().overlay_visible: + return + var hand = body.get_groups()[0] + state[hand].near = true + update_selection() +# print("NEAR ON ", hand) + emit_signal("near_on") + + +func _on_Near_exited(body: Node) -> void: + if pause_triggers or !get_parent().overlay_visible: + return + var hand = body.get_groups()[0] + state[hand].near = false + +# print("NEAR OFF ", hand) + update_selection() + emit_signal("near_off") + + +func _on_Touch_entered(body: Node) -> void: + if pause_triggers or !get_parent().overlay_visible: + return + var hand = body.get_groups()[0] + state[hand].touch = true + update_selection() +# print("TOUCH ON ", hand) + emit_signal("touch_on", hand) + + +func _on_Touch_exited(body: Node) -> void: + if pause_triggers or !get_parent().overlay_visible: + return + var hand = body.get_groups()[0] + state[hand].touch = false + update_selection() +# print("TOUCH OFF ", hand) + emit_signal("touch_off", hand) + + +func update_selection(): + var sel = (Settings.s.grab_mode or grab_mode) + sel = sel and (state.right.near or state.left.near) + get_parent().get_node("OverlayViewport/Selected").visible = sel + + +func set_grab_mode(state: bool) -> void: + grab_mode = state + update_selection() + + +func _update_width(): + var ratio = OverlayInit.ovr_interface.get_render_targetsize() + var extents = get_parent().width_meters * 0.5 + _overlay_area.get_node("AreaNear/CollisionShape").shape.set_extents( + Vector3(extents, extents * ratio.y/ratio.x, 0.1)) + _overlay_area.get_node("AreaTouch/CollisionShape").shape.set_extents( + Vector3(extents, extents * ratio.y/ratio.x, 0.01)) + + +func _update_offset(): + _overlay_area.translation = get_parent().translation + _overlay_area.rotation = get_parent().rotation + + +func _update_target(): + var t = get_parent().current_target + # reparent _overlay_area + _overlay_area.get_parent().remove_child(_overlay_area) + tracker_nodes[t].add_child(_overlay_area) + + state.right.active = t != "right" + state.left.active = t != "left" + # make area only detect colliders of a different hand + _overlay_area.get_node("AreaNear").collision_mask = int(t!="right")*2 # detect right hand + _overlay_area.get_node("AreaNear").collision_mask += int(t!="left")*4 # detect left hand + _overlay_area.get_node("AreaNear").collision_mask = int(t!="right")*8 # detect right hand + _overlay_area.get_node("AreaNear").collision_mask += int(t!="left")*16 # detect left hand + + +# called by overlay_instance after properties are loaded and before overlay scene enters the tree +func spawn_modules(): + if get_parent().get_property("grabbable"): + var module = preload("res://addons/openvr_overlay/interaction/mod/Grabbable.tscn") + add_child(module.instance()) + + if get_parent().get_property("clickable"): + var module = preload("res://addons/openvr_overlay/interaction/mod/Clickable.tscn") + add_child(module.instance()) + + if get_parent().get_property("touchable"): + var module = preload("res://addons/openvr_overlay/interaction/mod/Touchable.tscn") + add_child(module.instance()) + + +func _on_RightHand_button_pressed(button: int) -> void: + if button == JOY_VR_TRIGGER and state.right.active: + _trigger_on("right") + + +func _on_RightHand_button_release(button: int) -> void: + if button == JOY_VR_TRIGGER and state.right.trigger: + _trigger_off("right") + + +func _on_LeftHand_button_pressed(button: int) -> void: + if button == JOY_VR_TRIGGER and state.left.active: + _trigger_on("left") + + +func _on_LeftHand_button_release(button: int) -> void: + if button == JOY_VR_TRIGGER and state.left.trigger: + _trigger_off("left") diff --git a/ovr-utils/addons/openvr_overlay/openvr_overlay.gd b/src/addons/openvr_overlay/openvr_overlay.gd similarity index 56% rename from ovr-utils/addons/openvr_overlay/openvr_overlay.gd rename to src/addons/openvr_overlay/openvr_overlay.gd index 4cdcb82..7c22a3b 100644 --- a/ovr-utils/addons/openvr_overlay/openvr_overlay.gd +++ b/src/addons/openvr_overlay/openvr_overlay.gd @@ -4,7 +4,9 @@ extends EditorPlugin func _enter_tree() -> void: add_autoload_singleton("OverlayInit", "res://addons/openvr_overlay/overlay_init.gd") + add_autoload_singleton("OverlayInteractionRoot", "res://addons/openvr_overlay/OverlayInteractionRoot.tscn") func _exit_tree() -> void: remove_autoload_singleton("OverlayInit") + remove_autoload_singleton("OverlayInteractionRoot") diff --git a/ovr-utils/addons/openvr_overlay/overlay_init.gd b/src/addons/openvr_overlay/overlay_init.gd similarity index 78% rename from ovr-utils/addons/openvr_overlay/overlay_init.gd rename to src/addons/openvr_overlay/overlay_init.gd index 358a644..3abdeef 100644 --- a/ovr-utils/addons/openvr_overlay/overlay_init.gd +++ b/src/addons/openvr_overlay/overlay_init.gd @@ -1,5 +1,14 @@ extends Node + +const OVERLAY_PROPERTIES_DEFAULT = { + "allow_delete": true, + "allow_hide": true, + "clickable": false, + "touchable": false, + "grabbable": true, +} + var ovr_interface: ARVRInterface var ovr_config := preload("res://addons/godot-openvr/OpenVRConfig.gdns").new() @@ -11,9 +20,7 @@ var trackers = { } func _init() -> void: -# OS.window_minimized = true - ovr_config = preload("res://addons/godot-openvr/OpenVRConfig.gdns").new() - ovr_config.set_application_type(2) # Set to OVERLAY MODE = 2, NORMAL MODE = 1 + ovr_config.set_application_type(2) # Set to OVERLAY MODE ovr_config.set_tracking_universe(1) # Set to SEATED MODE = 0, STANDING MODE = 1, RAW MODE = 2 # Find the OpenVR interface and initialise it @@ -23,9 +30,14 @@ func _init() -> void: func _ready() -> void: + OS.window_size = Vector2(16, 16) + OS.window_position = Vector2(32, 32) + OS.window_minimized = true + ARVRServer.connect("tracker_added", self, "_tracker_added") ARVRServer.connect("tracker_removed", self, "_tracker_removed") update_hand_ids() + #Input.set_use_accumulated_input(true) func _tracker_added(tracker_name: String, type: int, id: int): diff --git a/ovr-utils/addons/openvr_overlay/overlay_instance.gd b/src/addons/openvr_overlay/overlay_instance.gd similarity index 82% rename from ovr-utils/addons/openvr_overlay/overlay_instance.gd rename to src/addons/openvr_overlay/overlay_instance.gd index 9c08712..35b8443 100644 --- a/ovr-utils/addons/openvr_overlay/overlay_instance.gd +++ b/src/addons/openvr_overlay/overlay_instance.gd @@ -1,6 +1,6 @@ extends Spatial -signal path_changed +#signal path_changed signal overlay_visible_changed signal width_changed signal alpha_changed @@ -12,9 +12,8 @@ const TARGETS = ["head", "left", "right", "world"] export (String, "head", "left", "right", "world") var target = "left" setget set_target export var width_meters := 0.4 setget set_width_in_meters -export var alpha := 1.0 setget set_alpha -export var add_grabbing := true # add grabbing module -export var add_cursor := false # add cursor module +export var alpha := 1.0 setget set_alpha + var _tracker_id := 0 var _offsets:Dictionary = { @@ -29,15 +28,17 @@ var current_target: String = "world" setget _set_current_target var fallback = ["left", "right", "head"] # TODO setget that updates tracking (not important) var interaction_handler: Node var overlay_visible := true setget set_overlay_visible -var path := "res://special_overlays/MainOverlay.tscn" setget set_path +var path : String = "res://special_overlays/MainOverlay.tscn"# setget set_path var path_invalid := false -var OVERLAY_PROPERTIES: Dictionary +var OVERLAY_PROPERTIES: Dictionary # defined in overlay root script (optional) onready var container = $OverlayViewport/Container var overlay_scene: Node func _ready() -> void: + container = $OverlayViewport/Container + load_overlay() current_target = target ARVRServer.connect("tracker_added", self, "_tracker_changed") @@ -46,25 +47,27 @@ func _ready() -> void: $VROverlayViewport.size = OverlayInit.ovr_interface.get_render_targetsize() set_notify_transform(true) - if add_cursor or add_grabbing: - interaction_handler = load("res://addons/openvr_overlay/OverlayInteraction.tscn").instance() - add_child(interaction_handler) - if add_cursor: - add_cursor() - if add_grabbing: - add_grab() - update_tracker_id() call_deferred("update_offset") +func load_overlay() -> void: + path_invalid = false -func add_cursor(): - interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayCursor.tscn").instance()) + var packed_overlay = load(path) + if not packed_overlay: + path_invalid = true + overlay_scene = load("res://special_overlays/UnknownType.tscn").instance() + else: + overlay_scene = packed_overlay.instance() + if overlay_scene.get("OVERLAY_PROPERTIES") != null: + OVERLAY_PROPERTIES = overlay_scene.OVERLAY_PROPERTIES -func add_grab(): - interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayGrab.tscn").instance()) + $OverlayInteraction.spawn_modules() + if container.get_child_count() > 0: + container.get_child(0).queue_free() + container.add_child(overlay_scene) func update_tracker_id(): _tracker_id = -1 @@ -78,7 +81,7 @@ func update_tracker_id(): if _tracker_id == -1: # could not find controller, fallback - print("Missing controller ", current_target, " ", target, " ", fallback, " - ", name) +# print("Missing controller ", current_target, " ", target, " ", fallback, " - ", name) _tracker_id = 63 # highest tracker id (unused, at origin) @@ -146,27 +149,6 @@ func set_width_in_meters(width: float) -> void: emit_signal("width_changed") -func set_path(new: String) -> void: - path = new - path_invalid = false - - var packed_overlay = load(path) - if not packed_overlay: - path_invalid = true - overlay_scene = load("res://special_overlays/UnknownType.tscn").instance() - else: - overlay_scene = packed_overlay.instance() - - if container.get_child_count() > 0: - container.get_child(0).queue_free() - container.add_child(overlay_scene) - - if overlay_scene.get("OVERLAY_PROPERTIES") != null: - OVERLAY_PROPERTIES = overlay_scene.OVERLAY_PROPERTIES - - emit_signal("path_changed") - - func set_alpha(val: float): alpha = val $VROverlayViewport/TextureRect.modulate.a = val @@ -184,3 +166,10 @@ func reset_offset() -> void: func _notification(what: int) -> void: if what == NOTIFICATION_TRANSFORM_CHANGED: emit_signal("offset_changed") + + +func get_property(p_name: String): + if OVERLAY_PROPERTIES.has(p_name): + return OVERLAY_PROPERTIES[p_name] + + return OverlayInit.OVERLAY_PROPERTIES_DEFAULT[p_name] diff --git a/ovr-utils/addons/openvr_overlay/plugin.cfg b/src/addons/openvr_overlay/plugin.cfg similarity index 100% rename from ovr-utils/addons/openvr_overlay/plugin.cfg rename to src/addons/openvr_overlay/plugin.cfg diff --git a/ovr-utils/addons/ovr_utils/ovr_utils.gd b/src/addons/ovr_utils/ovr_utils.gd similarity index 100% rename from ovr-utils/addons/ovr_utils/ovr_utils.gd rename to src/addons/ovr_utils/ovr_utils.gd diff --git a/ovr-utils/addons/ovr_utils/ovr_utils_exporter.gd b/src/addons/ovr_utils/ovr_utils_exporter.gd similarity index 100% rename from ovr-utils/addons/ovr_utils/ovr_utils_exporter.gd rename to src/addons/ovr_utils/ovr_utils_exporter.gd diff --git a/ovr-utils/addons/ovr_utils/plugin.cfg b/src/addons/ovr_utils/plugin.cfg similarity index 100% rename from ovr-utils/addons/ovr_utils/plugin.cfg rename to src/addons/ovr_utils/plugin.cfg diff --git a/ovr-utils/addons/settings-manager/LICENSE b/src/addons/settings-manager/LICENSE similarity index 100% rename from ovr-utils/addons/settings-manager/LICENSE rename to src/addons/settings-manager/LICENSE diff --git a/ovr-utils/addons/settings-manager/Settings.tscn b/src/addons/settings-manager/Settings.tscn similarity index 100% rename from ovr-utils/addons/settings-manager/Settings.tscn rename to src/addons/settings-manager/Settings.tscn diff --git a/ovr-utils/addons/settings-manager/plugin.cfg b/src/addons/settings-manager/plugin.cfg similarity index 100% rename from ovr-utils/addons/settings-manager/plugin.cfg rename to src/addons/settings-manager/plugin.cfg diff --git a/ovr-utils/addons/settings-manager/settings_manager.gd b/src/addons/settings-manager/settings_manager.gd similarity index 100% rename from ovr-utils/addons/settings-manager/settings_manager.gd rename to src/addons/settings-manager/settings_manager.gd diff --git a/ovr-utils/addons/settings-manager/settings_plugin.gd b/src/addons/settings-manager/settings_plugin.gd similarity index 100% rename from ovr-utils/addons/settings-manager/settings_plugin.gd rename to src/addons/settings-manager/settings_plugin.gd diff --git a/ovr-utils/default_env.tres b/src/default_env.tres similarity index 100% rename from ovr-utils/default_env.tres rename to src/default_env.tres diff --git a/ovr-utils/export_presets.cfg b/src/export_presets.cfg similarity index 98% rename from ovr-utils/export_presets.cfg rename to src/export_presets.cfg index a5e5b7b..6c24efb 100644 --- a/ovr-utils/export_presets.cfg +++ b/src/export_presets.cfg @@ -5,7 +5,7 @@ platform="Linux/X11" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="*.json" exclude_filter="" export_path="../builds/linux/ovr-utils.x86_64" script_export_mode=1 diff --git a/ovr-utils/fonts/LICENSE.txt b/src/fonts/LICENSE.txt similarity index 100% rename from ovr-utils/fonts/LICENSE.txt rename to src/fonts/LICENSE.txt diff --git a/ovr-utils/fonts/OpenSans-Bold.ttf b/src/fonts/OpenSans-Bold.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-Bold.ttf rename to src/fonts/OpenSans-Bold.ttf diff --git a/ovr-utils/fonts/OpenSans-BoldItalic.ttf b/src/fonts/OpenSans-BoldItalic.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-BoldItalic.ttf rename to src/fonts/OpenSans-BoldItalic.ttf diff --git a/ovr-utils/fonts/OpenSans-ExtraBold.ttf b/src/fonts/OpenSans-ExtraBold.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-ExtraBold.ttf rename to src/fonts/OpenSans-ExtraBold.ttf diff --git a/ovr-utils/fonts/OpenSans-ExtraBoldItalic.ttf b/src/fonts/OpenSans-ExtraBoldItalic.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-ExtraBoldItalic.ttf rename to src/fonts/OpenSans-ExtraBoldItalic.ttf diff --git a/ovr-utils/fonts/OpenSans-Italic.ttf b/src/fonts/OpenSans-Italic.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-Italic.ttf rename to src/fonts/OpenSans-Italic.ttf diff --git a/ovr-utils/fonts/OpenSans-Light.ttf b/src/fonts/OpenSans-Light.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-Light.ttf rename to src/fonts/OpenSans-Light.ttf diff --git a/ovr-utils/fonts/OpenSans-LightItalic.ttf b/src/fonts/OpenSans-LightItalic.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-LightItalic.ttf rename to src/fonts/OpenSans-LightItalic.ttf diff --git a/ovr-utils/fonts/OpenSans-Regular.ttf b/src/fonts/OpenSans-Regular.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-Regular.ttf rename to src/fonts/OpenSans-Regular.ttf diff --git a/ovr-utils/fonts/OpenSans-SemiBold.ttf b/src/fonts/OpenSans-SemiBold.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-SemiBold.ttf rename to src/fonts/OpenSans-SemiBold.ttf diff --git a/ovr-utils/fonts/OpenSans-SemiBoldItalic.ttf b/src/fonts/OpenSans-SemiBoldItalic.ttf similarity index 100% rename from ovr-utils/fonts/OpenSans-SemiBoldItalic.ttf rename to src/fonts/OpenSans-SemiBoldItalic.ttf diff --git a/ovr-utils/icons/add.svg b/src/icons/add.svg similarity index 100% rename from ovr-utils/icons/add.svg rename to src/icons/add.svg diff --git a/ovr-utils/icons/add.svg.import b/src/icons/add.svg.import similarity index 100% rename from ovr-utils/icons/add.svg.import rename to src/icons/add.svg.import diff --git a/ovr-utils/icons/alpha.svg b/src/icons/alpha.svg similarity index 100% rename from ovr-utils/icons/alpha.svg rename to src/icons/alpha.svg diff --git a/ovr-utils/icons/alpha.svg.import b/src/icons/alpha.svg.import similarity index 100% rename from ovr-utils/icons/alpha.svg.import rename to src/icons/alpha.svg.import diff --git a/ovr-utils/icons/close.svg b/src/icons/close.svg similarity index 100% rename from ovr-utils/icons/close.svg rename to src/icons/close.svg diff --git a/ovr-utils/icons/close.svg.import b/src/icons/close.svg.import similarity index 100% rename from ovr-utils/icons/close.svg.import rename to src/icons/close.svg.import diff --git a/ovr-utils/icons/hidden.svg b/src/icons/hidden.svg similarity index 100% rename from ovr-utils/icons/hidden.svg rename to src/icons/hidden.svg diff --git a/ovr-utils/icons/hidden.svg.import b/src/icons/hidden.svg.import similarity index 100% rename from ovr-utils/icons/hidden.svg.import rename to src/icons/hidden.svg.import diff --git a/ovr-utils/icons/list.svg b/src/icons/list.svg similarity index 100% rename from ovr-utils/icons/list.svg rename to src/icons/list.svg diff --git a/ovr-utils/icons/list.svg.import b/src/icons/list.svg.import similarity index 100% rename from ovr-utils/icons/list.svg.import rename to src/icons/list.svg.import diff --git a/ovr-utils/icons/move.svg b/src/icons/move.svg similarity index 100% rename from ovr-utils/icons/move.svg rename to src/icons/move.svg diff --git a/ovr-utils/icons/move.svg.import b/src/icons/move.svg.import similarity index 100% rename from ovr-utils/icons/move.svg.import rename to src/icons/move.svg.import diff --git a/ovr-utils/icons/remove.svg b/src/icons/remove.svg similarity index 100% rename from ovr-utils/icons/remove.svg rename to src/icons/remove.svg diff --git a/ovr-utils/icons/remove.svg.import b/src/icons/remove.svg.import similarity index 100% rename from ovr-utils/icons/remove.svg.import rename to src/icons/remove.svg.import diff --git a/ovr-utils/icons/reset.svg b/src/icons/reset.svg similarity index 100% rename from ovr-utils/icons/reset.svg rename to src/icons/reset.svg diff --git a/ovr-utils/icons/reset.svg.import b/src/icons/reset.svg.import similarity index 100% rename from ovr-utils/icons/reset.svg.import rename to src/icons/reset.svg.import diff --git a/ovr-utils/icons/size.svg b/src/icons/size.svg similarity index 100% rename from ovr-utils/icons/size.svg rename to src/icons/size.svg diff --git a/ovr-utils/icons/size.svg.import b/src/icons/size.svg.import similarity index 100% rename from ovr-utils/icons/size.svg.import rename to src/icons/size.svg.import diff --git a/ovr-utils/icons/slider_handle.svg b/src/icons/slider_handle.svg similarity index 100% rename from ovr-utils/icons/slider_handle.svg rename to src/icons/slider_handle.svg diff --git a/ovr-utils/icons/slider_handle.svg.import b/src/icons/slider_handle.svg.import similarity index 100% rename from ovr-utils/icons/slider_handle.svg.import rename to src/icons/slider_handle.svg.import diff --git a/ovr-utils/icons/target.svg b/src/icons/target.svg similarity index 100% rename from ovr-utils/icons/target.svg rename to src/icons/target.svg diff --git a/ovr-utils/icons/target.svg.import b/src/icons/target.svg.import similarity index 100% rename from ovr-utils/icons/target.svg.import rename to src/icons/target.svg.import diff --git a/ovr-utils/icons/touch.svg b/src/icons/touch.svg similarity index 100% rename from ovr-utils/icons/touch.svg rename to src/icons/touch.svg diff --git a/ovr-utils/icons/touch.svg.import b/src/icons/touch.svg.import similarity index 100% rename from ovr-utils/icons/touch.svg.import rename to src/icons/touch.svg.import diff --git a/ovr-utils/icons/tracking/hand_l.svg b/src/icons/tracking/hand_l.svg similarity index 100% rename from ovr-utils/icons/tracking/hand_l.svg rename to src/icons/tracking/hand_l.svg diff --git a/ovr-utils/icons/tracking/hand_l.svg.import b/src/icons/tracking/hand_l.svg.import similarity index 100% rename from ovr-utils/icons/tracking/hand_l.svg.import rename to src/icons/tracking/hand_l.svg.import diff --git a/ovr-utils/icons/tracking/hand_r.svg b/src/icons/tracking/hand_r.svg similarity index 100% rename from ovr-utils/icons/tracking/hand_r.svg rename to src/icons/tracking/hand_r.svg diff --git a/ovr-utils/icons/tracking/hand_r.svg.import b/src/icons/tracking/hand_r.svg.import similarity index 100% rename from ovr-utils/icons/tracking/hand_r.svg.import rename to src/icons/tracking/hand_r.svg.import diff --git a/ovr-utils/icons/tracking/person.svg b/src/icons/tracking/person.svg similarity index 100% rename from ovr-utils/icons/tracking/person.svg rename to src/icons/tracking/person.svg diff --git a/ovr-utils/icons/tracking/person.svg.import b/src/icons/tracking/person.svg.import similarity index 100% rename from ovr-utils/icons/tracking/person.svg.import rename to src/icons/tracking/person.svg.import diff --git a/ovr-utils/icons/tracking/world.svg b/src/icons/tracking/world.svg similarity index 100% rename from ovr-utils/icons/tracking/world.svg rename to src/icons/tracking/world.svg diff --git a/ovr-utils/icons/tracking/world.svg.import b/src/icons/tracking/world.svg.import similarity index 100% rename from ovr-utils/icons/tracking/world.svg.import rename to src/icons/tracking/world.svg.import diff --git a/ovr-utils/icons/visible.svg b/src/icons/visible.svg similarity index 100% rename from ovr-utils/icons/visible.svg rename to src/icons/visible.svg diff --git a/ovr-utils/icons/visible.svg.import b/src/icons/visible.svg.import similarity index 100% rename from ovr-utils/icons/visible.svg.import rename to src/icons/visible.svg.import diff --git a/ovr-utils/icons/warning.svg b/src/icons/warning.svg similarity index 100% rename from ovr-utils/icons/warning.svg rename to src/icons/warning.svg diff --git a/ovr-utils/icons/warning.svg.import b/src/icons/warning.svg.import similarity index 100% rename from ovr-utils/icons/warning.svg.import rename to src/icons/warning.svg.import diff --git a/ovr-utils/overlay_manager.gd b/src/overlay_manager.gd similarity index 95% rename from ovr-utils/overlay_manager.gd rename to src/overlay_manager.gd index a6a36ca..6b1dea6 100644 --- a/ovr-utils/overlay_manager.gd +++ b/src/overlay_manager.gd @@ -29,6 +29,7 @@ func add_overlay(name): print("Adding overlay '", name, "'") var instance = preload("res://addons/openvr_overlay/OverlayInstance.tscn").instance() instance.name = name + instance.path = Settings.s.overlays[name].path instance.add_child(preload("res://OverlaySettingsSync.tscn").instance()) add_child(instance) emit_signal("added_overlay", name) diff --git a/ovr-utils/overlay_scripts/battery.gd b/src/overlay_resources/battery.gd similarity index 100% rename from ovr-utils/overlay_scripts/battery.gd rename to src/overlay_resources/battery.gd diff --git a/ovr-utils/overlay_scripts/image_viewer.gd b/src/overlay_resources/image_viewer.gd similarity index 84% rename from ovr-utils/overlay_scripts/image_viewer.gd rename to src/overlay_resources/image_viewer.gd index 11aabf8..f762935 100644 --- a/ovr-utils/overlay_scripts/image_viewer.gd +++ b/src/overlay_resources/image_viewer.gd @@ -1,8 +1,12 @@ extends Control +const OVERLAY_PROPERTIES = { + "clickable": true, +} + func _ready() -> void: - get_viewport().get_parent().add_cursor() + #get_viewport().get_parent().add_cursor() var homefolder = OS.get_user_data_dir() homefolder = homefolder.get_base_dir().get_base_dir().get_base_dir() $FileDialog.current_dir = homefolder diff --git a/src/overlay_resources/keyboard/KeyBtn.tscn b/src/overlay_resources/keyboard/KeyBtn.tscn new file mode 100644 index 0000000..a932e17 --- /dev/null +++ b/src/overlay_resources/keyboard/KeyBtn.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://overlay_resources/keyboard/keyboard.theme" type="Theme" id=1] + +[node name="Btn" type="Button"] +margin_top = 993.0 +margin_right = 78.0 +margin_bottom = 1054.0 +rect_min_size = Vector2( 100, 100 ) +rect_pivot_offset = Vector2( 50, 50 ) +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +text = "Key" +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/src/overlay_resources/keyboard/KeyRow.tscn b/src/overlay_resources/keyboard/KeyRow.tscn new file mode 100644 index 0000000..08125f2 --- /dev/null +++ b/src/overlay_resources/keyboard/KeyRow.tscn @@ -0,0 +1,9 @@ +[gd_scene format=2] + +[node name="KeyRow" type="HBoxContainer"] +margin_right = 230.0 +margin_bottom = 128.0 +custom_constants/separation = 0 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/src/overlay_resources/keyboard/key_normal.stylebox b/src/overlay_resources/keyboard/key_normal.stylebox new file mode 100644 index 0000000..c01042e Binary files /dev/null and b/src/overlay_resources/keyboard/key_normal.stylebox differ diff --git a/src/overlay_resources/keyboard/key_pressed.stylebox b/src/overlay_resources/keyboard/key_pressed.stylebox new file mode 100644 index 0000000..ec6842b Binary files /dev/null and b/src/overlay_resources/keyboard/key_pressed.stylebox differ diff --git a/src/overlay_resources/keyboard/keyboard.theme b/src/overlay_resources/keyboard/keyboard.theme new file mode 100644 index 0000000..ef3ff34 Binary files /dev/null and b/src/overlay_resources/keyboard/keyboard.theme differ diff --git a/src/overlay_resources/keyboard/keyboard_overlay.gd b/src/overlay_resources/keyboard/keyboard_overlay.gd new file mode 100644 index 0000000..4a58465 --- /dev/null +++ b/src/overlay_resources/keyboard/keyboard_overlay.gd @@ -0,0 +1,90 @@ +extends Control + +const OVERLAY_PROPERTIES = { + "touchable": true, +} + +export var key_size := 100 +export var key_row : PackedScene +export var key_button : PackedScene +export var row_container_path : NodePath + +var row_container + +var keymap := {} +var toggle_keys := [] + +func _ready(): + row_container = get_node(row_container_path) + load_keys("res://overlay_resources/keyboard/layouts/layout_se.json") + + +func load_keys(fp: String): + var file = File.new() + file.open(fp, File.READ) + keymap = parse_json(file.get_as_text()) + file.close() + + apply_keys() + + +func apply_keys(): + for row in keymap.rows: + var row_box = key_row.instance() + row_container.add_child(row_box) + for key in row.keys: + var btn = key_button.instance() + + if not key.has("display"): + key.display = key.keycode + btn.get_node("Label").text = key.display + btn.name = key.keycode + + btn.rect_min_size.x = key_size + btn.rect_min_size.y = key_size + if key.has("width"): + btn.rect_min_size.x *= key.width + + if key.has("toggle") and key.toggle: + btn.toggle_mode = true + btn.connect("toggled", self, "key_toggled", [key.keycode]) + toggle_keys.append(btn) + else: + btn.connect("button_down", self, "key_down", [key.keycode]) + btn.connect("button_up", self, "key_up", [key.keycode]) + + row_box.add_child(btn) + + # horizontal gaps + if key.has("gap"): + var gapbox = Control.new() + gapbox.rect_min_size.x = key.gap * key_size + gapbox.name = "Gap" + row_box.add_child(gapbox) + + # vertical gaps + if row.has("gap") and row.gap > 0: + var gapbox = Control.new() + gapbox.rect_min_size.y = row.gap * key_size + gapbox.name = "Gap" + row_container.add_child(gapbox) + + +func key_toggled(state, code): + if state: + GDVK.key_down(code) + else: + GDVK.key_up(code) + + +func key_down(code): + GDVK.key_down(code) + + +func key_up(code): + GDVK.key_up(code) + # clear all modifier keys + for k in toggle_keys: + if k.pressed: + k.pressed = false + diff --git a/src/overlay_resources/keyboard/layouts/layout_se.json b/src/overlay_resources/keyboard/layouts/layout_se.json new file mode 100644 index 0000000..c90a356 --- /dev/null +++ b/src/overlay_resources/keyboard/layouts/layout_se.json @@ -0,0 +1,372 @@ +{ + "rows": [ + { + "gap": 0.5, + "keys": [ + { + "keycode": "ESCAPE", + "display": "Esc", + "gap": 1 + }, + { + "keycode": "F1", + "display": "F1" + }, + { + "keycode": "F2", + "display": "F2" + }, + { + "keycode": "F3", + "display": "F3" + }, + { + "keycode": "F4", + "display": "F4", + "gap": 0.5 + }, + { + "keycode": "F5", + "display": "F5" + }, + { + "keycode": "F6", + "display": "F6" + }, + { + "keycode": "F7", + "display": "F7" + }, + { + "keycode": "F8", + "display": "F8", + "gap": 0.5 + }, + { + "keycode": "F9", + "display": "F9" + }, + { + "keycode": "F10", + "display": "F10" + }, + { + "keycode": "F11", + "display": "F11" + }, + { + "keycode": "F12", + "display": "F12", + "gap": 0.5 + }, + { + "keycode": "PRINT", + "display": "Print\nScrn" + } + ] + }, + { + "keys": [ + { + "keycode": "SECTION", + "display": "§" + }, + { + "keycode": "1" + }, + { + "keycode": "2" + }, + { + "keycode": "3" + }, + { + "keycode": "4" + }, + { + "keycode": "5" + }, + { + "keycode": "6" + }, + { + "keycode": "7" + }, + { + "keycode": "8" + }, + { + "keycode": "9" + }, + { + "keycode": "0" + }, + { + "keycode": "PLUS", + "display": "+" + }, + { + "keycode": "GRAVE", + "display": "`" + }, + { + "keycode": "BACKSPACE", + "display": "Backspace", + "width": 2, + "gap": 0.5 + }, + { + "keycode": "INSERT", + "display": "Ins" + }, + { + "keycode": "HOME", + "display": "Home" + }, + { + "keycode": "PAGE_UP", + "display": "Page\nUp" + } + ] + }, + { + "keys": [ + { + "keycode": "TAB", + "display": "->", + "width": 1.5 + }, + { + "keycode": "Q" + }, + { + "keycode": "W" + }, + { + "keycode": "E" + }, + { + "keycode": "R" + }, + { + "keycode": "T" + }, + { + "keycode": "Y" + }, + { + "keycode": "U" + }, + { + "keycode": "I" + }, + { + "keycode": "O" + }, + { + "keycode": "P" + }, + { + "keycode": "ARING", + "display": "Å" + }, + { + "keycode": "DIAERSIS", + "display": "^\n¨ ~" + }, + { + "keycode": "ENTER", + "display": "Enter", + "width": 1.5, + "gap": 0.5 + }, + { + "keycode": "DELETE", + "display": "Del" + }, + { + "keycode": "END", + "display": "End" + }, + { + "keycode": "PAGE_DOWN", + "display": "Page\nDown" + } + ] + }, + { + "keys": [ + { + "keycode": "CAPSLOCK", + "display": "CAPS", + "width": 1.75 + }, + { + "keycode": "A" + }, + { + "keycode": "S" + }, + { + "keycode": "D" + }, + { + "keycode": "F" + }, + { + "keycode": "G" + }, + { + "keycode": "H" + }, + { + "keycode": "J" + }, + { + "keycode": "K" + }, + { + "keycode": "L" + }, + { + "keycode": "ODIAERSIS", + "display": "Ö" + }, + { + "keycode": "ADIAERSIS", + "display": "Ä" + }, + { + "keycode": "APOSTROPHE", + "display": "*\n'" + }, + { + "keycode": "ENTER", + "display": "Enter", + "width": 1.25 + } + ] + }, + { + "keys": [ + { + "keycode": "SHIFT_L", + "display": "Shift", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "LESS", + "display": "> \n< |" + }, + { + "keycode": "Z" + }, + { + "keycode": "X" + }, + { + "keycode": "C" + }, + { + "keycode": "V" + }, + { + "keycode": "B" + }, + { + "keycode": "N" + }, + { + "keycode": "M" + }, + { + "keycode": "COMMA", + "display": ";\n," + }, + { + "keycode": "PERIOD", + "display": ":\n." + }, + { + "keycode": "MINUS", + "display": "_\n-" + }, + { + "keycode": "SHIFT_R", + "display": "Shift", + "toggle": true, + "width": 2.75, + "gap": 1.5 + }, + { + "keycode": "UP", + "display": "^" + } + ] + }, + { + "keys": [ + { + "keycode": "CONTROL_L", + "display": "Ctrl", + "toggle": true, + "width": 1.5 + }, + { + "keycode": "SUPER", + "display": "Sup", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "ALT", + "display": "Alt", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "SPACE", + "display": "", + "width": 5.75 + }, + { + "keycode": "ALT_GR", + "display": "Alt Gr", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "SUPER", + "display": "Sup", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "MENU", + "display": "Menu", + "width": 1.25 + }, + { + "keycode": "CONTROL_R", + "display": "Ctrl", + "toggle": true, + "width": 1.5, + "gap": 0.5 + }, + { + "keycode": "LEFT", + "display": "\n<" + }, + { + "keycode": "DOWN", + "display": "\nv" + }, + { + "keycode": "RIGHT", + "display": "\n>" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/overlay_resources/keyboard/layouts/layout_us.json b/src/overlay_resources/keyboard/layouts/layout_us.json new file mode 100644 index 0000000..afd220b --- /dev/null +++ b/src/overlay_resources/keyboard/layouts/layout_us.json @@ -0,0 +1,315 @@ +{ + "rows": [ + { + "gap": 0.5, + "keys": [ + { + "keycode": "ESCAPE", + "display": "Esc", + "gap": 1 + }, + { + "keycode": "F1", + "display": "F1" + }, + { + "keycode": "F2", + "display": "F2" + }, + { + "keycode": "F3", + "display": "F3" + }, + { + "keycode": "F4", + "display": "F4", + "gap": 0.5 + }, + { + "keycode": "F5", + "display": "F5" + }, + { + "keycode": "F6", + "display": "F6" + }, + { + "keycode": "F7", + "display": "F7" + }, + { + "keycode": "F8", + "display": "F8", + "gap": 0.5 + }, + { + "keycode": "F9", + "display": "F9" + }, + { + "keycode": "F10", + "display": "F10" + }, + { + "keycode": "F11", + "display": "F11" + }, + { + "keycode": "F12", + "display": "F12" + } + ] + }, + { + "keys": [ + { + "keycode": "ASCIITILDE", + "display": "~ `" + }, + { + "keycode": "1" + }, + { + "keycode": "2" + }, + { + "keycode": "3" + }, + { + "keycode": "4" + }, + { + "keycode": "5" + }, + { + "keycode": "6" + }, + { + "keycode": "7" + }, + { + "keycode": "8" + }, + { + "keycode": "9" + }, + { + "keycode": "0" + }, + { + "keycode": "MINUS", + "display": "-" + }, + { + "keycode": "EQUAL", + "display": "=" + }, + { + "keycode": "BACKSPACE", + "display": "<-", + "width": 2 + } + ] + }, + { + "keys": [ + { + "keycode": "TAB", + "display": "->", + "width": 1.5 + }, + { + "keycode": "Q" + }, + { + "keycode": "W" + }, + { + "keycode": "E" + }, + { + "keycode": "R" + }, + { + "keycode": "T" + }, + { + "keycode": "Y" + }, + { + "keycode": "U" + }, + { + "keycode": "I" + }, + { + "keycode": "O" + }, + { + "keycode": "P" + }, + { + "keycode": "BRACKETLEFT", + "display": "[" + }, + { + "keycode": "BRACKETRIGHT", + "display": "]" + }, + { + "keycode": "BACKSLASH", + "display": "\\", + "width": 1.5 + } + ] + }, + { + "keys": [ + { + "keycode": "CAPSLOCK", + "display": "CAPS", + "width": 1.75 + }, + { + "keycode": "A" + }, + { + "keycode": "S" + }, + { + "keycode": "D" + }, + { + "keycode": "F" + }, + { + "keycode": "G" + }, + { + "keycode": "H" + }, + { + "keycode": "J" + }, + { + "keycode": "K" + }, + { + "keycode": "L" + }, + { + "keycode": "SEMICOLON", + "display": ";" + }, + { + "keycode": "QUOTELEFT", + "display": "`" + }, + { + "keycode": "ENTER", + "display": "Enter", + "width": 2.25 + } + ] + }, + { + "keys": [ + { + "keycode": "SHIFT", + "display": "^", + "toggle": true, + "width": 2.25 + }, + { + "keycode": "Z" + }, + { + "keycode": "X" + }, + { + "keycode": "C" + }, + { + "keycode": "V" + }, + { + "keycode": "B" + }, + { + "keycode": "N" + }, + { + "keycode": "M" + }, + { + "keycode": "COMMA", + "display": "<\n ," + }, + { + "keycode": "PERIOD", + "display": ">\n ." + }, + { + "keycode": "SLASH", + "display": "?\n /" + }, + { + "keycode": "SHIFT", + "display": "Shift", + "toggle": true, + "width": 2.75 + } + ] + }, + { + "keys": [ + { + "keycode": "CONTROL", + "display": "Ctrl", + "toggle": true, + "width": 1.5 + }, + { + "keycode": "SUPER", + "display": "Sup", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "ALT", + "display": "Alt", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "SPACE", + "display": "", + "width": 5.75 + }, + { + "keycode": "ALT", + "display": "Alt", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "SUPER", + "display": "Sup", + "toggle": true, + "width": 1.25 + }, + { + "keycode": "MENU", + "display": "Menu", + "width": 1.5 + }, + { + "keycode": "CONTROL", + "display": "Ctrl", + "toggle": true, + "width": 1.5 + } + ] + } + ] +} \ No newline at end of file diff --git a/ovr-utils/overlay_scripts/main_menu.gd b/src/overlay_resources/main_menu.gd similarity index 95% rename from ovr-utils/overlay_scripts/main_menu.gd rename to src/overlay_resources/main_menu.gd index a8cfc35..f0c93ff 100644 --- a/ovr-utils/overlay_scripts/main_menu.gd +++ b/src/overlay_resources/main_menu.gd @@ -1,8 +1,9 @@ extends Control const OVERLAY_PROPERTIES = { - "no_hide": true, - "no_delete": true, + "allow_hide": false, + "allow_delete": false, + "clickable": true, } diff --git a/ovr-utils/overlay_scripts/time.gd b/src/overlay_resources/time.gd similarity index 85% rename from ovr-utils/overlay_scripts/time.gd rename to src/overlay_resources/time.gd index dda958f..02459ef 100644 --- a/ovr-utils/overlay_scripts/time.gd +++ b/src/overlay_resources/time.gd @@ -1,11 +1,15 @@ extends Label +const OVERLAY_PROPERTIES = { + +} + var _delay = 0 func _process(delta: float) -> void: _delay += delta - if _delay > 0.5: + if _delay > 0.2: update_time() _delay = 0 diff --git a/src/overlay_resources/touch_stick/stick.png b/src/overlay_resources/touch_stick/stick.png new file mode 100644 index 0000000..6171580 Binary files /dev/null and b/src/overlay_resources/touch_stick/stick.png differ diff --git a/src/overlay_resources/touch_stick/stick.png.import b/src/overlay_resources/touch_stick/stick.png.import new file mode 100644 index 0000000..71c669a --- /dev/null +++ b/src/overlay_resources/touch_stick/stick.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stick.png-328b0dfe10d1d71101c4612bcd737746.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://overlay_resources/touch_stick/stick.png" +dest_files=[ "res://.import/stick.png-328b0dfe10d1d71101c4612bcd737746.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ovr-utils/overlay_scripts/ui_demo.gd b/src/overlay_resources/ui_demo.gd similarity index 55% rename from ovr-utils/overlay_scripts/ui_demo.gd rename to src/overlay_resources/ui_demo.gd index 6fdd811..4831f65 100644 --- a/ovr-utils/overlay_scripts/ui_demo.gd +++ b/src/overlay_resources/ui_demo.gd @@ -1,25 +1,30 @@ extends Control -var ihandler +const OVERLAY_PROPERTIES = { + "clickable": true, + "touchable": true, +} + +var grabber +var clicker var oinst func _ready() -> void: oinst = get_viewport().get_parent() - ihandler = get_viewport().get_node("../OverlayInteraction/OverlayGrab") - if not oinst.add_cursor: - oinst.add_cursor() + clicker = get_viewport().get_node("../OverlayInteraction/OverlayTouchCursor") + grabber = get_viewport().get_node("../OverlayInteraction/OverlayGrab") for t in oinst.TARGETS: $OptionButton.add_item(t) $OptionButton.selected = oinst.TARGETS.find(oinst.target) func _on_DragButton_button_down() -> void: - ihandler.begin_move() + grabber.begin_move(clicker.active_side) func _on_DragButton_button_up() -> void: - ihandler.finish_move() + grabber.finish_move() func _on_OptionButton_item_selected(index: int) -> void: diff --git a/ovr-utils/overlay_scripts/unknown_type.gd b/src/overlay_resources/unknown_type.gd similarity index 100% rename from ovr-utils/overlay_scripts/unknown_type.gd rename to src/overlay_resources/unknown_type.gd diff --git a/ovr-utils/overlay_settings_sync.gd b/src/overlay_settings_sync.gd similarity index 94% rename from ovr-utils/overlay_settings_sync.gd rename to src/overlay_settings_sync.gd index 7f7342d..d48b172 100644 --- a/ovr-utils/overlay_settings_sync.gd +++ b/src/overlay_settings_sync.gd @@ -10,7 +10,6 @@ var _needs_sync := true func _ready() -> void: p = get_parent() call_deferred("load_all") - p.connect("path_changed", self, "_prop_changed") p.connect("overlay_visible_changed", self, "_prop_changed") p.connect("width_changed", self, "_prop_changed") p.connect("alpha_changed", self, "_prop_changed") @@ -46,8 +45,8 @@ func load_all() -> void: if Settings.s.overlays.has(p.name): var new = Settings.s.overlays[p.name] - if new.has("path"): - p.path = new.path + #if new.has("path"): + # p.path = new.path if new.has("visible"): p.overlay_visible = new.visible if new.has("width"): diff --git a/ovr-utils/overlays/BatteryLevel.tscn b/src/overlays/BatteryLevel.tscn similarity index 95% rename from ovr-utils/overlays/BatteryLevel.tscn rename to src/overlays/BatteryLevel.tscn index 2d36796..b6b0283 100644 --- a/ovr-utils/overlays/BatteryLevel.tscn +++ b/src/overlays/BatteryLevel.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://overlay_scripts/battery.gd" type="Script" id=1] +[ext_resource path="res://overlay_resources/battery.gd" type="Script" id=1] [ext_resource path="res://fonts/OpenSans-Regular.ttf" type="DynamicFontData" id=2] [sub_resource type="StyleBoxEmpty" id=4] diff --git a/ovr-utils/overlays/Clock.tscn b/src/overlays/Clock.tscn similarity index 93% rename from ovr-utils/overlays/Clock.tscn rename to src/overlays/Clock.tscn index d594de1..d485184 100644 --- a/ovr-utils/overlays/Clock.tscn +++ b/src/overlays/Clock.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://overlay_scripts/time.gd" type="Script" id=1] +[ext_resource path="res://overlay_resources/time.gd" type="Script" id=1] [ext_resource path="res://fonts/OpenSans-Regular.ttf" type="DynamicFontData" id=2] [sub_resource type="StyleBoxFlat" id=1] diff --git a/src/overlays/Cross.tscn b/src/overlays/Cross.tscn new file mode 100644 index 0000000..a16f82f --- /dev/null +++ b/src/overlays/Cross.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/openvr_overlay/interaction/cursor.png" type="Texture" id=1] + +[node name="Cursor" type="TextureRect"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -128.0 +margin_top = -128.0 +margin_right = 128.0 +margin_bottom = 128.0 +mouse_filter = 2 +texture = ExtResource( 1 ) +expand = true +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/ovr-utils/overlays/ImageViewer.tscn b/src/overlays/ImageViewer.tscn similarity index 87% rename from ovr-utils/overlays/ImageViewer.tscn rename to src/overlays/ImageViewer.tscn index 04693e7..aa6ed7b 100644 --- a/ovr-utils/overlays/ImageViewer.tscn +++ b/src/overlays/ImageViewer.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://styles/menu.theme" type="Theme" id=1] [ext_resource path="res://styles/file_menu.theme" type="Theme" id=2] -[ext_resource path="res://overlay_scripts/image_viewer.gd" type="Script" id=3] +[ext_resource path="res://overlay_resources/image_viewer.gd" type="Script" id=3] [node name="ImageViewer" type="Control"] anchor_right = 1.0 @@ -36,8 +36,8 @@ theme = ExtResource( 2 ) window_title = "Open a File or Directory" mode = 3 access = 2 -current_dir = "/home/crispypin/proj/godot/ovr-utils/ovr-utils" -current_path = "/home/crispypin/proj/godot/ovr-utils/ovr-utils/" +current_dir = "/home/crispypin/proj/godot/ovr-utils/src" +current_path = "/home/crispypin/proj/godot/ovr-utils/src/" __meta__ = { "_edit_use_anchors_": false } diff --git a/src/overlays/KeyboardOverlay.tscn b/src/overlays/KeyboardOverlay.tscn new file mode 100644 index 0000000..1f03351 --- /dev/null +++ b/src/overlays/KeyboardOverlay.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://overlay_resources/keyboard/keyboard.theme" type="Theme" id=1] +[ext_resource path="res://overlay_resources/keyboard/keyboard_overlay.gd" type="Script" id=2] +[ext_resource path="res://overlay_resources/keyboard/KeyRow.tscn" type="PackedScene" id=3] +[ext_resource path="res://overlay_resources/keyboard/KeyBtn.tscn" type="PackedScene" id=4] + +[node name="Overlay" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +key_row = ExtResource( 3 ) +key_button = ExtResource( 4 ) +row_container_path = NodePath("CenterContainer/PanelContainer/RowContainer") + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = 8.0 +margin_bottom = 8.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] +margin_left = 1016.0 +margin_top = 1016.0 +margin_right = 1032.0 +margin_bottom = 1032.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RowContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer"] +margin_left = 8.0 +margin_top = 8.0 +margin_right = 8.0 +margin_bottom = 8.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +custom_constants/separation = 0 +alignment = 1 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/src/overlays/TouchStick.tscn b/src/overlays/TouchStick.tscn new file mode 100644 index 0000000..6f04011 --- /dev/null +++ b/src/overlays/TouchStick.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://overlay_resources/touch_stick/stick.png" type="Texture" id=1] + +[node name="stick" type="TextureRect"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -128.0 +margin_top = -128.0 +margin_right = -30.0 +margin_bottom = 128.0 +mouse_filter = 2 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 5 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/ovr-utils/overlays/UI_demo.tscn b/src/overlays/UI_demo.tscn similarity index 68% rename from ovr-utils/overlays/UI_demo.tscn rename to src/overlays/UI_demo.tscn index bb2e3b0..9f88f58 100644 --- a/ovr-utils/overlays/UI_demo.tscn +++ b/src/overlays/UI_demo.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] -[ext_resource path="res://overlay_scripts/ui_demo.gd" type="Script" id=1] +[ext_resource path="res://overlay_resources/ui_demo.gd" type="Script" id=1] [ext_resource path="res://fonts/OpenSans-Regular.ttf" type="DynamicFontData" id=2] [ext_resource path="res://fonts/OpenSans-Bold.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://styles/menu.theme" type="Theme" id=4] [sub_resource type="DynamicFont" id=1] size = 100 @@ -11,6 +12,10 @@ font_data = ExtResource( 2 ) [sub_resource type="Theme" id=2] default_font = SubResource( 1 ) +[sub_resource type="DynamicFont" id=5] +size = 64 +font_data = ExtResource( 3 ) + [sub_resource type="StyleBoxFlat" id=3] bg_color = Color( 0.419608, 0.419608, 0.419608, 1 ) border_width_left = 16 @@ -22,13 +27,10 @@ corner_detail = 1 [sub_resource type="StyleBoxFlat" id=4] -[sub_resource type="DynamicFont" id=5] -size = 64 -font_data = ExtResource( 3 ) - [node name="Control" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +theme = ExtResource( 4 ) script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false @@ -55,15 +57,46 @@ __meta__ = { margin_left = 335.0 margin_right = 650.0 margin_bottom = 143.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = SubResource( 5 ) custom_styles/pressed = SubResource( 3 ) custom_styles/normal = SubResource( 4 ) -custom_fonts/font = SubResource( 5 ) -custom_colors/font_color = Color( 0, 0, 0, 1 ) text = "Drag" __meta__ = { "_edit_use_anchors_": false } +[node name="Button" type="Button" parent="."] +margin_left = 80.8171 +margin_top = 242.452 +margin_right = 481.817 +margin_bottom = 433.452 +text = "aaaaa" + +[node name="Button2" type="Button" parent="."] +margin_left = 80.8171 +margin_top = 433.452 +margin_right = 481.817 +margin_bottom = 624.452 +text = "EEEEE" + +[node name="Button3" type="Button" parent="."] +margin_left = 650.0 +margin_top = 242.452 +margin_right = 1051.0 +margin_bottom = 433.452 +text = "aaaaa" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button4" type="Button" parent="."] +margin_left = 650.0 +margin_top = 433.452 +margin_right = 1051.0 +margin_bottom = 624.452 +text = "EEEEE" + [connection signal="item_selected" from="OptionButton" to="." method="_on_OptionButton_item_selected"] [connection signal="button_down" from="DragButton" to="." method="_on_DragButton_button_down"] [connection signal="button_up" from="DragButton" to="." method="_on_DragButton_button_up"] diff --git a/ovr-utils/project.godot b/src/project.godot similarity index 62% rename from ovr-utils/project.godot rename to src/project.godot index cb86b04..d732527 100644 --- a/ovr-utils/project.godot +++ b/src/project.godot @@ -20,10 +20,13 @@ config/icon="res://textures/icon.png" Settings="*res://addons/settings-manager/Settings.tscn" OverlayInit="*res://addons/openvr_overlay/overlay_init.gd" +OverlayInteractionRoot="*res://addons/openvr_overlay/OverlayInteractionRoot.tscn" OverlayManager="*res://OverlayManager.tscn" +GDVK="*res://addons/gdvk/GDVK.tscn" [debug] +gdscript/warnings/unused_signal=false gdscript/warnings/return_value_discarded=false [display] @@ -33,15 +36,22 @@ window/size/height=2048 [editor_plugins] -enabled=PoolStringArray( "res://addons/godot-openvr/plugin.cfg", "res://addons/openvr_overlay/plugin.cfg", "res://addons/ovr_utils/plugin.cfg", "res://addons/settings-manager/plugin.cfg" ) +enabled=PoolStringArray( "res://addons/gdvk/plugin.cfg", "res://addons/godot-openvr/plugin.cfg", "res://addons/openvr_overlay/plugin.cfg", "res://addons/ovr_utils/plugin.cfg", "res://addons/settings-manager/plugin.cfg" ) [gdnative] singletons=[ "res://addons/godot-openvr/godot_openvr.gdnlib" ] +[layer_names] + +3d_physics/layer_2="right_hand" +3d_physics/layer_3="left_hand" +3d_physics/layer_4="right_touch" +3d_physics/layer_5="left_touch" + [physics] -common/enable_pause_aware_picking=true +3d/active_soft_world=false [rendering] diff --git a/ovr-utils/settings_definition.gd b/src/settings_definition.gd similarity index 100% rename from ovr-utils/settings_definition.gd rename to src/settings_definition.gd diff --git a/ovr-utils/settings_validator.gd b/src/settings_validator.gd similarity index 100% rename from ovr-utils/settings_validator.gd rename to src/settings_validator.gd diff --git a/ovr-utils/special_overlays/MainOverlay.tscn b/src/special_overlays/MainOverlay.tscn similarity index 98% rename from ovr-utils/special_overlays/MainOverlay.tscn rename to src/special_overlays/MainOverlay.tscn index b8a4f62..c061397 100644 --- a/ovr-utils/special_overlays/MainOverlay.tscn +++ b/src/special_overlays/MainOverlay.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=9 format=2] -[ext_resource path="res://overlay_scripts/main_menu.gd" type="Script" id=1] +[ext_resource path="res://overlay_resources/main_menu.gd" type="Script" id=1] [ext_resource path="res://icons/move.svg" type="Texture" id=2] [ext_resource path="res://icons/list.svg" type="Texture" id=3] [ext_resource path="res://icons/close.svg" type="Texture" id=4] diff --git a/ovr-utils/special_overlays/UnknownType.tscn b/src/special_overlays/UnknownType.tscn similarity index 88% rename from ovr-utils/special_overlays/UnknownType.tscn rename to src/special_overlays/UnknownType.tscn index 861a6c2..c357bfd 100644 --- a/ovr-utils/special_overlays/UnknownType.tscn +++ b/src/special_overlays/UnknownType.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=2] [ext_resource path="res://styles/menu.theme" type="Theme" id=1] -[ext_resource path="res://overlay_scripts/unknown_type.gd" type="Script" id=2] +[ext_resource path="res://overlay_resources/unknown_type.gd" type="Script" id=2] [node name="UnknownType" type="Control"] anchor_right = 1.0 diff --git a/ovr-utils/styles/background.stylebox b/src/styles/background.stylebox similarity index 100% rename from ovr-utils/styles/background.stylebox rename to src/styles/background.stylebox diff --git a/ovr-utils/styles/buttons/normal.stylebox b/src/styles/buttons/normal.stylebox similarity index 100% rename from ovr-utils/styles/buttons/normal.stylebox rename to src/styles/buttons/normal.stylebox diff --git a/ovr-utils/styles/buttons/pressed.stylebox b/src/styles/buttons/pressed.stylebox similarity index 100% rename from ovr-utils/styles/buttons/pressed.stylebox rename to src/styles/buttons/pressed.stylebox diff --git a/ovr-utils/styles/file_menu.theme b/src/styles/file_menu.theme similarity index 100% rename from ovr-utils/styles/file_menu.theme rename to src/styles/file_menu.theme diff --git a/ovr-utils/styles/menu.theme b/src/styles/menu.theme similarity index 100% rename from ovr-utils/styles/menu.theme rename to src/styles/menu.theme diff --git a/ovr-utils/styles/sliders/active.stylebox b/src/styles/sliders/active.stylebox similarity index 100% rename from ovr-utils/styles/sliders/active.stylebox rename to src/styles/sliders/active.stylebox diff --git a/ovr-utils/styles/sliders/normal.stylebox b/src/styles/sliders/normal.stylebox similarity index 100% rename from ovr-utils/styles/sliders/normal.stylebox rename to src/styles/sliders/normal.stylebox diff --git a/ovr-utils/textures/icon.png b/src/textures/icon.png similarity index 100% rename from ovr-utils/textures/icon.png rename to src/textures/icon.png diff --git a/ovr-utils/textures/icon.png.import b/src/textures/icon.png.import similarity index 100% rename from ovr-utils/textures/icon.png.import rename to src/textures/icon.png.import diff --git a/ovr-utils/ui/AddMenu.tscn b/src/ui/AddMenu.tscn similarity index 100% rename from ovr-utils/ui/AddMenu.tscn rename to src/ui/AddMenu.tscn diff --git a/ovr-utils/ui/AddOverlayButton.tscn b/src/ui/AddOverlayButton.tscn similarity index 100% rename from ovr-utils/ui/AddOverlayButton.tscn rename to src/ui/AddOverlayButton.tscn diff --git a/ovr-utils/ui/ListOverlayItem.tscn b/src/ui/ListOverlayItem.tscn similarity index 100% rename from ovr-utils/ui/ListOverlayItem.tscn rename to src/ui/ListOverlayItem.tscn diff --git a/ovr-utils/ui/add_menu.gd b/src/ui/add_menu.gd similarity index 100% rename from ovr-utils/ui/add_menu.gd rename to src/ui/add_menu.gd diff --git a/ovr-utils/ui/overlay_list_item.gd b/src/ui/overlay_list_item.gd similarity index 89% rename from ovr-utils/ui/overlay_list_item.gd rename to src/ui/overlay_list_item.gd index 19e28de..7403af7 100644 --- a/ovr-utils/ui/overlay_list_item.gd +++ b/src/ui/overlay_list_item.gd @@ -14,7 +14,6 @@ func _ready() -> void: $BasicOptions/Label.text = overlay_name name = overlay_name overlay.connect("overlay_visible_changed", self, "_overlay_visible_changed") - overlay.connect("path_changed", self, "_update_warning") func _apply_loaded(): @@ -31,10 +30,10 @@ func _update_warning(): func _on_Visibility_toggled(state: bool) -> void: - if overlay.OVERLAY_PROPERTIES.has("no_hide") and overlay.OVERLAY_PROPERTIES.no_hide: - overlay.overlay_visible = true - else: + if overlay.get_property("allow_hide"): overlay.overlay_visible = state + else: + overlay.overlay_visible = true func _on_Grab_toggled(state: bool) -> void: @@ -52,9 +51,8 @@ func _overlay_visible_changed(state: bool): func _on_Remove_pressed() -> void: - if overlay.OVERLAY_PROPERTIES.has("no_delete") and overlay.OVERLAY_PROPERTIES.no_delete: - return - OverlayManager.remove_overlay(overlay_name) + if overlay.get_property("allow_delete"): + OverlayManager.remove_overlay(overlay_name) func _on_Reset_pressed() -> void: