[OriginShift] Fix Spawnable & Object Sync cached net pos

This commit is contained in:
NotAKidoS 2024-06-18 15:47:03 -05:00
parent ab8ccbb67f
commit 512ffe38b8
3 changed files with 100 additions and 1 deletions

View file

@ -0,0 +1,46 @@
using ABI.CCK.Components;
using UnityEngine;
namespace NAK.OriginShift;
public class OriginShiftObjectSyncReceiver : MonoBehaviour
{
private CVRObjectSync _objectSync;
#region Unity Events
private void Start()
{
_objectSync = GetComponent<CVRObjectSync>();
if (_objectSync == null)
{
OriginShiftMod.Logger.Error("OriginShiftObjectSyncReceiver: No CVRObjectSync found on GameObject: " + gameObject.name, this);
enabled = false;
}
OriginShiftManager.OnOriginShifted += OnOriginShifted;
}
private void OnEnable()
{
OriginShiftManager.OnOriginShifted += OnOriginShifted;
}
private void OnDisable()
{
OriginShiftManager.OnOriginShifted -= OnOriginShifted;
}
#endregion Unity Events
#region Origin Shift Events
private void OnOriginShifted(Vector3 shift)
{
// idc, just shift all of them
_objectSync._oldData.position += shift;
_objectSync._currData.position += shift;
_objectSync._futureData.position += shift;
}
#endregion Origin Shift Events
}

View file

@ -0,0 +1,45 @@
using ABI.CCK.Components;
using UnityEngine;
namespace NAK.OriginShift;
public class OriginShiftSpawnableReceiver : MonoBehaviour
{
private CVRSpawnable _spawnable;
#region Unity Events
private void Start()
{
_spawnable = GetComponent<CVRSpawnable>();
if (_spawnable == null)
{
OriginShiftMod.Logger.Error("OriginShiftSpawnableReceiver: No CVRSpawnable found on GameObject: " + gameObject.name, this);
enabled = false;
}
OriginShiftManager.OnOriginShifted += OnOriginShifted;
}
private void OnEnable()
{
OriginShiftManager.OnOriginShifted += OnOriginShifted;
}
private void OnDisable()
{
OriginShiftManager.OnOriginShifted -= OnOriginShifted;
}
#endregion Unity Events
#region Origin Shift Events
private void OnOriginShifted(Vector3 shift)
{
_spawnable.futurePosition += shift;
_spawnable.currentPosition += shift;
_spawnable.pastPosition += shift; // not used by game, just cached ?
}
#endregion Origin Shift Events
}