1
0
mirror of https://github.com/misternebula/quantum-space-buddies.git synced 2025-03-02 19:13:34 +00:00
This commit is contained in:
JohnCorby 2022-01-16 06:11:44 -08:00
parent 5b8f51afdd
commit 1f4c06561b
12 changed files with 42 additions and 54 deletions
QSB
Anglerfish/TransformSync
JellyfishSync/TransformSync
OrbSync/TransformSync
Player/TransformSync
ShipSync/TransformSync
Syncs
Tools/ProbeTool/TransformSync
TornadoSync/TransformSync

@ -10,9 +10,9 @@ namespace QSB.Anglerfish.TransformSync
{
public class AnglerTransformSync : UnsectoredRigidbodySync
{
public override bool IsReady => WorldObjectManager.AllObjectsAdded;
public override bool UseInterpolation => false;
public override bool IsPlayerObject => false;
protected override bool IsReady => WorldObjectManager.AllObjectsAdded;
protected override bool UseInterpolation => false;
protected override bool IsPlayerObject => false;
private QSBAngler _qsbAngler;
private static readonly List<AnglerTransformSync> _instances = new();
@ -97,8 +97,7 @@ namespace QSB.Anglerfish.TransformSync
protected override void OnRenderObject()
{
if (!QSBCore.ShowLinesInDebug
|| !WorldObjectManager.AllObjectsReady
|| !IsReady
|| !IsInitialized
|| AttachedRigidbody == null
|| AttachedRigidbody.IsSuspended())
{

@ -11,9 +11,9 @@ namespace QSB.JellyfishSync.TransformSync
{
public class JellyfishTransformSync : UnsectoredRigidbodySync
{
public override bool IsReady => WorldObjectManager.AllObjectsAdded;
public override bool UseInterpolation => false;
public override bool IsPlayerObject => false;
protected override bool IsReady => WorldObjectManager.AllObjectsAdded;
protected override bool UseInterpolation => false;
protected override bool IsPlayerObject => false;
private QSBJellyfish _qsbJellyfish;
private static readonly List<JellyfishTransformSync> _instances = new();
@ -144,8 +144,7 @@ namespace QSB.JellyfishSync.TransformSync
protected override void OnRenderObject()
{
if (!QSBCore.ShowLinesInDebug
|| !WorldObjectManager.AllObjectsReady
|| !IsReady
|| !IsInitialized
|| AttachedRigidbody == null
|| ReferenceTransform == null
|| AttachedRigidbody.IsSuspended())

@ -11,9 +11,9 @@ namespace QSB.OrbSync.TransformSync
{
public class NomaiOrbTransformSync : UnsectoredTransformSync
{
public override bool IsReady => WorldObjectManager.AllObjectsAdded;
public override bool UseInterpolation => true;
public override bool IsPlayerObject => false;
protected override bool IsReady => WorldObjectManager.AllObjectsAdded;
protected override bool UseInterpolation => true;
protected override bool IsPlayerObject => false;
protected override float DistanceLeeway => 1f;
protected override Transform InitLocalTransform() => _qsbOrb.AttachedObject.transform;

@ -15,7 +15,7 @@ namespace QSB.Player.TransformSync
{
public class PlayerTransformSync : SectoredTransformSync
{
public override bool IsPlayerObject => true;
protected override bool IsPlayerObject => true;
private Transform _visibleCameraRoot;
private Transform _networkCameraRoot => gameObject.transform.GetChild(0);
@ -267,8 +267,7 @@ namespace QSB.Player.TransformSync
base.OnRenderObject();
if (!QSBCore.ShowLinesInDebug
|| !WorldObjectManager.AllObjectsReady
|| !IsReady
|| !IsInitialized
|| ReferenceTransform == null)
{
return;
@ -286,12 +285,12 @@ namespace QSB.Player.TransformSync
Popcron.Gizmos.Cube(_visibleCameraRoot.position, _visibleCameraRoot.rotation, Vector3.one / 4, Color.grey);
}
public override bool IsReady
protected override bool IsReady
=> AttachedTransform != null
|| Locator.GetPlayerTransform() != null;
public static PlayerTransformSync LocalInstance { get; private set; }
public override bool UseInterpolation => true;
protected override bool UseInterpolation => true;
}
}

@ -10,12 +10,12 @@ namespace QSB.ShipSync.TransformSync
{
public static ShipTransformSync LocalInstance { get; private set; }
public override bool IsPlayerObject => false;
protected override bool IsPlayerObject => false;
private const int ForcePositionAfterUpdates = 50;
private int _updateCount;
public override bool IsReady
protected override bool IsReady
=> Locator.GetShipBody() != null;
public override void Start()
@ -94,6 +94,6 @@ namespace QSB.ShipSync.TransformSync
rigidbody._currentVelocity = newVelocity;
}
public override bool UseInterpolation => false;
protected override bool UseInterpolation => false;
}
}

@ -9,8 +9,8 @@ namespace QSB.Syncs.Sectored
{
public abstract class BaseSectoredSync : SyncBase
{
public override bool AllowDisabledAttachedObject => false;
public override bool AllowNullReferenceTransform => true;
protected override bool AllowDisabledAttachedObject => false;
protected override bool AllowNullReferenceTransform => true;
public QSBSector ReferenceSector { get; private set; }
public SectorSync.SectorSync SectorSync { get; private set; }
@ -38,18 +38,6 @@ namespace QSB.Syncs.Sectored
SetReferenceSector(null);
}
protected override void Update()
{
if (ReferenceSector != null && ReferenceSector.Transform != ReferenceTransform)
{
DebugLog.ToConsole($"Warning - {LogName} : ReferenceSector.Transform was different to ReferenceTransform. Correcting...", MessageType.Warning);
SetReferenceTransform(ReferenceSector.Transform);
}
// todo all the check in base
base.Update();
}
protected override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);

@ -7,7 +7,7 @@ namespace QSB.Syncs.Sectored.Rigidbodies
{
public abstract class SectoredRigidbodySync : BaseSectoredSync
{
public override bool DestroyAttachedObject => false;
protected override bool DestroyAttachedObject => false;
public const float PositionMovedThreshold = 0.05f;
public const float AngleRotatedThreshold = 0.05f;

@ -8,7 +8,7 @@ namespace QSB.Syncs.Sectored.Transforms
{
public abstract class SectoredTransformSync : BaseSectoredSync
{
public override bool DestroyAttachedObject => true;
protected override bool DestroyAttachedObject => true;
protected abstract Transform InitLocalTransform();
protected abstract Transform InitRemoteTransform();

@ -46,12 +46,13 @@ namespace QSB.Syncs
}
}
public abstract bool IsReady { get; }
public abstract bool UseInterpolation { get; }
public abstract bool AllowDisabledAttachedObject { get; }
public abstract bool AllowNullReferenceTransform { get; }
public abstract bool DestroyAttachedObject { get; }
public abstract bool IsPlayerObject { get; }
protected abstract bool IsReady { get; }
protected abstract bool UseInterpolation { get; }
protected abstract bool AllowDisabledAttachedObject { get; }
protected abstract bool AllowNullReferenceTransform { get; }
protected abstract bool DestroyAttachedObject { get; }
protected abstract bool IsPlayerObject { get; }
protected virtual bool OnlyUpdateOnDeserialize => false;
public Transform AttachedTransform { get; private set; }
public Transform ReferenceTransform { get; private set; }
@ -69,6 +70,8 @@ namespace QSB.Syncs
protected Quaternion SmoothRotation;
protected abstract Transform InitAttachedTransform();
// protected abstract bool GetFromAttached();
// protected abstract bool ApplyToAttached();
protected abstract bool UpdateTransform();
public virtual void Start()
@ -114,7 +117,7 @@ namespace QSB.Syncs
protected virtual void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse) => IsInitialized = false;
protected override void Update()
protected sealed override void Update()
{
if (!IsInitialized && IsReady && _baseIsReady)
{

@ -2,8 +2,8 @@
{
public abstract class BaseUnsectoredSync : SyncBase
{
public override bool AllowDisabledAttachedObject => false;
public override bool AllowNullReferenceTransform => false;
public override bool DestroyAttachedObject => false;
protected override bool AllowDisabledAttachedObject => false;
protected override bool AllowNullReferenceTransform => false;
protected override bool DestroyAttachedObject => false;
}
}

@ -11,9 +11,9 @@ namespace QSB.Tools.ProbeTool.TransformSync
public class PlayerProbeSync : SectoredTransformSync
{
protected override float DistanceLeeway => 10f;
public override bool UseInterpolation => true;
public override bool AllowDisabledAttachedObject => true;
public override bool IsPlayerObject => true;
protected override bool UseInterpolation => true;
protected override bool AllowDisabledAttachedObject => true;
protected override bool IsPlayerObject => true;
public static PlayerProbeSync LocalInstance { get; private set; }
@ -111,6 +111,6 @@ namespace QSB.Tools.ProbeTool.TransformSync
return true;
}
public override bool IsReady => AttachedTransform != null || Locator.GetProbe() != null;
protected override bool IsReady => AttachedTransform != null || Locator.GetProbe() != null;
}
}

@ -13,11 +13,11 @@ namespace QSB.TornadoSync.TransformSync
{
public class OccasionalTransformSync : UnsectoredRigidbodySync
{
public override bool IsReady => WorldObjectManager.AllObjectsReady
protected override bool IsReady => WorldObjectManager.AllObjectsReady
&& CenterOfTheUniverse.s_rigidbodies.IsInRange(_bodyIndex)
&& CenterOfTheUniverse.s_rigidbodies.IsInRange(_refBodyIndex);
public override bool UseInterpolation => false;
public override bool IsPlayerObject => false;
protected override bool UseInterpolation => false;
protected override bool IsPlayerObject => false;
protected override OWRigidbody InitAttachedRigidbody() => CenterOfTheUniverse.s_rigidbodies[_bodyIndex];