2021-11-13 16:57:06 -08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using QSB.MeteorSync.WorldObjects;
|
|
|
|
|
using QSB.Syncs.Unsectored.Rigidbodies;
|
|
|
|
|
using QSB.WorldSync;
|
2021-11-13 19:42:39 -08:00
|
|
|
|
using QuantumUNET.Transport;
|
2021-11-13 16:57:06 -08:00
|
|
|
|
|
|
|
|
|
namespace QSB.MeteorSync.TransformSync
|
|
|
|
|
{
|
|
|
|
|
public class MeteorTransformSync : UnsectoredRigidbodySync
|
|
|
|
|
{
|
2021-11-13 21:15:01 -08:00
|
|
|
|
public override bool IsReady => MeteorManager.Ready;
|
2021-11-13 16:57:06 -08:00
|
|
|
|
public override bool UseInterpolation => false;
|
|
|
|
|
|
|
|
|
|
private QSBMeteor _qsbMeteor;
|
|
|
|
|
private static readonly List<MeteorTransformSync> _instances = new List<MeteorTransformSync>();
|
|
|
|
|
|
|
|
|
|
protected override OWRigidbody GetRigidbody()
|
|
|
|
|
=> _qsbMeteor.AttachedObject.owRigidbody;
|
|
|
|
|
|
|
|
|
|
public override void Start()
|
|
|
|
|
{
|
|
|
|
|
_instances.Add(this);
|
|
|
|
|
base.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
_instances.Remove(this);
|
|
|
|
|
base.OnDestroy();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override float GetNetworkSendInterval()
|
|
|
|
|
=> 5f;
|
|
|
|
|
|
|
|
|
|
protected override void Init()
|
|
|
|
|
{
|
|
|
|
|
_qsbMeteor = QSBWorldSync.GetWorldFromId<QSBMeteor>(_instances.IndexOf(this));
|
|
|
|
|
_qsbMeteor.TransformSync = this;
|
|
|
|
|
|
|
|
|
|
base.Init();
|
|
|
|
|
SetReferenceTransform(Locator._brittleHollow.transform);
|
2021-11-13 19:42:39 -08:00
|
|
|
|
}
|
|
|
|
|
|
2021-11-13 16:57:06 -08:00
|
|
|
|
|
2021-11-13 19:42:39 -08:00
|
|
|
|
private bool _shouldUpdate;
|
|
|
|
|
|
|
|
|
|
public override void DeserializeTransform(QNetworkReader reader, bool initialState)
|
|
|
|
|
{
|
|
|
|
|
base.DeserializeTransform(reader, initialState);
|
|
|
|
|
_shouldUpdate = true;
|
2021-11-13 16:57:06 -08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override bool UpdateTransform()
|
|
|
|
|
{
|
2021-11-13 19:42:39 -08:00
|
|
|
|
if (HasAuthority)
|
2021-11-13 16:57:06 -08:00
|
|
|
|
{
|
|
|
|
|
return base.UpdateTransform();
|
|
|
|
|
}
|
2021-11-13 19:42:39 -08:00
|
|
|
|
|
|
|
|
|
if (!_shouldUpdate)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
_shouldUpdate = false;
|
|
|
|
|
return base.UpdateTransform();
|
2021-11-13 16:57:06 -08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected override void OnRenderObject()
|
|
|
|
|
{
|
2021-11-13 21:15:01 -08:00
|
|
|
|
if (!MeteorManager.Ready
|
2021-11-13 16:57:06 -08:00
|
|
|
|
|| !QSBCore.DebugMode
|
|
|
|
|
|| !QSBCore.ShowLinesInDebug
|
|
|
|
|
|| !IsReady
|
|
|
|
|
|| ReferenceTransform == null
|
|
|
|
|
|| _intermediaryTransform.GetReferenceTransform() == null
|
|
|
|
|
|| _qsbMeteor.AttachedObject.isSuspended)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
base.OnRenderObject();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|