From c8139edf2a6d36351b7d1b3069e1402380ad1571 Mon Sep 17 00:00:00 2001
From: Snorre <snorre@altschul.dk>
Date: Sat, 5 Apr 2025 16:29:54 +0200
Subject: [PATCH] eating and growing

---
 openxr_action_map.tres          | 336 +-------------------------------
 resources/food/test_pellet.tscn |  21 ++
 resources/player.tscn           |  25 ++-
 scenes/test.tscn                |  60 +++++-
 scripts/Mouth.cs                |  47 +++++
 scripts/Mouth.cs.uid            |   1 +
 scripts/XRHand.cs               | 128 ++++++------
 7 files changed, 210 insertions(+), 408 deletions(-)
 create mode 100644 resources/food/test_pellet.tscn
 create mode 100644 scripts/Mouth.cs
 create mode 100644 scripts/Mouth.cs.uid

diff --git a/openxr_action_map.tres b/openxr_action_map.tres
index b0362cc..a974532 100644
--- a/openxr_action_map.tres
+++ b/openxr_action_map.tres
@@ -1,4 +1,4 @@
-[gd_resource type="OpenXRActionMap" load_steps=194 format=3 uid="uid://bcubmw1ntpto1"]
+[gd_resource type="OpenXRActionMap" load_steps=111 format=3 uid="uid://bcubmw1ntpto1"]
 
 [sub_resource type="OpenXRAction" id="OpenXRAction_6ivru"]
 resource_name = "trigger"
@@ -200,130 +200,6 @@ binding_path = "/user/hand/right/output/haptic"
 interaction_profile_path = "/interaction_profiles/khr/simple_controller"
 bindings = [SubResource("OpenXRIPBinding_r3qn1"), SubResource("OpenXRIPBinding_n01b8"), SubResource("OpenXRIPBinding_pjtev"), SubResource("OpenXRIPBinding_nqyri"), SubResource("OpenXRIPBinding_86uui"), SubResource("OpenXRIPBinding_nrtxc"), SubResource("OpenXRIPBinding_qovyo"), SubResource("OpenXRIPBinding_d6uso"), SubResource("OpenXRIPBinding_hvi7v"), SubResource("OpenXRIPBinding_7dxun"), SubResource("OpenXRIPBinding_rp8ih"), SubResource("OpenXRIPBinding_0uca0"), SubResource("OpenXRIPBinding_rjtq8"), SubResource("OpenXRIPBinding_lce2q")]
 
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_d2w1t"]
-action = SubResource("OpenXRAction_oi0ij")
-binding_path = "/user/hand/left/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_v2kct"]
-action = SubResource("OpenXRAction_oi0ij")
-binding_path = "/user/hand/right/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_37uq4"]
-action = SubResource("OpenXRAction_m08eo")
-binding_path = "/user/hand/left/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kooyb"]
-action = SubResource("OpenXRAction_m08eo")
-binding_path = "/user/hand/right/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_51qre"]
-action = SubResource("OpenXRAction_c4j1d")
-binding_path = "/user/hand/left/input/grip/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fncxp"]
-action = SubResource("OpenXRAction_c4j1d")
-binding_path = "/user/hand/right/input/grip/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qi50k"]
-action = SubResource("OpenXRAction_sopde")
-binding_path = "/user/hand/left/input/palm_ext/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_h5icu"]
-action = SubResource("OpenXRAction_sopde")
-binding_path = "/user/hand/right/input/palm_ext/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_b1sv6"]
-action = SubResource("OpenXRAction_iphn4")
-binding_path = "/user/hand/left/input/menu/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_yu2t6"]
-action = SubResource("OpenXRAction_iphn4")
-binding_path = "/user/hand/right/input/menu/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_labib"]
-action = SubResource("OpenXRAction_6ivru")
-binding_path = "/user/hand/left/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_altuc"]
-action = SubResource("OpenXRAction_6ivru")
-binding_path = "/user/hand/right/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7p0fp"]
-action = SubResource("OpenXRAction_vfhwq")
-binding_path = "/user/hand/left/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_yjnix"]
-action = SubResource("OpenXRAction_vfhwq")
-binding_path = "/user/hand/right/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pgh0x"]
-action = SubResource("OpenXRAction_typ1r")
-binding_path = "/user/hand/left/input/squeeze/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lplyu"]
-action = SubResource("OpenXRAction_typ1r")
-binding_path = "/user/hand/right/input/squeeze/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ifnya"]
-action = SubResource("OpenXRAction_clvbf")
-binding_path = "/user/hand/left/input/squeeze/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jl4vo"]
-action = SubResource("OpenXRAction_clvbf")
-binding_path = "/user/hand/right/input/squeeze/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1n6j6"]
-action = SubResource("OpenXRAction_3k6la")
-binding_path = "/user/hand/left/input/thumbstick"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o1nfs"]
-action = SubResource("OpenXRAction_3k6la")
-binding_path = "/user/hand/right/input/thumbstick"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_unnrh"]
-action = SubResource("OpenXRAction_i8esw")
-binding_path = "/user/hand/left/input/thumbstick/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3wafl"]
-action = SubResource("OpenXRAction_i8esw")
-binding_path = "/user/hand/right/input/thumbstick/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tjb53"]
-action = SubResource("OpenXRAction_oqnsu")
-binding_path = "/user/hand/left/input/trackpad"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lcg2b"]
-action = SubResource("OpenXRAction_oqnsu")
-binding_path = "/user/hand/right/input/trackpad"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sp6l2"]
-action = SubResource("OpenXRAction_r5bl7")
-binding_path = "/user/hand/left/input/trackpad/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xj6ir"]
-action = SubResource("OpenXRAction_r5bl7")
-binding_path = "/user/hand/right/input/trackpad/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_igmf3"]
-action = SubResource("OpenXRAction_ytptc")
-binding_path = "/user/hand/left/input/trackpad/touch"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_inw5v"]
-action = SubResource("OpenXRAction_ytptc")
-binding_path = "/user/hand/right/input/trackpad/touch"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_iy2wq"]
-action = SubResource("OpenXRAction_sow2k")
-binding_path = "/user/hand/left/output/haptic"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_plu03"]
-action = SubResource("OpenXRAction_sow2k")
-binding_path = "/user/hand/right/output/haptic"
-
-[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_dad45"]
-interaction_profile_path = "/interaction_profiles/microsoft/motion_controller"
-bindings = [SubResource("OpenXRIPBinding_d2w1t"), SubResource("OpenXRIPBinding_v2kct"), SubResource("OpenXRIPBinding_37uq4"), SubResource("OpenXRIPBinding_kooyb"), SubResource("OpenXRIPBinding_51qre"), SubResource("OpenXRIPBinding_fncxp"), SubResource("OpenXRIPBinding_qi50k"), SubResource("OpenXRIPBinding_h5icu"), SubResource("OpenXRIPBinding_b1sv6"), SubResource("OpenXRIPBinding_yu2t6"), SubResource("OpenXRIPBinding_labib"), SubResource("OpenXRIPBinding_altuc"), SubResource("OpenXRIPBinding_7p0fp"), SubResource("OpenXRIPBinding_yjnix"), SubResource("OpenXRIPBinding_pgh0x"), SubResource("OpenXRIPBinding_lplyu"), SubResource("OpenXRIPBinding_ifnya"), SubResource("OpenXRIPBinding_jl4vo"), SubResource("OpenXRIPBinding_1n6j6"), SubResource("OpenXRIPBinding_o1nfs"), SubResource("OpenXRIPBinding_unnrh"), SubResource("OpenXRIPBinding_3wafl"), SubResource("OpenXRIPBinding_tjb53"), SubResource("OpenXRIPBinding_lcg2b"), SubResource("OpenXRIPBinding_sp6l2"), SubResource("OpenXRIPBinding_xj6ir"), SubResource("OpenXRIPBinding_igmf3"), SubResource("OpenXRIPBinding_inw5v"), SubResource("OpenXRIPBinding_iy2wq"), SubResource("OpenXRIPBinding_plu03")]
-
 [sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lng5j"]
 action = SubResource("OpenXRAction_oi0ij")
 binding_path = "/user/hand/left/input/aim/pose"
@@ -476,122 +352,6 @@ binding_path = "/user/hand/right/output/haptic"
 interaction_profile_path = "/interaction_profiles/bytedance/pico4_controller"
 bindings = [SubResource("OpenXRIPBinding_lng5j"), SubResource("OpenXRIPBinding_aeeoj"), SubResource("OpenXRIPBinding_gosqu"), SubResource("OpenXRIPBinding_n52fm"), SubResource("OpenXRIPBinding_vushy"), SubResource("OpenXRIPBinding_lbhgg"), SubResource("OpenXRIPBinding_m1cgb"), SubResource("OpenXRIPBinding_yfktj"), SubResource("OpenXRIPBinding_kjhen"), SubResource("OpenXRIPBinding_32kw4"), SubResource("OpenXRIPBinding_ktbxl"), SubResource("OpenXRIPBinding_8ldfe"), SubResource("OpenXRIPBinding_nueak"), SubResource("OpenXRIPBinding_vopyr"), SubResource("OpenXRIPBinding_rgbyv"), SubResource("OpenXRIPBinding_bflds"), SubResource("OpenXRIPBinding_pueci"), SubResource("OpenXRIPBinding_jn5l0"), SubResource("OpenXRIPBinding_44ra8"), SubResource("OpenXRIPBinding_bh82f"), SubResource("OpenXRIPBinding_7b312"), SubResource("OpenXRIPBinding_ajt26"), SubResource("OpenXRIPBinding_grl1h"), SubResource("OpenXRIPBinding_dlpx3"), SubResource("OpenXRIPBinding_s4h6a"), SubResource("OpenXRIPBinding_0njdn"), SubResource("OpenXRIPBinding_xtpgr"), SubResource("OpenXRIPBinding_sm8ja"), SubResource("OpenXRIPBinding_fyyqw"), SubResource("OpenXRIPBinding_6yfaw"), SubResource("OpenXRIPBinding_x7rhh"), SubResource("OpenXRIPBinding_8cuio"), SubResource("OpenXRIPBinding_v0kom"), SubResource("OpenXRIPBinding_v1men"), SubResource("OpenXRIPBinding_qujgh"), SubResource("OpenXRIPBinding_8xxre"), SubResource("OpenXRIPBinding_jceb4")]
 
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hpd1k"]
-action = SubResource("OpenXRAction_oi0ij")
-binding_path = "/user/hand/left/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7djuc"]
-action = SubResource("OpenXRAction_oi0ij")
-binding_path = "/user/hand/right/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rlsjo"]
-action = SubResource("OpenXRAction_m08eo")
-binding_path = "/user/hand/left/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ad82e"]
-action = SubResource("OpenXRAction_m08eo")
-binding_path = "/user/hand/right/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_053t8"]
-action = SubResource("OpenXRAction_c4j1d")
-binding_path = "/user/hand/left/input/grip/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3y48y"]
-action = SubResource("OpenXRAction_c4j1d")
-binding_path = "/user/hand/right/input/grip/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_eqmbe"]
-action = SubResource("OpenXRAction_sopde")
-binding_path = "/user/hand/left/input/palm_ext/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lml5w"]
-action = SubResource("OpenXRAction_sopde")
-binding_path = "/user/hand/right/input/palm_ext/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bw6yn"]
-action = SubResource("OpenXRAction_iphn4")
-binding_path = "/user/hand/left/input/menu/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rmtug"]
-action = SubResource("OpenXRAction_iphn4")
-binding_path = "/user/hand/right/input/menu/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_got3w"]
-action = SubResource("OpenXRAction_wdehm")
-binding_path = "/user/hand/left/input/x/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cfhcx"]
-action = SubResource("OpenXRAction_wdehm")
-binding_path = "/user/hand/right/input/a/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wuspj"]
-action = SubResource("OpenXRAction_e1frq")
-binding_path = "/user/hand/left/input/y/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_j7v05"]
-action = SubResource("OpenXRAction_e1frq")
-binding_path = "/user/hand/right/input/b/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_a0qeh"]
-action = SubResource("OpenXRAction_6ivru")
-binding_path = "/user/hand/left/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hop5q"]
-action = SubResource("OpenXRAction_6ivru")
-binding_path = "/user/hand/right/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wi6q4"]
-action = SubResource("OpenXRAction_vfhwq")
-binding_path = "/user/hand/left/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0x121"]
-action = SubResource("OpenXRAction_vfhwq")
-binding_path = "/user/hand/right/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pxanv"]
-action = SubResource("OpenXRAction_typ1r")
-binding_path = "/user/hand/left/input/squeeze/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ylsgs"]
-action = SubResource("OpenXRAction_typ1r")
-binding_path = "/user/hand/right/input/squeeze/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lyc6f"]
-action = SubResource("OpenXRAction_clvbf")
-binding_path = "/user/hand/left/input/squeeze/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_t1gg6"]
-action = SubResource("OpenXRAction_clvbf")
-binding_path = "/user/hand/right/input/squeeze/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_u2vet"]
-action = SubResource("OpenXRAction_3k6la")
-binding_path = "/user/hand/left/input/thumbstick"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gh4ss"]
-action = SubResource("OpenXRAction_3k6la")
-binding_path = "/user/hand/right/input/thumbstick"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1olwi"]
-action = SubResource("OpenXRAction_i8esw")
-binding_path = "/user/hand/left/input/thumbstick/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_t23ty"]
-action = SubResource("OpenXRAction_i8esw")
-binding_path = "/user/hand/right/input/thumbstick/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_eusi4"]
-action = SubResource("OpenXRAction_sow2k")
-binding_path = "/user/hand/left/output/haptic"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_etsgv"]
-action = SubResource("OpenXRAction_sow2k")
-binding_path = "/user/hand/right/output/haptic"
-
-[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_dnwvb"]
-interaction_profile_path = "/interaction_profiles/hp/mixed_reality_controller"
-bindings = [SubResource("OpenXRIPBinding_hpd1k"), SubResource("OpenXRIPBinding_7djuc"), SubResource("OpenXRIPBinding_rlsjo"), SubResource("OpenXRIPBinding_ad82e"), SubResource("OpenXRIPBinding_053t8"), SubResource("OpenXRIPBinding_3y48y"), SubResource("OpenXRIPBinding_eqmbe"), SubResource("OpenXRIPBinding_lml5w"), SubResource("OpenXRIPBinding_bw6yn"), SubResource("OpenXRIPBinding_rmtug"), SubResource("OpenXRIPBinding_got3w"), SubResource("OpenXRIPBinding_cfhcx"), SubResource("OpenXRIPBinding_wuspj"), SubResource("OpenXRIPBinding_j7v05"), SubResource("OpenXRIPBinding_a0qeh"), SubResource("OpenXRIPBinding_hop5q"), SubResource("OpenXRIPBinding_wi6q4"), SubResource("OpenXRIPBinding_0x121"), SubResource("OpenXRIPBinding_pxanv"), SubResource("OpenXRIPBinding_ylsgs"), SubResource("OpenXRIPBinding_lyc6f"), SubResource("OpenXRIPBinding_t1gg6"), SubResource("OpenXRIPBinding_u2vet"), SubResource("OpenXRIPBinding_gh4ss"), SubResource("OpenXRIPBinding_1olwi"), SubResource("OpenXRIPBinding_t23ty"), SubResource("OpenXRIPBinding_eusi4"), SubResource("OpenXRIPBinding_etsgv")]
-
 [sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_61gsj"]
 action = SubResource("OpenXRAction_oi0ij")
 binding_path = "/user/hand/left/input/aim/pose"
@@ -716,98 +476,6 @@ binding_path = "/user/hand/right/output/haptic"
 interaction_profile_path = "/interaction_profiles/htc/vive_cosmos_controller"
 bindings = [SubResource("OpenXRIPBinding_61gsj"), SubResource("OpenXRIPBinding_f63eo"), SubResource("OpenXRIPBinding_3megw"), SubResource("OpenXRIPBinding_1875n"), SubResource("OpenXRIPBinding_jrx7l"), SubResource("OpenXRIPBinding_sddo8"), SubResource("OpenXRIPBinding_5idg5"), SubResource("OpenXRIPBinding_5vlhu"), SubResource("OpenXRIPBinding_yto2p"), SubResource("OpenXRIPBinding_35s7d"), SubResource("OpenXRIPBinding_cukgo"), SubResource("OpenXRIPBinding_58wje"), SubResource("OpenXRIPBinding_x1ifb"), SubResource("OpenXRIPBinding_hw16p"), SubResource("OpenXRIPBinding_gdlwa"), SubResource("OpenXRIPBinding_drau7"), SubResource("OpenXRIPBinding_0vq03"), SubResource("OpenXRIPBinding_y7ek0"), SubResource("OpenXRIPBinding_cy6rb"), SubResource("OpenXRIPBinding_6r8a6"), SubResource("OpenXRIPBinding_vmwlg"), SubResource("OpenXRIPBinding_qcgh6"), SubResource("OpenXRIPBinding_bwwah"), SubResource("OpenXRIPBinding_rtyas"), SubResource("OpenXRIPBinding_hk5ci"), SubResource("OpenXRIPBinding_4j055"), SubResource("OpenXRIPBinding_awtpp"), SubResource("OpenXRIPBinding_xh6fl"), SubResource("OpenXRIPBinding_ixewl"), SubResource("OpenXRIPBinding_qwqvw")]
 
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nim4l"]
-action = SubResource("OpenXRAction_oi0ij")
-binding_path = "/user/hand/left/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7rbtf"]
-action = SubResource("OpenXRAction_oi0ij")
-binding_path = "/user/hand/right/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vivrk"]
-action = SubResource("OpenXRAction_m08eo")
-binding_path = "/user/hand/left/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1xhyi"]
-action = SubResource("OpenXRAction_m08eo")
-binding_path = "/user/hand/right/input/aim/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kfc2j"]
-action = SubResource("OpenXRAction_c4j1d")
-binding_path = "/user/hand/left/input/grip/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_osn8p"]
-action = SubResource("OpenXRAction_c4j1d")
-binding_path = "/user/hand/right/input/grip/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o7rx2"]
-action = SubResource("OpenXRAction_sopde")
-binding_path = "/user/hand/left/input/palm_ext/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_egnh2"]
-action = SubResource("OpenXRAction_sopde")
-binding_path = "/user/hand/right/input/palm_ext/pose"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qdg3g"]
-action = SubResource("OpenXRAction_iphn4")
-binding_path = "/user/hand/left/input/home/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1m4jk"]
-action = SubResource("OpenXRAction_iphn4")
-binding_path = "/user/hand/right/input/home/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mq2is"]
-action = SubResource("OpenXRAction_6ivru")
-binding_path = "/user/hand/left/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_j4oh5"]
-action = SubResource("OpenXRAction_6ivru")
-binding_path = "/user/hand/right/input/trigger/value"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ldfim"]
-action = SubResource("OpenXRAction_vfhwq")
-binding_path = "/user/hand/left/input/trigger/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_m7usb"]
-action = SubResource("OpenXRAction_vfhwq")
-binding_path = "/user/hand/right/input/trigger/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kby14"]
-action = SubResource("OpenXRAction_3k6la")
-binding_path = "/user/hand/left/input/trackpad"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1qtbb"]
-action = SubResource("OpenXRAction_3k6la")
-binding_path = "/user/hand/right/input/trackpad"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qmp03"]
-action = SubResource("OpenXRAction_i8esw")
-binding_path = "/user/hand/left/input/trackpad/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nd1f3"]
-action = SubResource("OpenXRAction_i8esw")
-binding_path = "/user/hand/right/input/trackpad/click"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dxsir"]
-action = SubResource("OpenXRAction_um1hv")
-binding_path = "/user/hand/left/input/trackpad/touch"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cl2rl"]
-action = SubResource("OpenXRAction_um1hv")
-binding_path = "/user/hand/right/input/trackpad/touch"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_a032v"]
-action = SubResource("OpenXRAction_sow2k")
-binding_path = "/user/hand/left/output/haptic"
-
-[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hh6l0"]
-action = SubResource("OpenXRAction_sow2k")
-binding_path = "/user/hand/right/output/haptic"
-
-[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_gqjp6"]
-interaction_profile_path = "/interaction_profiles/huawei/controller"
-bindings = [SubResource("OpenXRIPBinding_nim4l"), SubResource("OpenXRIPBinding_7rbtf"), SubResource("OpenXRIPBinding_vivrk"), SubResource("OpenXRIPBinding_1xhyi"), SubResource("OpenXRIPBinding_kfc2j"), SubResource("OpenXRIPBinding_osn8p"), SubResource("OpenXRIPBinding_o7rx2"), SubResource("OpenXRIPBinding_egnh2"), SubResource("OpenXRIPBinding_qdg3g"), SubResource("OpenXRIPBinding_1m4jk"), SubResource("OpenXRIPBinding_mq2is"), SubResource("OpenXRIPBinding_j4oh5"), SubResource("OpenXRIPBinding_ldfim"), SubResource("OpenXRIPBinding_m7usb"), SubResource("OpenXRIPBinding_kby14"), SubResource("OpenXRIPBinding_1qtbb"), SubResource("OpenXRIPBinding_qmp03"), SubResource("OpenXRIPBinding_nd1f3"), SubResource("OpenXRIPBinding_dxsir"), SubResource("OpenXRIPBinding_cl2rl"), SubResource("OpenXRIPBinding_a032v"), SubResource("OpenXRIPBinding_hh6l0")]
-
 [sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_g2awd"]
 action = SubResource("OpenXRAction_oi0ij")
 binding_path = "/user/eyes_ext/input/gaze_ext/pose"
@@ -818,4 +486,4 @@ bindings = [SubResource("OpenXRIPBinding_g2awd")]
 
 [resource]
 action_sets = [SubResource("OpenXRActionSet_ngwcy")]
-interaction_profiles = [SubResource("OpenXRInteractionProfile_ckeh6"), SubResource("OpenXRInteractionProfile_dad45"), SubResource("OpenXRInteractionProfile_lvl5r"), SubResource("OpenXRInteractionProfile_dnwvb"), SubResource("OpenXRInteractionProfile_oqlrv"), SubResource("OpenXRInteractionProfile_gqjp6"), SubResource("OpenXRInteractionProfile_asb4g")]
+interaction_profiles = [SubResource("OpenXRInteractionProfile_ckeh6"), SubResource("OpenXRInteractionProfile_lvl5r"), SubResource("OpenXRInteractionProfile_oqlrv"), SubResource("OpenXRInteractionProfile_asb4g")]
diff --git a/resources/food/test_pellet.tscn b/resources/food/test_pellet.tscn
new file mode 100644
index 0000000..0ddebf5
--- /dev/null
+++ b/resources/food/test_pellet.tscn
@@ -0,0 +1,21 @@
+[gd_scene load_steps=4 format=3 uid="uid://ctjaib3jr4ug5"]
+
+[sub_resource type="SphereShape3D" id="SphereShape3D_bl13t"]
+radius = 0.01
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iyx0m"]
+albedo_color = Color(0.995436, 0, 0.0986777, 1)
+
+[sub_resource type="SphereMesh" id="SphereMesh_bl13t"]
+material = SubResource("StandardMaterial3D_iyx0m")
+radius = 0.01
+height = 0.02
+
+[node name="test pellet" type="RigidBody3D"]
+mass = 0.1
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
+shape = SubResource("SphereShape3D_bl13t")
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
+mesh = SubResource("SphereMesh_bl13t")
diff --git a/resources/player.tscn b/resources/player.tscn
index 6be2dfb..ff99bbb 100644
--- a/resources/player.tscn
+++ b/resources/player.tscn
@@ -1,7 +1,8 @@
-[gd_scene load_steps=5 format=3 uid="uid://8fmy7u5fyonc"]
+[gd_scene load_steps=7 format=3 uid="uid://8fmy7u5fyonc"]
 
 [ext_resource type="Script" uid="uid://bf27rxigs8b22" path="res://scripts/XRHand.cs" id="1_gyc3h"]
 [ext_resource type="Script" uid="uid://dglj0x0bpkx5i" path="res://scripts/XrOrigin3d.cs" id="1_ucfva"]
+[ext_resource type="Script" uid="uid://typrll7n6g3e" path="res://scripts/Mouth.cs" id="3_un1ji"]
 
 [sub_resource type="CapsuleMesh" id="CapsuleMesh_ij1v8"]
 radius = 0.1
@@ -10,11 +11,15 @@ height = 0.2
 [sub_resource type="SphereShape3D" id="SphereShape3D_iyx0m"]
 radius = 0.01
 
+[sub_resource type="SphereShape3D" id="SphereShape3D_ucfva"]
+radius = 0.03
+
 [node name="XROrigin3D" type="XROrigin3D"]
 current = true
 script = ExtResource("1_ucfva")
 
 [node name="LeftHand" type="XRController3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.381652, 0.302346, 0)
 tracker = &"left_hand"
 script = ExtResource("1_gyc3h")
 
@@ -27,7 +32,9 @@ mesh = SubResource("CapsuleMesh_ij1v8")
 shape = SubResource("SphereShape3D_iyx0m")
 
 [node name="RightHand" type="XRController3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.412168, 0.292391, 0)
 tracker = &"right_hand"
+script = ExtResource("1_gyc3h")
 
 [node name="MeshInstance3D" type="MeshInstance3D" parent="RightHand"]
 mesh = SubResource("CapsuleMesh_ij1v8")
@@ -37,8 +44,22 @@ mesh = SubResource("CapsuleMesh_ij1v8")
 [node name="CollisionShape3D" type="CollisionShape3D" parent="RightHand/StaticBody3D"]
 shape = SubResource("SphereShape3D_iyx0m")
 
-[node name="XRCamera3D" type="XRCamera3D" parent="."]
+[node name="XRCamera3D" type="XRCamera3D" parent="." node_paths=PackedStringArray("RightHand", "LeftHand")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.821388, 0.40056)
+script = ExtResource("3_un1ji")
+MaxEatWeight = 0.1
+RightHand = NodePath("../RightHand")
+LeftHand = NodePath("../LeftHand")
+
+[node name="Area3D" type="Area3D" parent="XRCamera3D"]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="XRCamera3D/Area3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0335343, -0.0395132)
+shape = SubResource("SphereShape3D_ucfva")
 
 [connection signal="button_pressed" from="LeftHand" to="LeftHand" method="OnPress"]
 [connection signal="button_released" from="LeftHand" to="LeftHand" method="OnRelease"]
 [connection signal="input_float_changed" from="LeftHand" to="LeftHand" method="OnFloat"]
+[connection signal="button_pressed" from="RightHand" to="RightHand" method="OnPress"]
+[connection signal="button_released" from="RightHand" to="RightHand" method="OnRelease"]
+[connection signal="input_float_changed" from="RightHand" to="RightHand" method="OnFloat"]
diff --git a/scenes/test.tscn b/scenes/test.tscn
index 58d8663..e2f88d8 100644
--- a/scenes/test.tscn
+++ b/scenes/test.tscn
@@ -1,9 +1,8 @@
-[gd_scene load_steps=11 format=3 uid="uid://din25343yu8wv"]
+[gd_scene load_steps=10 format=3 uid="uid://din25343yu8wv"]
 
 [ext_resource type="PackedScene" uid="uid://csh2n73hb2co8" path="res://models/banana.fbx" id="2_bl13t"]
 [ext_resource type="PackedScene" uid="uid://8fmy7u5fyonc" path="res://resources/player.tscn" id="2_iyx0m"]
-[ext_resource type="PackedScene" uid="uid://cgoi8weyooq8u" path="res://models/tomato.fbx" id="3_74lek"]
-[ext_resource type="PackedScene" uid="uid://dysj5cfhlu18a" path="res://models/chair.fbx" id="4_j5jx5"]
+[ext_resource type="PackedScene" uid="uid://ctjaib3jr4ug5" path="res://resources/food/test_pellet.tscn" id="3_iyx0m"]
 
 [sub_resource type="FastNoiseLite" id="FastNoiseLite_bl13t"]
 
@@ -38,7 +37,7 @@ shape = SubResource("WorldBoundaryShape3D_lpvoh")
 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0676612, 0.724976, -0.380918)
 
 [node name="banana" parent="Bananan" instance=ExtResource("2_bl13t")]
-transform = Transform3D(0.395, 0, 0, 0, 0.395, 0, 0, 0, 0.395, 1.70604, 3.73307, -0.732828)
+transform = Transform3D(0.02, 0, 0, 0, 0.02, 0, 0, 0, 0.02, 0, 0, 0)
 
 [node name="CollisionShape3D" type="CollisionShape3D" parent="Bananan"]
 transform = Transform3D(1, 0, 0, 0, 0.816107, -0.5779, 0, 0.5779, 0.816107, 0, -0.0504407, -0.0107305)
@@ -50,8 +49,53 @@ shape = SubResource("CapsuleShape3D_74lek")
 
 [node name="Player" parent="." instance=ExtResource("2_iyx0m")]
 
-[node name="tomato" parent="." instance=ExtResource("3_74lek")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.83242, 0.909237, 2.02713)
+[node name="test pellet" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00932735, 0.01, -0.0187979)
 
-[node name="chair" parent="." instance=ExtResource("4_j5jx5")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.89644, 0.144684, -0.323397)
+[node name="test pellet2" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0320477, 0.01, -0.0179864)
+
+[node name="test pellet3" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0320477, 0.01, 0.00716831)
+
+[node name="test pellet4" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0109501, 0.01, 0.0104141)
+
+[node name="test pellet5" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0166389, 0.01, 0.00392256)
+
+[node name="test pellet6" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0182618, 0.01, -0.0196093)
+
+[node name="test pellet7" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0393593, 0.01, 0.00554545)
+
+[node name="test pellet8" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0125817, 0.01, 0.0233972)
+
+[node name="test pellet9" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0158188, 0.01, 0.0339459)
+
+[node name="test pellet10" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0393507, 0.01, 0.0315116)
+
+[node name="test pellet11" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00609013, 0.01, 0.0526091)
+
+[node name="test pellet12" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0426051, 0.01, 0.0380031)
+
+[node name="test pellet13" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.044228, 0.01, -0.0204207)
+
+[node name="test pellet14" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00527874, 0.01, -0.0398954)
+
+[node name="test pellet15" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.062071, 0.01, -0.00824909)
+
+[node name="test pellet16" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.031245, 0.01, -0.0415182)
+
+[node name="test pellet17" parent="." instance=ExtResource("3_iyx0m")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0718171, 0.01, -0.000134636)
diff --git a/scripts/Mouth.cs b/scripts/Mouth.cs
new file mode 100644
index 0000000..3dc15dc
--- /dev/null
+++ b/scripts/Mouth.cs
@@ -0,0 +1,47 @@
+using Godot;
+
+public partial class Mouth : XRCamera3D
+{
+
+	[Export]
+	public float MaxEatWeight = 1.0f;
+
+	[Export]
+	public float EatGrowthFactor = 0.1f;
+
+	[Export]
+	public XRHand RightHand;
+	[Export]
+	public XRHand LeftHand;
+
+	public override void _Ready()
+	{
+		UpdateWeights();
+	}
+
+	public void EnterMouth(Node node)
+	{
+		try
+		{
+			RigidBody3D body = (RigidBody3D)node;
+			if (body.Mass > MaxEatWeight)
+				return;
+
+			UpdateWeights(body.Mass);
+
+		}
+		catch (System.InvalidCastException)
+		{
+			// dont give a shit
+		}
+	}
+
+	void UpdateWeights(float mass = 0f)
+	{
+		MaxEatWeight += (mass / MaxEatWeight) * EatGrowthFactor;
+		((XROrigin3D)GetParent()).WorldScale = 1.0f / MaxEatWeight;
+		RightHand.Strength = MaxEatWeight;
+		LeftHand.Strength = MaxEatWeight;
+	}
+
+}
diff --git a/scripts/Mouth.cs.uid b/scripts/Mouth.cs.uid
new file mode 100644
index 0000000..ff6c45a
--- /dev/null
+++ b/scripts/Mouth.cs.uid
@@ -0,0 +1 @@
+uid://typrll7n6g3e
diff --git a/scripts/XRHand.cs b/scripts/XRHand.cs
index ae2797a..20959eb 100644
--- a/scripts/XRHand.cs
+++ b/scripts/XRHand.cs
@@ -3,76 +3,76 @@ using System.Collections.Generic;
 
 public partial class XRHand : XRController3D
 {
-    List<Generic6DofJoint3D> joints = new();
+	List<Generic6DofJoint3D> joints = new();
 
-    [Export]
-    StaticBody3D body;
+	[Export]
+	StaticBody3D body;
 
-    [Export]
-    float strength = 1.0f;
+	[Export]
+	public float Strength = 1.0f;
 
-    public override void _Process(double delta)
-    {
-        if ((bool)GetInput("trigger_click"))
-        {
-        }
-        else if (joints.Count > 0)
-        {
-        }
-    }
+	public override void _Process(double delta)
+	{
+		if ((bool)GetInput("trigger_click"))
+		{
+		}
+		else if (joints.Count > 0)
+		{
+		}
+	}
 
-    public void OnPress(string name)
-    {
-        if (name == "select_button")
-        {
-            var query = new PhysicsShapeQueryParameters3D();
-            var sphere = new SphereShape3D();
-            sphere.Radius = 0.1f;
-            query.Shape = sphere;
-            query.CollideWithBodies = true;
-            query.CollideWithAreas = false;
-            query.Transform = ((Node3D)GetParent()).GlobalTransform;
-            var overlaps = GetWorld3D().DirectSpaceState.IntersectShape(query);
-            foreach (var fuckingcollider in overlaps)
-            {
-                RigidBody3D body = null;
-                try
-                {
-                    body = (RigidBody3D)fuckingcollider["collider"];
-                }
-                catch (System.InvalidCastException)
-                {
-                    continue;
-                }
+	public void OnPress(string name)
+	{
+		if (name == "select_button")
+		{
+			var query = new PhysicsShapeQueryParameters3D();
+			var sphere = new SphereShape3D();
+			sphere.Radius = 0.1f;
+			query.Shape = sphere;
+			query.CollideWithBodies = true;
+			query.CollideWithAreas = false;
+			query.Transform = ((Node3D)GetParent()).GlobalTransform;
+			var overlaps = GetWorld3D().DirectSpaceState.IntersectShape(query);
+			foreach (var fuckingcollider in overlaps)
+			{
+				RigidBody3D body = null;
+				try
+				{
+					body = (RigidBody3D)fuckingcollider["collider"];
+				}
+				catch (System.InvalidCastException)
+				{
+					continue;
+				}
 
-                if (body.Mass > strength)
-                {
-                    continue;
-                }
+				if (body.Mass > Strength)
+				{
+					continue;
+				}
 
-                Generic6DofJoint3D joint = new();
-                joint.NodeA = GetPathTo(body);
-                joint.NodeB = body.GetPath();
-                joints.Add(joint);
-                AddChild(joint);
-            }
-        }
-    }
+				Generic6DofJoint3D joint = new();
+				joint.NodeA = GetPathTo(body);
+				joint.NodeB = body.GetPath();
+				joints.Add(joint);
+				AddChild(joint);
+			}
+		}
+	}
 
-    public void OnRelease(string name)
-    {
-        if (name == "select_button")
-        {
-            foreach (var joint in joints)
-                joint.QueueFree();
-            joints.Clear();
-        }
-    }
+	public void OnRelease(string name)
+	{
+		if (name == "select_button")
+		{
+			foreach (var joint in joints)
+				joint.QueueFree();
+			joints.Clear();
+		}
+	}
 
-    public void OnFloat(string name, float value)
-    {
-        // GD.Print("Float input:");
-        // GD.Print(name);
-        // GD.Print(value);
-    }
+	public void OnFloat(string name, float value)
+	{
+		// GD.Print("Float input:");
+		// GD.Print(name);
+		// GD.Print(value);
+	}
 }