Small fixes: sandbox collision, fall recovery, stale config, README drift, dead code #21
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type: cleanup Priority: low
Each item is small and independent. Checked against
mainat76b3851.Sandbox props have no collision. In
levels/sandbox/sandbox.tscn:83-102,Crate1,Crate2,Pillar,WallandBarrelare bareMeshInstance3Dnodes. OnlyGround(:70) has a body. The player walks straight through the wall and the pillar, so the sandbox can't exercise XR Tools' collision handling (the player body sliding along walls). Give each prop aStaticBody3Dwith a matchingCollisionShape3D, or rebuild them as CSG withuse_collision = true.No recovery from falling off the world. The ground is a 40 x 40 m box (
sandbox.tscn:20-24) with nothing past its edge. Walk off it and the body falls until the player goes back to the main menu or loads a save. (PlayerRig._reset_motion(),src/player/player_rig.gd:112, exists precisely because of the fall-velocity bug this produced on 2026-10-22.) A per-level kill height fixes it: add a_physics_processtoGamethat re-places the player atspawn_point()(src/levels/level.gd:33) once they drop below the level's kill Y. Alternatively, put anArea3Dfloor under the level that does the same.Stale renderer keys in
project.godot.driver/driver_name.windows="vulkan"anddriver/driver_name.linuxbsd="vulkan"(project.godot:40-41) are not Godot 4.6 settings, and the project renders with Compatibility anyway. Addressed in PR #15.Settings save errors are ignored.
GameSettings.save_to_disk()discards the return value ofcfg.save(path)(src/core/game_settings.gd:46). Check it andpush_warning, so a read-only or full user directory doesn't silently lose settings.RigInput.is_steamvr()re-queries the runtime several times per frame. It callsXRServer.find_interface()andget_system_info()(src/input/generic/rig_input.gd:98-105), and it runs once from_process(:115) and again from_on_backend_statefor each hand (:136and:138, so twice for the left hand). Its comment (:96-97) says it can't be cached at boot because system info only arrives after XR starts. Cache it the first time the runtime name comes back non-empty instead.Dead code.
src/player/hand_view.gd(class_name HandView) is not used by any scene or script onmain:ArmsViewreplaced it on the rig inef1a69c, and only comments still mention it. The pipeline that fed it,tools/export_hands.pyandassets/player/hands/README.md(plus the.gitignoreentries for its output,.gitignore:36-39), produces per-hand GLBs that onlyHandViewloads (hand_view.gd:46). Retire them together, or mark them as kept for a future separate-hands model. The script also has two leftovers: it builds asrcmatrix it never uses (tools/export_hands.py:111), and the line it prints as a "det check" (:121) only prints the wrist position; no determinant is ever computed.README drift.
README.mdhas fallen behind the code in several places:README.md:18-19): save/load landed in #8, and Continue now enables whenever a save exists.README.md:76-77): XR Tools is vendored inaddons/godot-xr-tools, andaddons/da_debug_bridgelives there too.README.md:67-80) is missingassets/,docs/,levels/,scenes/,src/input/,src/levels/,tests/andtools/.tests/smoke_menu.gd(README.md:22-23). CI now runs seven suites onmain(.forgejo/workflows/tests.yml:43), and liststerrain_checkfor when #7 lands.README.md:63-64) does not hold for a raw.glbin a.zip. Addressed in PR #18.