VRTrackerManager controller swap fix & IKSystem tweak.

This commit is contained in:
NotAKidoS 2023-02-18 06:25:51 -06:00
parent 4ca30fe5cd
commit 81e734ec8f
9 changed files with 95 additions and 13 deletions

View file

@ -6,7 +6,6 @@ namespace NAK.Melons.DesktopVRSwitch.Patches;
public class MovementSystemTracker : MonoBehaviour
{
public MovementSystem movementSystem;
public Vector3 preSwitchWorldPosition;
public Quaternion preSwitchWorldRotation;
@ -25,8 +24,16 @@ public class MovementSystemTracker : MonoBehaviour
public void PreVRModeSwitch(bool enterVR, Camera activeCamera)
{
preSwitchWorldPosition = movementSystem.rotationPivot.transform.position;
//correct rotationPivot y position, so we dont teleport up/down
Vector3 position = movementSystem.rotationPivot.transform.position;
position.y = movementSystem.transform.position.y;
preSwitchWorldPosition = position;
preSwitchWorldRotation = movementSystem.rotationPivot.transform.rotation;
//ChilloutVR does not use VRIK root right, so avatar root is VR player root.
//This causes desync between VR and Desktop positions & collision on switch.
//I correct for this in lazy way, but i use rotationPivot instead of avatar root,
//so the user can still switch even if avatar is null (if it failed to load for example).
}
public void PostVRModeSwitch(bool enterVR, Camera activeCamera)