Skip to content

SONS VR Mod v0.0.5-alpha

Pre-release
Pre-release

Choose a tag to compare

@iPowerTech iPowerTech released this 24 Aug 12:34

v0.0.5-alpha

Menus you can actually use, correct stereo on headsets with angled displays, and thumbsticks that
do one thing at a time.

Fixed: the world sheared when you turned your head

On headsets with canted (angled) displays — Quest 3 among them — a rectangle became a trapezium
as you turned, and the whole world was distorted with it.

The per-eye projection was being rebuilt from the four raw field-of-view tangents the runtime
reports. Four tangents can only describe a frustum square to the eye's forward axis, so the rebuild
silently dropped the shear a canted display puts into its projection: the scene was drawn on a
straight image plane and shown on a tilted one. The projection now comes from the runtime exactly as
given, and the field-of-view crop is applied on top of it instead of replacing it.

Headsets with parallel displays — Pico 4, Pimax Crystal, Index — were never affected, which is why
this went unnoticed for so long.

Fixed: the pause and save screens could not be clicked

Esc (long press on X), the save screen and the dialogs that open from them were visible but
dead: the laser passed straight through them.

They hang off the same canvas the mod moves into world space for the heads-up display, so the panel
scan skipped them as already converted. They were riding on a surface locked to the head, which is
the one thing a pointer cannot aim at. While a menu is open that canvas is now anchored in the room
like every other panel, and the display takes it back the moment the menu closes.

A second fault sat behind it: in play, the game's camera does not draw the interface layer, because
a screen-space canvas never passes through a camera at all. Move one into world space and leave it
there and it is present, laid out, fully answering the pointer, and invisible — which is what
happened to the "new save" dialog. Panels are now moved onto a layer the eye cameras draw, decided
by reading the camera's own culling mask, so a canvas that is already visible is left exactly as the
game had it.

Fixed: a clean install had no controller input at all

The SteamVR action manifest was missing from the package. Without it every action reads zero, and
the failure looks like anything but a missing file: the headset tracks, the hands track, the laser
is drawn, and no trigger, stick or button does anything — because poses do not go through the action
system and everything else does.

SonsOfTheForest_Data/StreamingAssets/SteamVR/ now ships with the release. When installing by
hand, copy it too.

Changed: thumbsticks

Control Sends Now needs
Right stick up Left Shift Close to the end of its travel
Right stick down Left Ctrl Close to the end of its travel
Left stick sideways A / D Past half

The right stick also turns the player, and a turn is a push sideways that rarely stays perfectly
sideways: the stray forward or back picked up while sweeping the thumb was enough to break into a
run or drop into a crouch in the middle of looking around. Stepping sideways asks for half travel so
walking forward does not drift into a diagonal.

Each direction is let go of at a lower threshold than it took to engage, since a thumb resting on
the line would otherwise cross it many times a second and the key would flicker with it.

Running was not bound at all before this release and now sends Left Shift, the game's own
sprint key.

Two new settings, on the panel in the headset under Movement and in MelonPreferences.cfg:

Setting Default Range
RunCrouchThreshold 0.85 0.50 – 0.98
StrafeThreshold 0.50 0.20 – 0.90

If you preferred the old, much lighter crouch, set RunCrouchThreshold to 0.30.

Added: interface survey on a key

F9 and F10 write the whole state of the interface to the MelonLoader log: every canvas with its
render mode, layer, event camera, raycaster, control count and contents, plus the event system and
every active raycaster. Two keys rather than one so two screens can be captured and compared.