diff --git a/.gitattributes b/.gitattributes
index b24d0ca9d17e7a3449182c2f53c06aca3712bdde..e6acb34456b1cd9d7c856cee0cc331040f58a6b1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,37 +1,27 @@
*.blend filter=lfs diff=lfs merge=lfs -text
-*.gitignore filter=lfs diff=lfs merge=lfs -text
-*.md filter=lfs diff=lfs merge=lfs -text
/godot-xr-tools/LICENSE filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
-*.gd filter=lfs diff=lfs merge=lfs -text
-*.tscn filter=lfs diff=lfs merge=lfs -text
/godot-xr-tools/editor/icons/LICENSE filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
-*.gdshader filter=lfs diff=lfs merge=lfs -text
-*.tres filter=lfs diff=lfs merge=lfs -text
-*.res filter=lfs diff=lfs merge=lfs -text
*.gltf filter=lfs diff=lfs merge=lfs -text
-*.cfg filter=lfs diff=lfs merge=lfs -text
*.aar filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.template_debug filter=lfs diff=lfs merge=lfs -text
*.template_release filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
/godotopenxrvendors/khronos/LICENSE filter=lfs diff=lfs merge=lfs -text
-*.gdextension filter=lfs diff=lfs merge=lfs -text
-*.txt filter=lfs diff=lfs merge=lfs -text
/proyecto_1/addons/godot-xr-tools/LICENSE filter=lfs diff=lfs merge=lfs -text
-*.import filter=lfs diff=lfs merge=lfs -text
/proyecto_1/addons/godot-xr-tools/editor/icons/LICENSE filter=lfs diff=lfs merge=lfs -text
/proyecto_1/addons/godotopenxrvendors/khronos/LICENSE filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.blend1 filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
-*.godot filter=lfs diff=lfs merge=lfs -text
/proyecto_3/addons/godot-xr-tools/LICENSE filter=lfs diff=lfs merge=lfs -text
/proyecto_3/addons/godot-xr-tools/editor/icons/LICENSE filter=lfs diff=lfs merge=lfs -text
/proyecto_4/LICENSE filter=lfs diff=lfs merge=lfs -text
/proyecto_4/addons/godot-xr-tools/LICENSE filter=lfs diff=lfs merge=lfs -text
/proyecto_4/addons/godot-xr-tools/editor/icons/LICENSE filter=lfs diff=lfs merge=lfs -text
/proyecto_4/addons/godotopenxrvendors/khronos/LICENSE filter=lfs diff=lfs merge=lfs -text
-*.gdignore filter=lfs diff=lfs merge=lfs -text
+*.wasm filter=lfs diff=lfs merge=lfs -text
+*.pck filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
diff --git a/proyecto_4/content/CfeVr/substations/SESantaFe/se_santa_fe.tscn b/proyecto_4/content/CfeVr/substations/SESantaFe/se_santa_fe.tscn
index e800f04afb135d5e5812e72331302a076da9a30a..85568af2db31be7e74ab31e6580390ec20336af2 100644
--- a/proyecto_4/content/CfeVr/substations/SESantaFe/se_santa_fe.tscn
+++ b/proyecto_4/content/CfeVr/substations/SESantaFe/se_santa_fe.tscn
@@ -1,3 +1,558 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c8da5244e2e69a220497a08e6f524ada3b3b066392387d0c9f098976dbdb4d7a
-size 27602
+[gd_scene load_steps=31 format=3 uid="uid://b3i47x0lchm57"]
+
+[ext_resource type="PackedScene" uid="uid://c1uaqvsc2vtyc" path="res://content/CfeVr/substations/SESantaFe/SESantaFeConEdificiosTransformador.glb" id="1_6c141"]
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_0avcv"]
+size = Vector3(1, 4.43982, 39.0134)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_6eqr0"]
+size = Vector3(16.6553, 2.57797, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_cxwc2"]
+size = Vector3(33.8914, 2.85938, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_okyn5"]
+size = Vector3(3.94, 2.67188, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_wsvur"]
+size = Vector3(0.52832, 2.66492, 37.3274)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_oxj31"]
+size = Vector3(62.4423, 2.89954, 0.729492)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_0bu83"]
+size = Vector3(0.72168, 3.42383, 8.61597)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_gmi02"]
+size = Vector3(49.107, 3.50049, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_k6ylj"]
+size = Vector3(51.1242, 2.52734, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_ooxcm"]
+size = Vector3(0.580566, 3.34521, 2.86279)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_urqj3"]
+size = Vector3(1, 3.12305, 2.91101)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_6u4fa"]
+size = Vector3(0.899414, 2.72998, 3.31641)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_q7oyt"]
+size = Vector3(1, 3.78821, 3.50903)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_8hu8p"]
+size = Vector3(15.0922, 12.7997, 2.34229)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_qummi"]
+size = Vector3(1.65431, 15.3995, 39.6832)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_kh2s3"]
+size = Vector3(11.6394, 21.4134, 0.702148)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_drj5w"]
+size = Vector3(1, 21.2569, 25.5513)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_184y5"]
+size = Vector3(6.23041, 23.9229, 0.49456)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_qaqqi"]
+size = Vector3(5.53163, 21.7853, 0.535767)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_wlvsr"]
+size = Vector3(0.490723, 23.6252, 3.90332)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_73q5w"]
+size = Vector3(146.68, 1, 108.523)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_vqpb5"]
+size = Vector3(27.2863, 3.94043, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_h1vr2"]
+size = Vector3(9.94678, 6.37939, 10.6909)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_si8jl"]
+size = Vector3(1, 6.72363, 7.24762)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_3no1s"]
+size = Vector3(1, 8.47656, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_k7hsy"]
+size = Vector3(0.824463, 5.06964, 0.318909)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_sguue"]
+size = Vector3(2.30826, 5.33496, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_6u1p0"]
+size = Vector3(2.12305, 1.85986, 5.22327)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_3raol"]
+size = Vector3(2.26382, 3.52063, 3.9524)
+
+[node name="SESantaFe" type="Node3D"]
+
+[node name="SESantaFeConEdificiosTransformador" parent="." instance=ExtResource("1_6c141")]
+transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4.24687, 0, 1.57857)
+
+[node name="Edificios" type="Node3D" parent="."]
+transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0)
+
+[node name="Barda" type="Node3D" parent="Edificios"]
+
+[node name="StaticBody3D7" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(0.847845, 0, -0.530245, 0, 1, 0, 0.530245, 0, 0.847845, 42.1847, 0, -52.6561)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D7"]
+transform = Transform3D(0.187005, 0, -0.982358, 0, 1, 0, 0.982358, 0, 0.187005, -4.06523, 1.1001, 0.781754)
+shape = SubResource("BoxShape3D_0avcv")
+
+[node name="StaticBody3D6" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.2858, 0, -61.4633)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.333441, 1.31019, -0.119068)
+shape = SubResource("BoxShape3D_6eqr0")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.5882, 0.605363, -55.8597)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D5"]
+transform = Transform3D(0.901485, 0, 0.43281, 0, 1, 0, -0.43281, 0, 0.901485, 0.388085, 0.929688, 1.1701)
+shape = SubResource("BoxShape3D_cxwc2")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.22455, 0, -16.3567)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D4"]
+transform = Transform3D(0.867123, 0, -0.498094, 0, 1, 0, 0.498094, 0, 0.867123, 0.947436, 1.45465, 0.544229)
+shape = SubResource("BoxShape3D_okyn5")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(0.850582, 0, 0.525843, 0, 1, 0, -0.525843, 0, 0.850582, -18.1366, 0, -36.5377)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D3"]
+transform = Transform3D(0.999532, 0, 0.0305908, 0, 1, 0, -0.0305908, 0, 0.999532, -0.593855, 1.55541, 4.79127)
+shape = SubResource("BoxShape3D_wsvur")
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 85.6273, 0, -34.2959)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D"]
+transform = Transform3D(0.904507, 0, -0.426458, 0, 1, 0, 0.426458, 0, 0.904507, -0.435257, 1.68627, 0.388836)
+shape = SubResource("BoxShape3D_oxj31")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 113.564, 0, -15.5739)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.13916, 1.21191, -0.42688)
+shape = SubResource("BoxShape3D_0bu83")
+
+[node name="StaticBody3D8" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 46.1976, 0, -12.2597)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D8"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.514, 1.92565, 0)
+shape = SubResource("BoxShape3D_gmi02")
+
+[node name="StaticBody3D9" type="StaticBody3D" parent="Edificios/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 91.8482, 0, -11.2054)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Barda/StaticBody3D9"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.61662, 1.20424, 0)
+shape = SubResource("BoxShape3D_k6ylj")
+
+[node name="Puerta1" type="Node3D" parent="Edificios"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -14.6883)
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Edificios/Puerta1"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.31126, 0, 0.00690651)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Puerta1/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.209717, 1.17261, -0.931396)
+shape = SubResource("BoxShape3D_ooxcm")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Edificios/Puerta1"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.10849, 0, -0.111141)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Puerta1/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.06152, 0.059021)
+shape = SubResource("BoxShape3D_urqj3")
+
+[node name="Puerta2" type="Node3D" parent="Edificios"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 60.0039, 0, -12.4722)
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Edificios/Puerta2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.87627, -9.53674e-07, -0.444901)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Puerta2/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.17466, 1.63872, -1.3109)
+shape = SubResource("BoxShape3D_6u4fa")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Edificios/Puerta2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.61135, -0.822972, 0.184917)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Puerta2/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3941, -1.25452)
+shape = SubResource("BoxShape3D_q7oyt")
+
+[node name="EdificioTransformadores" type="Node3D" parent="Edificios"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Edificios/EdificioTransformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.7846, 0, -13.3036)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioTransformadores/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.17344, 5.89984, -0.671143)
+shape = SubResource("BoxShape3D_8hu8p")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Edificios/EdificioTransformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.7846, 0, -26.8103)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioTransformadores/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.6409, 5.89984, -0.671143)
+shape = SubResource("BoxShape3D_8hu8p")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Edificios/EdificioTransformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.7846, 0, -41.0255)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioTransformadores/StaticBody3D3"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.17344, 5.89984, -0.671143)
+shape = SubResource("BoxShape3D_8hu8p")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Edificios/EdificioTransformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.7846, 0, -53.5856)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioTransformadores/StaticBody3D4"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.17344, 5.89984, -0.671143)
+shape = SubResource("BoxShape3D_8hu8p")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Edificios/EdificioTransformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.1551, 0, -34.1302)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioTransformadores/StaticBody3D5"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.43476, 3.3361, 0.815025)
+shape = SubResource("BoxShape3D_qummi")
+
+[node name="EdificioSF6" type="Node3D" parent="Edificios"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Edificios/EdificioSF6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.9977, 0, -46.1046)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioSF6/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.789919, 10.528, 0.148926)
+shape = SubResource("BoxShape3D_kh2s3")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Edificios/EdificioSF6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.9977, 0, -21.589)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioSF6/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.789919, 10.528, 0.148926)
+shape = SubResource("BoxShape3D_kh2s3")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Edificios/EdificioSF6"]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioSF6/StaticBody3D3"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 38.8129, 10.1284, -33.5263)
+shape = SubResource("BoxShape3D_drj5w")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Edificios/EdificioSF6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.0742, 0, -19.5015)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioSF6/StaticBody3D4"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.84661, 11.9104, 2.36296)
+shape = SubResource("BoxShape3D_184y5")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Edificios/EdificioSF6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.0742, 0, -19.5015)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioSF6/StaticBody3D5"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.55377, 10.3926, -1.55794)
+shape = SubResource("BoxShape3D_qaqqi")
+
+[node name="StaticBody3D6" type="StaticBody3D" parent="Edificios/EdificioSF6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33.2691, -0.70113, -21.9376)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/EdificioSF6/StaticBody3D6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.673363, 12.6994, 2.92346)
+shape = SubResource("BoxShape3D_wlvsr")
+
+[node name="Pisos" type="Node3D" parent="Edificios"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Edificios/Pisos"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.20752, 0, 11.8084)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Edificios/Pisos/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.712, -0.500843, -22.9131)
+shape = SubResource("BoxShape3D_73q5w")
+
+[node name="Subestacion" type="Node3D" parent="."]
+transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0)
+
+[node name="Barda" type="Node3D" parent="Subestacion"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 49.9232)
+
+[node name="StaticBody3D6" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.2858, 0, -61.4633)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.333441, 1.31019, -0.119068)
+shape = SubResource("BoxShape3D_6eqr0")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.1698, 0.605363, -52.0716)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D5"]
+transform = Transform3D(0.906027, 0, 0.423219, 0, 1, 0, -0.423219, 0, 0.906027, 3.47822, 0.00830078, -1.56034)
+shape = SubResource("BoxShape3D_vqpb5")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.22455, 0, -15.7112)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D4"]
+transform = Transform3D(0.867123, 0, -0.498094, 0, 1, 0, 0.498094, 0, 0.867123, 0.947436, 1.45465, 0.544229)
+shape = SubResource("BoxShape3D_okyn5")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(0.850582, 0, 0.525843, 0, 1, 0, -0.525843, 0, 0.850582, -18.1366, 0, -36.0304)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D3"]
+transform = Transform3D(0.999532, 0, 0.0305908, 0, 1, 0, -0.0305908, 0, 0.999532, -0.593855, 1.55541, 4.79127)
+shape = SubResource("BoxShape3D_wsvur")
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 85.6273, 0, -34.2959)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D"]
+transform = Transform3D(0.904507, 0, -0.426458, 0, 1, 0, 0.426458, 0, 0.904507, -0.435257, 1.68627, 0.388836)
+shape = SubResource("BoxShape3D_oxj31")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 113.564, 0, -15.5739)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.13916, 1.21191, -0.42688)
+shape = SubResource("BoxShape3D_0bu83")
+
+[node name="StaticBody3D8" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 46.1976, 0, -12.2597)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D8"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.1514, 1.755, -7.62939e-06)
+shape = SubResource("BoxShape3D_gmi02")
+
+[node name="StaticBody3D9" type="StaticBody3D" parent="Subestacion/Barda"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 91.8482, 0, -11.2054)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Barda/StaticBody3D9"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.61662, 1.32002, 0)
+shape = SubResource("BoxShape3D_k6ylj")
+
+[node name="Transformadores" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/Transformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.3939, 0, 2.55303)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Transformadores/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0402832, 2.6897, 0.153473)
+shape = SubResource("BoxShape3D_h1vr2")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/Transformadores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.3939, 0, 15.6159)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Transformadores/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0402832, 2.6897, 0.153473)
+shape = SubResource("BoxShape3D_h1vr2")
+
+[node name="EstructurasBancos" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/EstructurasBancos"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.6426, 0, 0)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasBancos/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.86182, 3.12381)
+shape = SubResource("BoxShape3D_si8jl")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/EstructurasBancos"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.4489, 0, 13.1227)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasBancos/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.86182, 3.12381)
+shape = SubResource("BoxShape3D_si8jl")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Subestacion/EstructurasBancos"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.6426, 0, 26.0245)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasBancos/StaticBody3D3"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.86182, 3.12381)
+shape = SubResource("BoxShape3D_si8jl")
+
+[node name="EstructurasLineas" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/EstructurasLineas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.4979, 0, 4.40952)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasLineas/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.73828, 0.277884)
+shape = SubResource("BoxShape3D_3no1s")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/EstructurasLineas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.4979, 0, 7.75356)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasLineas/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.73828, 0.277884)
+shape = SubResource("BoxShape3D_3no1s")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Subestacion/EstructurasLineas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.5062, 0, 10.9147)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasLineas/StaticBody3D3"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.73828, 0.277884)
+shape = SubResource("BoxShape3D_3no1s")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Subestacion/EstructurasLineas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.4979, 0, 21.0137)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasLineas/StaticBody3D4"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.73828, 0.185303)
+shape = SubResource("BoxShape3D_3no1s")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Subestacion/EstructurasLineas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.4979, 0, 24.4778)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasLineas/StaticBody3D5"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.73828, 0.185303)
+shape = SubResource("BoxShape3D_3no1s")
+
+[node name="StaticBody3D6" type="StaticBody3D" parent="Subestacion/EstructurasLineas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.4979, 0, 27.7001)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/EstructurasLineas/StaticBody3D6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.73828, 0.185303)
+shape = SubResource("BoxShape3D_3no1s")
+
+[node name="TPs" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/TPs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.9382, 0, 11.4897)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/TPs/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.148773, 2.12626, 0.538958)
+shape = SubResource("BoxShape3D_k7hsy")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/TPs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.9382, 0, 7.54235)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/TPs/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.148773, 2.12626, 0.538958)
+shape = SubResource("BoxShape3D_k7hsy")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Subestacion/TPs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.9382, 0, 3.69043)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/TPs/StaticBody3D3"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.148773, 2.12626, 0.119085)
+shape = SubResource("BoxShape3D_k7hsy")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Subestacion/TPs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.9382, 0, 20.2443)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/TPs/StaticBody3D4"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.148773, 2.12626, 0.316942)
+shape = SubResource("BoxShape3D_k7hsy")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Subestacion/TPs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.9382, 0, 24.1965)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/TPs/StaticBody3D5"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.148773, 2.12626, 0.316942)
+shape = SubResource("BoxShape3D_k7hsy")
+
+[node name="StaticBody3D6" type="StaticBody3D" parent="Subestacion/TPs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.9382, 0, 28.1222)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/TPs/StaticBody3D6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.182648, 2.19642, 0.316942)
+shape = SubResource("BoxShape3D_k7hsy")
+
+[node name="Cuchillas" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/Cuchillas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.0364, 0, 3.37886)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Cuchillas/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.207825, 2.16748, 0.460569)
+shape = SubResource("BoxShape3D_sguue")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/Cuchillas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.0364, 0, 7.55551)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Cuchillas/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.207825, 2.16748, 0.460569)
+shape = SubResource("BoxShape3D_sguue")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Subestacion/Cuchillas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.0364, 0, 11.3702)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Cuchillas/StaticBody3D3"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.207825, 2.16748, 0.460569)
+shape = SubResource("BoxShape3D_sguue")
+
+[node name="StaticBody3D4" type="StaticBody3D" parent="Subestacion/Cuchillas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.0364, 0, 20.347)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Cuchillas/StaticBody3D4"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.207825, 2.16748, 0.32332)
+shape = SubResource("BoxShape3D_sguue")
+
+[node name="StaticBody3D5" type="StaticBody3D" parent="Subestacion/Cuchillas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.0364, 0, 24.2995)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Cuchillas/StaticBody3D5"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.207825, 2.16748, 0.450335)
+shape = SubResource("BoxShape3D_sguue")
+
+[node name="StaticBody3D6" type="StaticBody3D" parent="Subestacion/Cuchillas"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.0364, 0, 28.2493)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Cuchillas/StaticBody3D6"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.325211, 2.16748, 0.485714)
+shape = SubResource("BoxShape3D_sguue")
+
+[node name="Vehiculos" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/Vehiculos"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25405, 0, 11.3285)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Vehiculos/StaticBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.03502, -0.40979)
+shape = SubResource("BoxShape3D_6u1p0")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/Vehiculos"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 58.9104, 0, 29.8141)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Vehiculos/StaticBody3D2"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0517578, 1.03502, 0.0245972)
+shape = SubResource("BoxShape3D_6u1p0")
+
+[node name="Capacitores" type="Node3D" parent="Subestacion"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="Subestacion/Capacitores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.4657, 0, 8.98806)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Capacitores/StaticBody3D"]
+transform = Transform3D(0.867132, 0, 0.498079, 0, 1, 0, -0.498079, 0, 0.867132, 0.239033, 1.26031, 0.565553)
+shape = SubResource("BoxShape3D_3raol")
+
+[node name="StaticBody3D2" type="StaticBody3D" parent="Subestacion/Capacitores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.5865, 0, 13.9045)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Capacitores/StaticBody3D2"]
+transform = Transform3D(0.867132, 0, 0.498079, 0, 1, 0, -0.498079, 0, 0.867132, -0.12367, 1.26031, 0.848839)
+shape = SubResource("BoxShape3D_3raol")
+
+[node name="StaticBody3D3" type="StaticBody3D" parent="Subestacion/Capacitores"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.1607, 0, 19.3331)
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Subestacion/Capacitores/StaticBody3D3"]
+transform = Transform3D(0.867132, 0, 0.498079, 0, 1, 0, -0.498079, 0, 0.867132, -0.186709, 1.26031, 0.634134)
+shape = SubResource("BoxShape3D_3raol")
diff --git a/proyecto_4/export_presets.cfg b/proyecto_4/export_presets.cfg
index 749c5adaf354a7c331e970d74952a1488b4a509f..9ca692ce1e5963d648e310eac2d055e53ab840c9 100644
--- a/proyecto_4/export_presets.cfg
+++ b/proyecto_4/export_presets.cfg
@@ -1,3 +1,300 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b51743284e355e7b4b55c0933611aae783837297e2075ab4ae4b7d07ca444f48
-size 9465
+[preset.0]
+
+name="Android"
+platform="Android"
+runnable=true
+dedicated_server=false
+custom_features=""
+export_filter="all_resources"
+include_filter=""
+exclude_filter=""
+export_path="bin/cpttvr.apk"
+encryption_include_filters=""
+encryption_exclude_filters=""
+encrypt_pck=false
+encrypt_directory=false
+
+[preset.0.options]
+
+custom_template/debug=""
+custom_template/release=""
+gradle_build/use_gradle_build=true
+gradle_build/export_format=0
+gradle_build/min_sdk=""
+gradle_build/target_sdk=""
+architectures/armeabi-v7a=false
+architectures/arm64-v8a=true
+architectures/x86=false
+architectures/x86_64=false
+version/code=1
+version/name=""
+package/unique_name="mx.cfe.cptt.$genname"
+package/name=""
+package/signed=true
+package/app_category=6
+package/retain_data_on_uninstall=false
+package/exclude_from_recents=false
+package/show_in_android_tv=false
+package/show_in_app_library=true
+package/show_as_launcher_app=false
+launcher_icons/main_192x192="res://icon.png"
+launcher_icons/adaptive_foreground_432x432=""
+launcher_icons/adaptive_background_432x432=""
+graphics/opengl_debug=false
+xr_features/xr_mode=1
+screen/immersive_mode=true
+screen/support_small=true
+screen/support_normal=true
+screen/support_large=true
+screen/support_xlarge=true
+user_data_backup/allow=false
+command_line/extra_args=""
+apk_expansion/enable=false
+apk_expansion/SALT=""
+apk_expansion/public_key=""
+permissions/custom_permissions=PackedStringArray()
+permissions/access_checkin_properties=false
+permissions/access_coarse_location=false
+permissions/access_fine_location=false
+permissions/access_location_extra_commands=false
+permissions/access_mock_location=false
+permissions/access_network_state=false
+permissions/access_surface_flinger=false
+permissions/access_wifi_state=false
+permissions/account_manager=false
+permissions/add_voicemail=false
+permissions/authenticate_accounts=false
+permissions/battery_stats=false
+permissions/bind_accessibility_service=false
+permissions/bind_appwidget=false
+permissions/bind_device_admin=false
+permissions/bind_input_method=false
+permissions/bind_nfc_service=false
+permissions/bind_notification_listener_service=false
+permissions/bind_print_service=false
+permissions/bind_remoteviews=false
+permissions/bind_text_service=false
+permissions/bind_vpn_service=false
+permissions/bind_wallpaper=false
+permissions/bluetooth=false
+permissions/bluetooth_admin=false
+permissions/bluetooth_privileged=false
+permissions/brick=false
+permissions/broadcast_package_removed=false
+permissions/broadcast_sms=false
+permissions/broadcast_sticky=false
+permissions/broadcast_wap_push=false
+permissions/call_phone=false
+permissions/call_privileged=false
+permissions/camera=false
+permissions/capture_audio_output=false
+permissions/capture_secure_video_output=false
+permissions/capture_video_output=false
+permissions/change_component_enabled_state=false
+permissions/change_configuration=false
+permissions/change_network_state=false
+permissions/change_wifi_multicast_state=false
+permissions/change_wifi_state=false
+permissions/clear_app_cache=false
+permissions/clear_app_user_data=false
+permissions/control_location_updates=false
+permissions/delete_cache_files=false
+permissions/delete_packages=false
+permissions/device_power=false
+permissions/diagnostic=false
+permissions/disable_keyguard=false
+permissions/dump=false
+permissions/expand_status_bar=false
+permissions/factory_test=false
+permissions/flashlight=false
+permissions/force_back=false
+permissions/get_accounts=false
+permissions/get_package_size=false
+permissions/get_tasks=false
+permissions/get_top_activity_info=false
+permissions/global_search=false
+permissions/hardware_test=false
+permissions/inject_events=false
+permissions/install_location_provider=false
+permissions/install_packages=false
+permissions/install_shortcut=false
+permissions/internal_system_window=false
+permissions/internet=false
+permissions/kill_background_processes=false
+permissions/location_hardware=false
+permissions/manage_accounts=false
+permissions/manage_app_tokens=false
+permissions/manage_documents=false
+permissions/manage_external_storage=false
+permissions/master_clear=false
+permissions/media_content_control=false
+permissions/modify_audio_settings=false
+permissions/modify_phone_state=false
+permissions/mount_format_filesystems=false
+permissions/mount_unmount_filesystems=false
+permissions/nfc=false
+permissions/persistent_activity=false
+permissions/process_outgoing_calls=false
+permissions/read_calendar=false
+permissions/read_call_log=false
+permissions/read_contacts=false
+permissions/read_external_storage=false
+permissions/read_frame_buffer=false
+permissions/read_history_bookmarks=false
+permissions/read_input_state=false
+permissions/read_logs=false
+permissions/read_phone_state=false
+permissions/read_profile=false
+permissions/read_sms=false
+permissions/read_social_stream=false
+permissions/read_sync_settings=false
+permissions/read_sync_stats=false
+permissions/read_user_dictionary=false
+permissions/reboot=false
+permissions/receive_boot_completed=false
+permissions/receive_mms=false
+permissions/receive_sms=false
+permissions/receive_wap_push=false
+permissions/record_audio=false
+permissions/reorder_tasks=false
+permissions/restart_packages=false
+permissions/send_respond_via_message=false
+permissions/send_sms=false
+permissions/set_activity_watcher=false
+permissions/set_alarm=false
+permissions/set_always_finish=false
+permissions/set_animation_scale=false
+permissions/set_debug_app=false
+permissions/set_orientation=false
+permissions/set_pointer_speed=false
+permissions/set_preferred_applications=false
+permissions/set_process_limit=false
+permissions/set_time=false
+permissions/set_time_zone=false
+permissions/set_wallpaper=false
+permissions/set_wallpaper_hints=false
+permissions/signal_persistent_processes=false
+permissions/status_bar=false
+permissions/subscribed_feeds_read=false
+permissions/subscribed_feeds_write=false
+permissions/system_alert_window=false
+permissions/transmit_ir=false
+permissions/uninstall_shortcut=false
+permissions/update_device_stats=false
+permissions/use_credentials=false
+permissions/use_sip=false
+permissions/vibrate=false
+permissions/wake_lock=false
+permissions/write_apn_settings=false
+permissions/write_calendar=false
+permissions/write_call_log=false
+permissions/write_contacts=false
+permissions/write_external_storage=false
+permissions/write_gservices=false
+permissions/write_history_bookmarks=false
+permissions/write_profile=false
+permissions/write_secure_settings=false
+permissions/write_settings=false
+permissions/write_sms=false
+permissions/write_social_stream=false
+permissions/write_sync_settings=false
+permissions/write_user_dictionary=false
+xr_features/enable_khronos_plugin=false
+xr_features/enable_lynx_plugin=false
+xr_features/enable_meta_plugin=true
+meta_xr_features/eye_tracking=0
+meta_xr_features/hand_tracking=1
+meta_xr_features/hand_tracking_frequency=0
+meta_xr_features/passthrough=1
+meta_xr_features/use_anchor_api=false
+meta_xr_features/use_scene_api=false
+meta_xr_features/quest_1_support=false
+meta_xr_features/quest_2_support=true
+meta_xr_features/quest_3_support=true
+meta_xr_features/quest_pro_support=true
+xr_features/enable_pico_plugin=false
+
+[preset.1]
+
+name="WebXR"
+platform="Web"
+runnable=true
+dedicated_server=false
+custom_features=""
+export_filter="all_resources"
+include_filter="config.cfg"
+exclude_filter=""
+export_path=""
+encryption_include_filters=""
+encryption_exclude_filters=""
+encrypt_pck=false
+encrypt_directory=false
+
+[preset.1.options]
+
+custom_template/debug=""
+custom_template/release=""
+variant/extensions_support=false
+vram_texture_compression/for_desktop=true
+vram_texture_compression/for_mobile=false
+html/export_icon=true
+html/custom_html_shell=""
+html/head_include="
+
+
+"
+html/canvas_resize_policy=2
+html/focus_canvas_on_start=true
+html/experimental_virtual_keyboard=false
+progressive_web_app/enabled=false
+progressive_web_app/offline_page=""
+progressive_web_app/display=1
+progressive_web_app/orientation=0
+progressive_web_app/icon_144x144=""
+progressive_web_app/icon_180x180=""
+progressive_web_app/icon_512x512=""
+progressive_web_app/background_color=Color(0, 0, 0, 1)
+
+[preset.2]
+
+name="Linux/X11"
+platform="Linux/X11"
+runnable=true
+dedicated_server=false
+custom_features=""
+export_filter="all_resources"
+include_filter=""
+exclude_filter=""
+export_path="bin/Proyecto 4.x86_64"
+encryption_include_filters=""
+encryption_exclude_filters=""
+encrypt_pck=false
+encrypt_directory=false
+
+[preset.2.options]
+
+custom_template/debug=""
+custom_template/release=""
+debug/export_console_wrapper=1
+binary_format/embed_pck=false
+texture_format/bptc=true
+texture_format/s3tc=true
+texture_format/etc=false
+texture_format/etc2=false
+binary_format/architecture="x86_64"
+ssh_remote_deploy/enabled=false
+ssh_remote_deploy/host="user@host_ip"
+ssh_remote_deploy/port="22"
+ssh_remote_deploy/extra_args_ssh=""
+ssh_remote_deploy/extra_args_scp=""
+ssh_remote_deploy/run_script="#!/usr/bin/env bash
+export DISPLAY=:0
+unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
+\"{temp_dir}/{exe_name}\" {cmd_args}"
+ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
+kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
+rm -rf \"{temp_dir}\""
diff --git a/proyecto_4/icon.svg.import b/proyecto_4/icon.svg.import
index ecc3be61fd07969d9e00da54ba19548af6d515c5..1a40662a355389c71ecc575db6e25a2b38ef5bad 100644
--- a/proyecto_4/icon.svg.import
+++ b/proyecto_4/icon.svg.import
@@ -1,3 +1,37 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:181edac42706775a7ce6de97de6ff57e71e69f9b3d6fc177e57cf752ce0d2bc8
-size 843
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://boojtunqrnn5s"
+path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://icon.svg"
+dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/proyecto_4/openxr_action_map.tres b/proyecto_4/openxr_action_map.tres
index 6b215aeff992f7a6fdbc3b6d725e1e4507733bdf..b04950b0a159b8c089a0efee00a86f548a8d9ab2 100644
--- a/proyecto_4/openxr_action_map.tres
+++ b/proyecto_4/openxr_action_map.tres
@@ -1,3 +1,885 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:832823d40b792f682032535ac6b9c87b1428694a5dbfa723c64d6cb4e138a3f9
-size 53550
+[gd_resource type="OpenXRActionMap" load_steps=210 format=3 uid="uid://c7rk6h6d2nwjx"]
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_etmsb"]
+resource_name = "trigger"
+localized_name = "Trigger"
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_wgdfo"]
+resource_name = "trigger_click"
+localized_name = "Trigger click"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_7c65k"]
+resource_name = "trigger_touch"
+localized_name = "Trigger touching"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_ppn6i"]
+resource_name = "grip"
+localized_name = "Grip"
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_p024w"]
+resource_name = "grip_click"
+localized_name = "Grip click"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_ilno1"]
+resource_name = "grip_force"
+localized_name = "Grip force"
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_xrour"]
+resource_name = "primary"
+localized_name = "Primary joystick/thumbstick/trackpad"
+action_type = 2
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_w6gnk"]
+resource_name = "primary_click"
+localized_name = "Primary joystick/thumbstick/trackpad click"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_ofrfy"]
+resource_name = "primary_touch"
+localized_name = "Primary joystick/thumbstick/trackpad touching"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_pcrb6"]
+resource_name = "secondary"
+localized_name = "Secondary joystick/thumbstick/trackpad"
+action_type = 2
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_gke7e"]
+resource_name = "secondary_click"
+localized_name = "Secondary joystick/thumbstick/trackpad click"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_lowtm"]
+resource_name = "secondary_touch"
+localized_name = "Secondary joystick/thumbstick/trackpad touching"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_mm6md"]
+resource_name = "menu_button"
+localized_name = "Menu button"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_aqmhi"]
+resource_name = "select_button"
+localized_name = "Select button"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_761ge"]
+resource_name = "ax_button"
+localized_name = "A/X button"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_47k7c"]
+resource_name = "ax_touch"
+localized_name = "A/X touching"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_x3xqd"]
+resource_name = "by_button"
+localized_name = "B/Y button"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_1qbjr"]
+resource_name = "by_touch"
+localized_name = "B/Y touching"
+action_type = 0
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_r2vtu"]
+resource_name = "default_pose"
+localized_name = "Default pose"
+action_type = 3
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right", "/user/vive_tracker_htcx/role/left_foot", "/user/vive_tracker_htcx/role/right_foot", "/user/vive_tracker_htcx/role/left_shoulder", "/user/vive_tracker_htcx/role/right_shoulder", "/user/vive_tracker_htcx/role/left_elbow", "/user/vive_tracker_htcx/role/right_elbow", "/user/vive_tracker_htcx/role/left_knee", "/user/vive_tracker_htcx/role/right_knee", "/user/vive_tracker_htcx/role/waist", "/user/vive_tracker_htcx/role/chest", "/user/vive_tracker_htcx/role/camera", "/user/vive_tracker_htcx/role/keyboard", "/user/eyes_ext")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_eyyur"]
+resource_name = "aim_pose"
+localized_name = "Aim pose"
+action_type = 3
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_55442"]
+resource_name = "grip_pose"
+localized_name = "Grip pose"
+action_type = 3
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_af6ob"]
+resource_name = "palm_pose"
+localized_name = "Palm pose"
+action_type = 3
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right")
+
+[sub_resource type="OpenXRAction" id="OpenXRAction_tooa8"]
+resource_name = "haptic"
+localized_name = "Haptic"
+action_type = 4
+toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right", "/user/vive_tracker_htcx/role/left_foot", "/user/vive_tracker_htcx/role/right_foot", "/user/vive_tracker_htcx/role/left_shoulder", "/user/vive_tracker_htcx/role/right_shoulder", "/user/vive_tracker_htcx/role/left_elbow", "/user/vive_tracker_htcx/role/right_elbow", "/user/vive_tracker_htcx/role/left_knee", "/user/vive_tracker_htcx/role/right_knee", "/user/vive_tracker_htcx/role/waist", "/user/vive_tracker_htcx/role/chest", "/user/vive_tracker_htcx/role/camera", "/user/vive_tracker_htcx/role/keyboard")
+
+[sub_resource type="OpenXRActionSet" id="OpenXRActionSet_pe0a6"]
+resource_name = "godot"
+localized_name = "Godot action set"
+actions = [SubResource("OpenXRAction_etmsb"), SubResource("OpenXRAction_wgdfo"), SubResource("OpenXRAction_7c65k"), SubResource("OpenXRAction_ppn6i"), SubResource("OpenXRAction_p024w"), SubResource("OpenXRAction_ilno1"), SubResource("OpenXRAction_xrour"), SubResource("OpenXRAction_w6gnk"), SubResource("OpenXRAction_ofrfy"), SubResource("OpenXRAction_pcrb6"), SubResource("OpenXRAction_gke7e"), SubResource("OpenXRAction_lowtm"), SubResource("OpenXRAction_mm6md"), SubResource("OpenXRAction_aqmhi"), SubResource("OpenXRAction_761ge"), SubResource("OpenXRAction_47k7c"), SubResource("OpenXRAction_x3xqd"), SubResource("OpenXRAction_1qbjr"), SubResource("OpenXRAction_r2vtu"), SubResource("OpenXRAction_eyyur"), SubResource("OpenXRAction_55442"), SubResource("OpenXRAction_af6ob"), SubResource("OpenXRAction_tooa8")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mlmge"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_aphhy"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fw3bc"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_26mnm"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vvjfb"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wxu1q"]
+action = SubResource("OpenXRAction_aqmhi")
+paths = PackedStringArray("/user/hand/left/input/select/click", "/user/hand/right/input/select/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_b63ph"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_blq5n"]
+interaction_profile_path = "/interaction_profiles/khr/simple_controller"
+bindings = [SubResource("OpenXRIPBinding_mlmge"), SubResource("OpenXRIPBinding_aphhy"), SubResource("OpenXRIPBinding_fw3bc"), SubResource("OpenXRIPBinding_26mnm"), SubResource("OpenXRIPBinding_vvjfb"), SubResource("OpenXRIPBinding_wxu1q"), SubResource("OpenXRIPBinding_b63ph")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1hp7b"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bnbon"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_82uv8"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x3cga"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fmnkr"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cnycs"]
+action = SubResource("OpenXRAction_aqmhi")
+paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_p14bd"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tgj8p"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_4mop1"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vj8l2"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sgiop"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xjhb2"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fo3ok"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fgst0"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_unwul"]
+interaction_profile_path = "/interaction_profiles/htc/vive_controller"
+bindings = [SubResource("OpenXRIPBinding_1hp7b"), SubResource("OpenXRIPBinding_bnbon"), SubResource("OpenXRIPBinding_82uv8"), SubResource("OpenXRIPBinding_x3cga"), SubResource("OpenXRIPBinding_fmnkr"), SubResource("OpenXRIPBinding_cnycs"), SubResource("OpenXRIPBinding_p14bd"), SubResource("OpenXRIPBinding_tgj8p"), SubResource("OpenXRIPBinding_4mop1"), SubResource("OpenXRIPBinding_vj8l2"), SubResource("OpenXRIPBinding_sgiop"), SubResource("OpenXRIPBinding_xjhb2"), SubResource("OpenXRIPBinding_fo3ok"), SubResource("OpenXRIPBinding_fgst0")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bf5wr"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1b208"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_r7tjc"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hpf0c"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6ft8r"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0wleq"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8eqbl"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dcucp"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_4avlf"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mc1jq"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xtxbu"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_erprs"]
+action = SubResource("OpenXRAction_pcrb6")
+paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_oo5be"]
+action = SubResource("OpenXRAction_gke7e")
+paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2ufrn"]
+action = SubResource("OpenXRAction_lowtm")
+paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o55qh"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_22xho"]
+interaction_profile_path = "/interaction_profiles/microsoft/motion_controller"
+bindings = [SubResource("OpenXRIPBinding_bf5wr"), SubResource("OpenXRIPBinding_1b208"), SubResource("OpenXRIPBinding_r7tjc"), SubResource("OpenXRIPBinding_hpf0c"), SubResource("OpenXRIPBinding_6ft8r"), SubResource("OpenXRIPBinding_0wleq"), SubResource("OpenXRIPBinding_8eqbl"), SubResource("OpenXRIPBinding_dcucp"), SubResource("OpenXRIPBinding_4avlf"), SubResource("OpenXRIPBinding_mc1jq"), SubResource("OpenXRIPBinding_xtxbu"), SubResource("OpenXRIPBinding_erprs"), SubResource("OpenXRIPBinding_oo5be"), SubResource("OpenXRIPBinding_2ufrn"), SubResource("OpenXRIPBinding_o55qh")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6dq4h"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_67fks"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wb2lt"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_531h7"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_uqs4g"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/system/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vkflk"]
+action = SubResource("OpenXRAction_761ge")
+paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kcyrt"]
+action = SubResource("OpenXRAction_47k7c")
+paths = PackedStringArray("/user/hand/left/input/x/touch", "/user/hand/right/input/a/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mvf1p"]
+action = SubResource("OpenXRAction_x3xqd")
+paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_i7g2a"]
+action = SubResource("OpenXRAction_1qbjr")
+paths = PackedStringArray("/user/hand/left/input/y/touch", "/user/hand/right/input/b/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rof4u"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_htssc"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qj05v"]
+action = SubResource("OpenXRAction_7c65k")
+paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_itx6b"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jurg0"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_alosi"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7ldol"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7bfjx"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_5i5px"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_p6dd3"]
+interaction_profile_path = "/interaction_profiles/oculus/touch_controller"
+bindings = [SubResource("OpenXRIPBinding_6dq4h"), SubResource("OpenXRIPBinding_67fks"), SubResource("OpenXRIPBinding_wb2lt"), SubResource("OpenXRIPBinding_531h7"), SubResource("OpenXRIPBinding_uqs4g"), SubResource("OpenXRIPBinding_vkflk"), SubResource("OpenXRIPBinding_kcyrt"), SubResource("OpenXRIPBinding_mvf1p"), SubResource("OpenXRIPBinding_i7g2a"), SubResource("OpenXRIPBinding_rof4u"), SubResource("OpenXRIPBinding_htssc"), SubResource("OpenXRIPBinding_qj05v"), SubResource("OpenXRIPBinding_itx6b"), SubResource("OpenXRIPBinding_jurg0"), SubResource("OpenXRIPBinding_alosi"), SubResource("OpenXRIPBinding_7ldol"), SubResource("OpenXRIPBinding_7bfjx"), SubResource("OpenXRIPBinding_5i5px")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6j3qy"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pdfa5"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7osl1"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dlmt2"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tertu"]
+action = SubResource("OpenXRAction_aqmhi")
+paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_s0nso"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_s8d1q"]
+action = SubResource("OpenXRAction_761ge")
+paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bashd"]
+action = SubResource("OpenXRAction_47k7c")
+paths = PackedStringArray("/user/hand/left/input/x/touch", "/user/hand/right/input/a/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qhkoh"]
+action = SubResource("OpenXRAction_x3xqd")
+paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pmiut"]
+action = SubResource("OpenXRAction_1qbjr")
+paths = PackedStringArray("/user/hand/left/input/y/touch", "/user/hand/right/input/b/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pcp8s"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_thfa3"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tb8r8"]
+action = SubResource("OpenXRAction_7c65k")
+paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sv6ho"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jkajl"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_m60rc"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_twx7m"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_5rhca"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_a8m7u"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_a2pxc"]
+interaction_profile_path = "/interaction_profiles/bytedance/pico4_controller"
+bindings = [SubResource("OpenXRIPBinding_6j3qy"), SubResource("OpenXRIPBinding_pdfa5"), SubResource("OpenXRIPBinding_7osl1"), SubResource("OpenXRIPBinding_dlmt2"), SubResource("OpenXRIPBinding_tertu"), SubResource("OpenXRIPBinding_s0nso"), SubResource("OpenXRIPBinding_s8d1q"), SubResource("OpenXRIPBinding_bashd"), SubResource("OpenXRIPBinding_qhkoh"), SubResource("OpenXRIPBinding_pmiut"), SubResource("OpenXRIPBinding_pcp8s"), SubResource("OpenXRIPBinding_thfa3"), SubResource("OpenXRIPBinding_tb8r8"), SubResource("OpenXRIPBinding_sv6ho"), SubResource("OpenXRIPBinding_jkajl"), SubResource("OpenXRIPBinding_m60rc"), SubResource("OpenXRIPBinding_twx7m"), SubResource("OpenXRIPBinding_5rhca"), SubResource("OpenXRIPBinding_a8m7u")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x1nl6"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vf0un"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7fqfr"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3184o"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_n3bv7"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o3scc"]
+action = SubResource("OpenXRAction_761ge")
+paths = PackedStringArray("/user/hand/left/input/a/click", "/user/hand/right/input/a/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ghllm"]
+action = SubResource("OpenXRAction_47k7c")
+paths = PackedStringArray("/user/hand/left/input/a/touch", "/user/hand/right/input/a/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2sjwy"]
+action = SubResource("OpenXRAction_x3xqd")
+paths = PackedStringArray("/user/hand/left/input/b/click", "/user/hand/right/input/b/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1k1ss"]
+action = SubResource("OpenXRAction_1qbjr")
+paths = PackedStringArray("/user/hand/left/input/b/touch", "/user/hand/right/input/b/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_oxoqp"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7u8re"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_s0jgb"]
+action = SubResource("OpenXRAction_7c65k")
+paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6nyc7"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sx83u"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kixy4"]
+action = SubResource("OpenXRAction_ilno1")
+paths = PackedStringArray("/user/hand/left/input/squeeze/force", "/user/hand/right/input/squeeze/force")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rpdu5"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_asnyt"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7ni0i"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0vc77"]
+action = SubResource("OpenXRAction_pcrb6")
+paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wq7iv"]
+action = SubResource("OpenXRAction_gke7e")
+paths = PackedStringArray("/user/hand/left/input/trackpad/force", "/user/hand/right/input/trackpad/force")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_t83yx"]
+action = SubResource("OpenXRAction_lowtm")
+paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_m0n43"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_fg4e6"]
+interaction_profile_path = "/interaction_profiles/valve/index_controller"
+bindings = [SubResource("OpenXRIPBinding_x1nl6"), SubResource("OpenXRIPBinding_vf0un"), SubResource("OpenXRIPBinding_7fqfr"), SubResource("OpenXRIPBinding_3184o"), SubResource("OpenXRIPBinding_n3bv7"), SubResource("OpenXRIPBinding_o3scc"), SubResource("OpenXRIPBinding_ghllm"), SubResource("OpenXRIPBinding_2sjwy"), SubResource("OpenXRIPBinding_1k1ss"), SubResource("OpenXRIPBinding_oxoqp"), SubResource("OpenXRIPBinding_7u8re"), SubResource("OpenXRIPBinding_s0jgb"), SubResource("OpenXRIPBinding_6nyc7"), SubResource("OpenXRIPBinding_sx83u"), SubResource("OpenXRIPBinding_kixy4"), SubResource("OpenXRIPBinding_rpdu5"), SubResource("OpenXRIPBinding_asnyt"), SubResource("OpenXRIPBinding_7ni0i"), SubResource("OpenXRIPBinding_0vc77"), SubResource("OpenXRIPBinding_wq7iv"), SubResource("OpenXRIPBinding_t83yx"), SubResource("OpenXRIPBinding_m0n43")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vkiaa"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e20o8"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1btx4"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ppveg"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jn4c5"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cdc6r"]
+action = SubResource("OpenXRAction_761ge")
+paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gxxmc"]
+action = SubResource("OpenXRAction_x3xqd")
+paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dgmns"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tqadk"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2uf4j"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_n2ws4"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2htfv"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_l2027"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1ny61"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_bea2m"]
+interaction_profile_path = "/interaction_profiles/hp/mixed_reality_controller"
+bindings = [SubResource("OpenXRIPBinding_vkiaa"), SubResource("OpenXRIPBinding_e20o8"), SubResource("OpenXRIPBinding_1btx4"), SubResource("OpenXRIPBinding_ppveg"), SubResource("OpenXRIPBinding_jn4c5"), SubResource("OpenXRIPBinding_cdc6r"), SubResource("OpenXRIPBinding_gxxmc"), SubResource("OpenXRIPBinding_dgmns"), SubResource("OpenXRIPBinding_tqadk"), SubResource("OpenXRIPBinding_2uf4j"), SubResource("OpenXRIPBinding_n2ws4"), SubResource("OpenXRIPBinding_2htfv"), SubResource("OpenXRIPBinding_l2027"), SubResource("OpenXRIPBinding_1ny61")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6l8dl"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_y3gs4"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_50v3j"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xxnj7"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2yh4q"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lrt7h"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ec1j8"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gfq4j"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7v1bd"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gicpk"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rjuuj"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pugia"]
+action = SubResource("OpenXRAction_pcrb6")
+paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8ig4t"]
+action = SubResource("OpenXRAction_gke7e")
+paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_n47q7"]
+action = SubResource("OpenXRAction_lowtm")
+paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_q2p2g"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_jlgd7"]
+interaction_profile_path = "/interaction_profiles/samsung/odyssey_controller"
+bindings = [SubResource("OpenXRIPBinding_6l8dl"), SubResource("OpenXRIPBinding_y3gs4"), SubResource("OpenXRIPBinding_50v3j"), SubResource("OpenXRIPBinding_xxnj7"), SubResource("OpenXRIPBinding_2yh4q"), SubResource("OpenXRIPBinding_lrt7h"), SubResource("OpenXRIPBinding_ec1j8"), SubResource("OpenXRIPBinding_gfq4j"), SubResource("OpenXRIPBinding_7v1bd"), SubResource("OpenXRIPBinding_gicpk"), SubResource("OpenXRIPBinding_rjuuj"), SubResource("OpenXRIPBinding_pugia"), SubResource("OpenXRIPBinding_8ig4t"), SubResource("OpenXRIPBinding_n47q7"), SubResource("OpenXRIPBinding_q2p2g")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8unx0"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_w51wj"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_iwu66"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xld4v"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sxt4x"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e5q66"]
+action = SubResource("OpenXRAction_aqmhi")
+paths = PackedStringArray("/user/hand/right/input/system/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_t8cd0"]
+action = SubResource("OpenXRAction_761ge")
+paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lycrd"]
+action = SubResource("OpenXRAction_x3xqd")
+paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_l36hw"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rcbpy"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2yio7"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ouc6u"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dpold"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bosxv"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ooyob"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_74qxf"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_7smie"]
+interaction_profile_path = "/interaction_profiles/htc/vive_cosmos_controller"
+bindings = [SubResource("OpenXRIPBinding_8unx0"), SubResource("OpenXRIPBinding_w51wj"), SubResource("OpenXRIPBinding_iwu66"), SubResource("OpenXRIPBinding_xld4v"), SubResource("OpenXRIPBinding_sxt4x"), SubResource("OpenXRIPBinding_e5q66"), SubResource("OpenXRIPBinding_t8cd0"), SubResource("OpenXRIPBinding_lycrd"), SubResource("OpenXRIPBinding_l36hw"), SubResource("OpenXRIPBinding_rcbpy"), SubResource("OpenXRIPBinding_2yio7"), SubResource("OpenXRIPBinding_ouc6u"), SubResource("OpenXRIPBinding_dpold"), SubResource("OpenXRIPBinding_bosxv"), SubResource("OpenXRIPBinding_ooyob"), SubResource("OpenXRIPBinding_74qxf")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o5kic"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f82de"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_evicj"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3pkmx"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_beww3"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/menu/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_s78ts"]
+action = SubResource("OpenXRAction_aqmhi")
+paths = PackedStringArray("/user/hand/right/input/system/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ek5d6"]
+action = SubResource("OpenXRAction_761ge")
+paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_biihp"]
+action = SubResource("OpenXRAction_x3xqd")
+paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lknev"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_n7s38"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_v6xfc"]
+action = SubResource("OpenXRAction_7c65k")
+paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_k4blk"]
+action = SubResource("OpenXRAction_ppn6i")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f006b"]
+action = SubResource("OpenXRAction_p024w")
+paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6mh36"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nw0ho"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_yb4vw"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_trg8w"]
+action = SubResource("OpenXRAction_lowtm")
+paths = PackedStringArray("/user/hand/left/input/thumbrest/touch", "/user/hand/right/input/thumbrest/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rw7be"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_fr7u4"]
+interaction_profile_path = "/interaction_profiles/htc/vive_focus3_controller"
+bindings = [SubResource("OpenXRIPBinding_o5kic"), SubResource("OpenXRIPBinding_f82de"), SubResource("OpenXRIPBinding_evicj"), SubResource("OpenXRIPBinding_3pkmx"), SubResource("OpenXRIPBinding_beww3"), SubResource("OpenXRIPBinding_s78ts"), SubResource("OpenXRIPBinding_ek5d6"), SubResource("OpenXRIPBinding_biihp"), SubResource("OpenXRIPBinding_lknev"), SubResource("OpenXRIPBinding_n7s38"), SubResource("OpenXRIPBinding_v6xfc"), SubResource("OpenXRIPBinding_k4blk"), SubResource("OpenXRIPBinding_f006b"), SubResource("OpenXRIPBinding_6mh36"), SubResource("OpenXRIPBinding_nw0ho"), SubResource("OpenXRIPBinding_yb4vw"), SubResource("OpenXRIPBinding_trg8w"), SubResource("OpenXRIPBinding_rw7be")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8l3j7"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_36tm4"]
+action = SubResource("OpenXRAction_eyyur")
+paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_krk61"]
+action = SubResource("OpenXRAction_55442")
+paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nltn8"]
+action = SubResource("OpenXRAction_af6ob")
+paths = PackedStringArray("/user/hand/left/input/palm_ext/pose", "/user/hand/right/input/palm_ext/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_u32ft"]
+action = SubResource("OpenXRAction_mm6md")
+paths = PackedStringArray("/user/hand/left/input/home/click", "/user/hand/right/input/home/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_a1c6x"]
+action = SubResource("OpenXRAction_etmsb")
+paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kpm5p"]
+action = SubResource("OpenXRAction_wgdfo")
+paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hoeel"]
+action = SubResource("OpenXRAction_xrour")
+paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ksh0w"]
+action = SubResource("OpenXRAction_w6gnk")
+paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1pinh"]
+action = SubResource("OpenXRAction_ofrfy")
+paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8a2qu"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_o4bn7"]
+interaction_profile_path = "/interaction_profiles/huawei/controller"
+bindings = [SubResource("OpenXRIPBinding_8l3j7"), SubResource("OpenXRIPBinding_36tm4"), SubResource("OpenXRIPBinding_krk61"), SubResource("OpenXRIPBinding_nltn8"), SubResource("OpenXRIPBinding_u32ft"), SubResource("OpenXRIPBinding_a1c6x"), SubResource("OpenXRIPBinding_kpm5p"), SubResource("OpenXRIPBinding_hoeel"), SubResource("OpenXRIPBinding_ksh0w"), SubResource("OpenXRIPBinding_1pinh"), SubResource("OpenXRIPBinding_8a2qu")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_yd8d1"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/vive_tracker_htcx/role/left_foot/input/grip/pose", "/user/vive_tracker_htcx/role/right_foot/input/grip/pose", "/user/vive_tracker_htcx/role/left_shoulder/input/grip/pose", "/user/vive_tracker_htcx/role/right_shoulder/input/grip/pose", "/user/vive_tracker_htcx/role/left_elbow/input/grip/pose", "/user/vive_tracker_htcx/role/right_elbow/input/grip/pose", "/user/vive_tracker_htcx/role/left_knee/input/grip/pose", "/user/vive_tracker_htcx/role/right_knee/input/grip/pose", "/user/vive_tracker_htcx/role/waist/input/grip/pose", "/user/vive_tracker_htcx/role/chest/input/grip/pose", "/user/vive_tracker_htcx/role/camera/input/grip/pose", "/user/vive_tracker_htcx/role/keyboard/input/grip/pose")
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_a7ekf"]
+action = SubResource("OpenXRAction_tooa8")
+paths = PackedStringArray("/user/vive_tracker_htcx/role/left_foot/output/haptic", "/user/vive_tracker_htcx/role/right_foot/output/haptic", "/user/vive_tracker_htcx/role/left_shoulder/output/haptic", "/user/vive_tracker_htcx/role/right_shoulder/output/haptic", "/user/vive_tracker_htcx/role/left_elbow/output/haptic", "/user/vive_tracker_htcx/role/right_elbow/output/haptic", "/user/vive_tracker_htcx/role/left_knee/output/haptic", "/user/vive_tracker_htcx/role/right_knee/output/haptic", "/user/vive_tracker_htcx/role/waist/output/haptic", "/user/vive_tracker_htcx/role/chest/output/haptic", "/user/vive_tracker_htcx/role/camera/output/haptic", "/user/vive_tracker_htcx/role/keyboard/output/haptic")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_a2fs2"]
+interaction_profile_path = "/interaction_profiles/htc/vive_tracker_htcx"
+bindings = [SubResource("OpenXRIPBinding_yd8d1"), SubResource("OpenXRIPBinding_a7ekf")]
+
+[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_eg6mx"]
+action = SubResource("OpenXRAction_r2vtu")
+paths = PackedStringArray("/user/eyes_ext/input/gaze_ext/pose")
+
+[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_rtbyx"]
+interaction_profile_path = "/interaction_profiles/ext/eye_gaze_interaction"
+bindings = [SubResource("OpenXRIPBinding_eg6mx")]
+
+[resource]
+action_sets = [SubResource("OpenXRActionSet_pe0a6")]
+interaction_profiles = [SubResource("OpenXRInteractionProfile_blq5n"), SubResource("OpenXRInteractionProfile_unwul"), SubResource("OpenXRInteractionProfile_22xho"), SubResource("OpenXRInteractionProfile_p6dd3"), SubResource("OpenXRInteractionProfile_a2pxc"), SubResource("OpenXRInteractionProfile_fg4e6"), SubResource("OpenXRInteractionProfile_bea2m"), SubResource("OpenXRInteractionProfile_jlgd7"), SubResource("OpenXRInteractionProfile_7smie"), SubResource("OpenXRInteractionProfile_fr7u4"), SubResource("OpenXRInteractionProfile_o4bn7"), SubResource("OpenXRInteractionProfile_a2fs2"), SubResource("OpenXRInteractionProfile_rtbyx")]
diff --git a/proyecto_4/project.godot b/proyecto_4/project.godot
index 38ecd6e6f0b82f098783939f1eed13be8fe5a8f2..6fc5b517bce371bc50dce5087954b6b0e7c42eb0 100644
--- a/proyecto_4/project.godot
+++ b/proyecto_4/project.godot
@@ -1,3 +1,73 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5d11b9db981a718b64d697ae3430adbfe29ad80152ba4adbc88d7f8b2d4cd24c
-size 1612
+; Engine configuration file.
+; It's best edited using the editor UI and not directly,
+; since the parameters that go here are not all obvious.
+;
+; Format:
+; [section] ; section goes between []
+; param=value ; assign values to parameters
+
+config_version=5
+
+[application]
+
+config/name="cpttvr"
+config/version="0.9"
+run/main_scene="res://scenes/Main/Staging.tscn"
+config/features=PackedStringArray("4.2", "Forward Plus")
+config/icon="res://icon.svg"
+
+[autoload]
+
+XRToolsUserSettings="*res://addons/godot-xr-tools/user_settings/user_settings.gd"
+Config="*res://config.gd"
+
+[display]
+
+window/size/viewport_width=1980
+window/size/viewport_height=1024
+
+[editor_plugins]
+
+enabled=PackedStringArray("res://addons/godot-xr-tools/plugin.cfg")
+
+[gdnative]
+
+singletons=["res://addons/godot-openxr/config/godot_openxr.gdnlib"]
+
+[godot_xr_tools]
+
+player/standard_height=1.7
+
+[gui]
+
+common/drop_mouse_on_gui_input_disabled=true
+
+[layer_names]
+
+3d_physics/layer_1="Static World"
+3d_physics/layer_2="Dynamic World"
+3d_physics/layer_3="Pickable Objects"
+3d_physics/layer_4="Wall Walking"
+3d_physics/layer_5="Grappling Target"
+3d_physics/layer_17="Held Objects"
+3d_physics/layer_18="Player Hands"
+3d_physics/layer_19="Grab Handles"
+3d_physics/layer_20="Player Body"
+3d_physics/layer_21="Pointable Objects"
+3d_physics/layer_22="Hand Pose Areas"
+3d_physics/layer_23="UI Objects"
+
+[physics]
+
+3d/solver/contact_max_allowed_penetration=0.001
+
+[rendering]
+
+renderer/rendering_method.web="forward_plus"
+textures/vram_compression/import_etc2_astc=true
+limits/time/time_rollover_secs=30.0
+
+[xr]
+
+openxr/enabled=true
+shaders/enabled=true
diff --git a/proyecto_4/scenes/Base/scene_base.gd b/proyecto_4/scenes/Base/scene_base.gd
index 2d9fcb09be3bb08145f6c8c1bfa1b48606bffbd9..80663cd7e609b61cd56c0a7fa4da4e43827b35a0 100644
--- a/proyecto_4/scenes/Base/scene_base.gd
+++ b/proyecto_4/scenes/Base/scene_base.gd
@@ -1,3 +1,27 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d69429e417a024932d4f5ed9f84283a87a5e55e8b2d5238138ce009a09e76983
-size 937
+class_name SceneBase
+extends XRToolsSceneBase
+
+func _ready():
+ super()
+
+ var webxr_interface = XRServer.find_interface("WebXR")
+ if webxr_interface:
+ XRToolsUserSettings.webxr_primary_changed.connect(self._on_webxr_primary_changed)
+ _on_webxr_primary_changed(XRToolsUserSettings.get_real_webxr_primary())
+
+
+func _on_webxr_primary_changed(webxr_primary: int) -> void:
+ # Default to thumbstick.
+ if webxr_primary == 0:
+ webxr_primary = XRToolsUserSettings.WebXRPrimary.THUMBSTICK
+
+ # Re-assign the action name on all the applicable functions.
+ var action_name = XRToolsUserSettings.get_webxr_primary_action(webxr_primary)
+ for controller in [$XROrigin3D/LeftHand, $XROrigin3D/RightHand]:
+ for n in ["MovementDirect", "MovementTurn", "FunctionTeleport"]:
+ var f = controller.get_node_or_null(n)
+ if f:
+ if "input_action" in f:
+ f.input_action = action_name
+ if "rotation_action" in f:
+ f.rotation_action = action_name
diff --git a/proyecto_4/scenes/Main/Main.tscn b/proyecto_4/scenes/Main/Main.tscn
index df2bd25590e03f810a7bc9d96651679d554c5415..7d77543a7fc2d4e974cf0af7d38b79c4ebae7f7f 100644
--- a/proyecto_4/scenes/Main/Main.tscn
+++ b/proyecto_4/scenes/Main/Main.tscn
@@ -1,3 +1,44 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:60a2c4ddd2e69cadaca59fcee59e97f4d7d25f9553fd4b235c52003dd32f6940
-size 1901
+[gd_scene load_steps=7 format=3 uid="uid://ci2m6gkyde8a0"]
+
+[ext_resource type="Script" path="res://scenes/Main/main.gd" id="1_xrbc2"]
+[ext_resource type="PackedScene" uid="uid://bqumugyvkct4r" path="res://addons/godot-xr-tools/staging/loading_screen.tscn" id="3_jrcpi"]
+[ext_resource type="Texture2D" uid="uid://b2u0aujw0f7pd" path="res://content/CfeVr/Art/splash.png" id="3_l0qd4"]
+[ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="4_1v0ha"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mqqva"]
+albedo_color = Color(0.901961, 0.92549, 0.411765, 1)
+
+[sub_resource type="QuadMesh" id="QuadMesh_rtxye"]
+material = SubResource("StandardMaterial3D_mqqva")
+custom_aabb = AABB(-5000, -5000, -5000, 10000, 10000, 10000)
+size = Vector2(2, 2)
+
+[node name="Inicio" type="Node3D"]
+script = ExtResource("1_xrbc2")
+main_scene = "res://content/CfeVr/Maps/Level1/level_1.tscn"
+prompt_for_continue = false
+
+[node name="Fade" type="MeshInstance3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -5)
+mesh = SubResource("QuadMesh_rtxye")
+
+[node name="XROrigin3D" type="XROrigin3D" parent="."]
+
+[node name="XRCamera3D" type="XRCamera3D" parent="XROrigin3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.8, 0)
+
+[node name="LeftHandController" type="XRController3D" parent="XROrigin3D"]
+tracker = &"left_hand"
+
+[node name="RightHandController" type="XRController3D" parent="XROrigin3D"]
+tracker = &"right_hand"
+
+[node name="LoadingScreen" parent="." instance=ExtResource("3_jrcpi")]
+splash_screen = ExtResource("3_l0qd4")
+
+[node name="Scene" type="Node3D" parent="."]
+
+[node name="StartXR" parent="." instance=ExtResource("4_1v0ha")]
+
+[connection signal="xr_ended" from="StartXR" to="." method="_on_StartXR_xr_ended"]
+[connection signal="xr_started" from="StartXR" to="." method="_on_StartXR_xr_started"]
diff --git a/proyecto_4/scenes/Main/Staging.tscn b/proyecto_4/scenes/Main/Staging.tscn
index 08fd760f950c623e7a3a87ef2f26804e39ee17a5..ebbc8644b6c9e062d4e11ccf18b2896438d38a53 100644
--- a/proyecto_4/scenes/Main/Staging.tscn
+++ b/proyecto_4/scenes/Main/Staging.tscn
@@ -1,3 +1,18 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2050188715205596cc00dc9a242fdcf41c8293caef670ec5d6721b2638e0e3e0
-size 996
+[gd_scene load_steps=4 format=3 uid="uid://dlg1ni8tjyi6e"]
+
+[ext_resource type="PackedScene" uid="uid://bnqnnnet4dw12" path="res://addons/godot-xr-tools/staging/staging.tscn" id="1_5vrbg"]
+[ext_resource type="Script" path="res://scenes/Main/staging.gd" id="2_ycwxk"]
+[ext_resource type="Texture2D" uid="uid://bue66dl7b1trn" path="res://content/CfeVr/Art/splash.png" id="3_588qy"]
+
+[node name="Staging" instance=ExtResource("1_5vrbg")]
+script = ExtResource("2_ycwxk")
+main_scene = "res://content/CfeVr/Maps/VisitaSubestacion/vista_se_santa_fe.tscn"
+prompt_for_continue = false
+
+[node name="LoadingScreen" parent="." index="2"]
+splash_screen = ExtResource("3_588qy")
+
+[connection signal="scene_exiting" from="." to="." method="_on_Staging_scene_exiting"]
+[connection signal="scene_loaded" from="." to="." method="_on_Staging_scene_loaded"]
+[connection signal="xr_ended" from="." to="." method="_on_Staging_xr_ended"]
+[connection signal="xr_started" from="." to="." method="_on_Staging_xr_started"]
diff --git a/proyecto_4/scenes/Main/main.gd b/proyecto_4/scenes/Main/main.gd
index 15ced7c39d05d86e34ed54564e0c5b3069efc069..776ef3687bcca4dc7be4116183bb6c53e5a8e222 100644
--- a/proyecto_4/scenes/Main/main.gd
+++ b/proyecto_4/scenes/Main/main.gd
@@ -1,3 +1,6 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f2fcc9167c2134d606f94491a1138dc4e7727e001fc24201314195e2bf7d61d7
-size 114
+extends XRToolsStaging
+
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+ super()
diff --git a/proyecto_4/scenes/Main/staging.gd b/proyecto_4/scenes/Main/staging.gd
index 5242ad0986eaf4a6ea80c914293d10e84558dd58..643be0d348c70375f82d2e2bf6823a9f92d6a7bd 100644
--- a/proyecto_4/scenes/Main/staging.gd
+++ b/proyecto_4/scenes/Main/staging.gd
@@ -1,3 +1,73 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:60400b4713cfe0380301264a5f080249ebab4745c780be1bb4b0d4a9d1d4dccc
-size 2280
+@tool
+class_name Staging
+extends XRToolsStaging
+
+## Introduction
+#
+# This is an example of using the staging system in XRTools
+# to create an environment in which you can background load
+# scenes and switch between them.
+#
+# There is also some example code here on how to react to
+# the player taking their headset on/off.
+#
+# The primary function here is to trigger the
+# "Press to continue" dialog when switching scenes.
+# We do not want to enter our just loaded scene when the
+# player is still thumbling around putting their headset on
+# so if we detect they hadn't put their headset on yet
+# when we were scene switching, we prompt the user.
+#
+# Finally this shows an example of how to react to pause
+# a game. This is not implemented in this demo (yet) but
+# note that most XR runtimes stop giving us controller
+# tracking data at this point.
+
+var scene_is_loaded : bool = false
+
+# Stores which hand the control pad is bound to
+var control_pad_hand : String = "LEFT"
+
+
+func _ready():
+ # In Godot 4 we must now manually call our super class ready function
+ super()
+
+
+func _on_Staging_scene_loaded(_scene, _user_data):
+ # We only show the press to continue the first time we load a scene
+ # to give the player time to put their headset on.
+ prompt_for_continue = false
+ scene_is_loaded = true
+
+
+func _on_Staging_scene_exiting(_scene, _user_data):
+ # We no longer have an active scene
+ scene_is_loaded = false
+
+
+func _on_Staging_xr_started():
+ # We get the 'xr_started' signal when the user puts on their headset,
+ # or returns from the system menus.
+ # If the user did so while we were already scene switching
+ # we leave our prompt for continue on,
+ # else we turn our prompt for continue off.
+ if scene_is_loaded:
+ # No longer need our prompt
+ prompt_for_continue = false
+
+ # This would be a good moment to unpause your game
+
+
+func _on_Staging_xr_ended():
+ # We get the 'xr_ended' whenever the player removes their headset (or goes
+ # into the menu system).
+ #
+ # If the user doesn't put their headset on again before we load a
+ # new scene, we'll want to show the prompt so we don't load the
+ # next scene in while the player is still adjusting their position
+ prompt_for_continue = true
+
+ if scene_is_loaded:
+ # This would be a good moment to pause your game
+ pass