Skip to content

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 27 Apr 20:58
· 8 commits to main since this release
v0.3.5: move rotation injection from GetRotationInput to Update postfix

v0.3.4 confirmed two things from the BepInEx log:
- Lifecycle workaround (orphan + DontDestroyOnLoad + HideAndDontSave)
  unblocked patches: PhysGrabber.Update POSTFIX fired at line 28,
  Plugin.Update heartbeats fired every 5s for 2+ minutes
- GetRotationInput POSTFIX never appeared, even during gameplay

So PhysGrabber.GetRotationInput() simply isn't called by the vanilla
code path that drives normal grab rotation — it's likely only invoked
when a specific keyboard rotation modifier is held. The actual per-
frame rotation must happen elsewhere (probably in Update or
ObjectTurning).

This release moves the rotation injection into the Update postfix
that we know fires. On each call we:
- gate on isLocal && grabbed
- accumulate the SpaceMouse delta in HeldObjectController
- compose ourDelta * vanilla.physRotation and write it back
- mirror to nextPhysRotation in case downstream reads from that field

Three new diag log lines (each fires once per session):
- 'PhysGrabber.Update POSTFIX firing.' — confirms the new postfix
- 'First time observing grabbed=true on local PhysGrabber.' — confirms
  we hit the holding branch
- 'First rotation write: before=(...) delta=(...)' — confirms we
  computed and wrote a non-identity rotation

Stub PhysGrabber.cs adds nextPhysRotation since we now write to it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>