mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-03 06:49:22 +00:00
Compare commits
2 commits
6249696efa
...
364de89b30
Author | SHA1 | Date | |
---|---|---|---|
|
364de89b30 | ||
|
fea10ac221 |
3 changed files with 18 additions and 23 deletions
|
@ -6,6 +6,7 @@ using ABI.CCK.Components;
|
|||
using HarmonyLib;
|
||||
using NAK.RelativeSync.Components;
|
||||
using NAK.RelativeSync.Networking;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NAK.RelativeSync.Patches;
|
||||
|
||||
|
@ -27,20 +28,6 @@ internal static class PuppetMasterPatches
|
|||
{
|
||||
__instance.AddComponentIfMissing<RelativeSyncController>();
|
||||
}
|
||||
|
||||
private static bool ShouldProcessAvatarVisibility { get; set; }
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(PuppetMaster), nameof(PuppetMaster.ProcessAvatarVisibility))]
|
||||
private static bool Prefix_PuppetMaster_ProcessAvatarVisibility()
|
||||
=> ShouldProcessAvatarVisibility;
|
||||
|
||||
public static void ForceProcessAvatarVisibility(PuppetMaster puppetMaster)
|
||||
{
|
||||
ShouldProcessAvatarVisibility = true;
|
||||
puppetMaster.ProcessAvatarVisibility();
|
||||
ShouldProcessAvatarVisibility = false;
|
||||
}
|
||||
}
|
||||
|
||||
internal static class CVRSeatPatches
|
||||
|
@ -104,16 +91,18 @@ internal static class NetIKController_Patches
|
|||
{
|
||||
if (!RelativeSyncManager.NetIkControllersToRelativeSyncControllers.TryGetValue(__instance,
|
||||
out RelativeSyncController syncController))
|
||||
{
|
||||
// Process visibility only after applying network IK
|
||||
PuppetMasterPatches.ForceProcessAvatarVisibility(__instance._puppetMaster);
|
||||
return;
|
||||
}
|
||||
|
||||
// Apply relative sync after the network IK has been applied
|
||||
syncController.OnPostNetIkControllerLateUpdate();
|
||||
|
||||
// Process visibility after we have moved the remote player
|
||||
PuppetMasterPatches.ForceProcessAvatarVisibility(__instance._puppetMaster);
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(NetIKController), nameof(NetIKController.GetLocalPlayerPosition))]
|
||||
private static bool Prefix_NetIKController_GetLocalPlayerPosition(ref NetIKController __instance, ref Vector3 __result)
|
||||
{
|
||||
// why is the original method so bad
|
||||
__result = PlayerSetup.Instance.activeCam.transform.position;
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
using ABI_RC.Core.Player;
|
||||
using ABI_RC.Systems.Movement;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NAK.RelativeSync.Components;
|
||||
|
@ -62,7 +63,7 @@ public class RelativeSyncController : MonoBehaviour
|
|||
Animator animator = puppetMaster._animator;
|
||||
if (animator == null)
|
||||
return;
|
||||
|
||||
|
||||
Transform avatarTransform = animator.transform;
|
||||
Transform hipTrans = (animator.avatar != null && animator.isHuman)
|
||||
? animator.GetBoneTransform(HumanBodyBones.Hips) : null;
|
||||
|
@ -97,6 +98,11 @@ public class RelativeSyncController : MonoBehaviour
|
|||
hipTrans.position = transform.position + transform.rotation * relativeHipPos;
|
||||
hipTrans.rotation = transform.rotation * relativeHipRot;
|
||||
}
|
||||
|
||||
// Reprocess the root distance so we don't fuck avatar distance hider
|
||||
NetIKController netIkController = puppetMaster.netIkController;
|
||||
netIkController._rootDistance = Vector3.Distance((netIkController._collider.transform.position + netIkController._collider.center),
|
||||
netIkController.GetLocalPlayerPosition()) - (netIkController._collider.radius + BetterBetterCharacterController.Instance.Radius);
|
||||
}
|
||||
|
||||
private void ApplyRelativeRotation(Transform avatarTransform, Transform hipTransform, float lerp)
|
||||
|
|
|
@ -18,6 +18,6 @@
|
|||
],
|
||||
"downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/RelativeSync.dll",
|
||||
"sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/RelativeSync/",
|
||||
"changelog": "- Recompiled for 2025r179\n- Fixed execution order of RelativeSyncController & PuppetMaster.ProcessAvatarVisibility, so moving at high speeds with passengers does not disrupt voice or avatar distance hider",
|
||||
"changelog": "- Recompiled for 2025r179\n- Fixed execution order of RelativeSyncController so moving at high speeds with passengers does not disrupt voice or avatar distance hider",
|
||||
"embedcolor": "#f61963"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue