mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-04 07:19:22 +00:00
[RelativeSync] Changes
This commit is contained in:
parent
ce6582ae18
commit
d22bc80b4d
5 changed files with 39 additions and 19 deletions
|
@ -3,7 +3,7 @@ using UnityEngine;
|
|||
|
||||
namespace NAK.RelativeSync.Components;
|
||||
|
||||
[DefaultExecutionOrder(int.MaxValue)] // make sure this runs after NetIKController
|
||||
[DefaultExecutionOrder(9000)] // make sure this runs after NetIKController, but before Totally Wholesome LineController (9999)
|
||||
public class RelativeSyncController : MonoBehaviour
|
||||
{
|
||||
private const float MaxMagnitude = 750000000000f;
|
||||
|
@ -35,12 +35,15 @@ public class RelativeSyncController : MonoBehaviour
|
|||
|
||||
private void LateUpdate()
|
||||
{
|
||||
if (puppetMaster._isHidden)
|
||||
return;
|
||||
// if (puppetMaster._isHidden)
|
||||
// return;
|
||||
|
||||
if (_relativeSyncMarker == null)
|
||||
return;
|
||||
|
||||
if (!_relativeSyncMarker.IsComponentActive)
|
||||
return;
|
||||
|
||||
Animator animator = puppetMaster._animator;
|
||||
if (animator == null)
|
||||
return;
|
||||
|
@ -66,7 +69,7 @@ public class RelativeSyncController : MonoBehaviour
|
|||
// TODO: handle the case where hip is not synced but is found on remote client
|
||||
|
||||
float lerp = Mathf.Min((Time.time - _lastUpdate) / _updateInterval, 1f);
|
||||
|
||||
|
||||
ApplyRelativeRotation(avatarTransform, hipTrans, lerp);
|
||||
ApplyRelativePosition(hipTrans, lerp);
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using ABI_RC.Core.Player;
|
||||
using ABI_RC.Core.InteractionSystem;
|
||||
using ABI_RC.Core.Player;
|
||||
using ABI_RC.Core.Savior;
|
||||
using ABI.CCK.Components;
|
||||
using UnityEngine;
|
||||
|
@ -9,10 +10,15 @@ public class RelativeSyncMarker : MonoBehaviour
|
|||
{
|
||||
public int pathHash { get; private set; }
|
||||
|
||||
public bool IsComponentActive
|
||||
=> _component.isActiveAndEnabled;
|
||||
|
||||
public bool ApplyRelativePosition = true;
|
||||
public bool ApplyRelativeRotation = true;
|
||||
public bool OnlyApplyRelativeHeading;
|
||||
|
||||
private MonoBehaviour _component;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
string path = GetGameObjectPath(transform);
|
||||
|
@ -42,8 +48,12 @@ public class RelativeSyncMarker : MonoBehaviour
|
|||
|
||||
private void ConfigureForPotentialMovementParent()
|
||||
{
|
||||
if (!gameObject.TryGetComponent(out CVRMovementParent movementParent))
|
||||
if (!gameObject.TryGetComponent(out CVRMovementParent movementParent))
|
||||
{
|
||||
_component = GetComponent<CVRSeat>(); // users cant animate enabled state so i dont think matters
|
||||
return;
|
||||
}
|
||||
_component = movementParent;
|
||||
|
||||
// TODO: a refactor may be needed to handle the orientation mode being animated
|
||||
|
||||
|
|
|
@ -15,15 +15,22 @@ public static class RelativeSyncManager
|
|||
public static void ApplyRelativeSync(string userId, int target, Vector3 position, Vector3 rotation)
|
||||
{
|
||||
if (!RelativeSyncControllers.TryGetValue(userId, out RelativeSyncController controller))
|
||||
if (CVRPlayerManager.Instance.GetPlayerPuppetMaster(userId, out PuppetMaster pm))
|
||||
controller = pm.AddComponentIfMissing<RelativeSyncController>();
|
||||
|
||||
if (controller == null)
|
||||
{
|
||||
RelativeSyncMod.Logger.Error($"Failed to apply relative sync for user {userId}");
|
||||
return;
|
||||
if (CVRPlayerManager.Instance.GetPlayerPuppetMaster(userId, out PuppetMaster pm))
|
||||
{
|
||||
controller = pm.AddComponentIfMissing<RelativeSyncController>();
|
||||
RelativeSyncMod.Logger.Msg($"Found PuppetMaster for user {userId}. This user is now eligible for relative sync.");
|
||||
}
|
||||
else
|
||||
{
|
||||
RelativeSyncControllers.Add(userId, null); // add null controller to prevent future lookups
|
||||
RelativeSyncMod.Logger.Warning($"Failed to find PuppetMaster for user {userId}. This is likely because the user is blocked or has blocked you. This user will not be eligible for relative sync until next game restart.");
|
||||
}
|
||||
}
|
||||
|
||||
if (controller == null)
|
||||
return;
|
||||
|
||||
// find target transform
|
||||
RelativeSyncMarker syncMarker = null;
|
||||
if (target != NoTarget) RelativeSyncTransforms.TryGetValue(target, out syncMarker);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue