diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 8a93268a..e69c5355 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -178,7 +178,10 @@ namespace QSB offset3 += _debugLineSpacing; GUI.Label(new Rect(420, offset3, 200f, 20f), $"Ship sector : {(ship.ReferenceSector == null ? "NULL" : ship.ReferenceSector.Name)}"); offset3 += _debugLineSpacing; - GUI.Label(new Rect(420, offset3, 200f, 20f), $"Ship relative velocity : {ship.AttachedObject.GetRelativeVelocity(ship.ReferenceTransform.GetAttachedOWRigidbody())}"); + GUI.Label(new Rect(420, offset3, 400f, 20f), $"Ship relative velocity : {ship.AttachedObject.GetRelativeVelocity(ship.ReferenceTransform.GetAttachedOWRigidbody())}"); + offset3 += _debugLineSpacing; + offset3 += _debugLineSpacing; + GUI.Label(new Rect(420, offset3, 400f, 20f), $"Ship velocity mag. : {ship.GetVelocityChangeMagnitude()}"); offset3 += _debugLineSpacing; } diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index d944fda9..a8ac7e90 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -5,6 +5,7 @@ using QSB.Syncs.RigidbodySync; using QSB.Syncs.TransformSync; using QSB.Utility; using QSB.WorldSync; +using QuantumUNET; using System.Collections.Generic; using System.Linq; using UnityEngine; @@ -20,35 +21,23 @@ namespace QSB.SectorSync private void OnEnable() => RepeatingManager.Repeatings.Add(this); private void OnDisable() => RepeatingManager.Repeatings.Remove(this); + public List> SectoredSyncs = new List>(); + public void Invoke() { - foreach (var sync in SectoredTransformSync.SectoredNetworkTransformList) + foreach (var sync in SectoredSyncs) { if (sync.AttachedObject == null) { continue; } - if (sync.HasAuthority + if ((sync as QNetworkBehaviour).HasAuthority && sync.AttachedObject.gameObject.activeInHierarchy && sync.IsReady) { CheckTransformSyncSector(sync); } } - - foreach (var sync in SectoredRigidbodySync.SectoredNetworkTransformList) - { - if (sync.AttachedObject == null) - { - continue; - } - if (sync.HasAuthority - && sync.AttachedObject.gameObject.activeInHierarchy - && sync.IsReady) - { - CheckTransformSyncSector(sync); - } - } } public override void Awake() diff --git a/QSB/ShipSync/Events/FlyShipEvent.cs b/QSB/ShipSync/Events/FlyShipEvent.cs index 35eeb13b..0b211538 100644 --- a/QSB/ShipSync/Events/FlyShipEvent.cs +++ b/QSB/ShipSync/Events/FlyShipEvent.cs @@ -57,6 +57,7 @@ namespace QSB.ShipSync.Events ? id : uint.MaxValue; + /* if (id == uint.MaxValue) { DebugLog.DebugWrite($"ShipDetector setactive {QSBCore.IsServer}"); @@ -72,6 +73,7 @@ namespace QSB.ShipSync.Events DebugLog.DebugWrite($"Disable ship detector"); Locator.GetShipDetector().SetActive(false); } + */ if (QSBCore.IsServer) { diff --git a/QSB/Syncs/RigidbodySync/SectoredRigidbodySync.cs b/QSB/Syncs/RigidbodySync/SectoredRigidbodySync.cs index a4d74ae6..91c5d575 100644 --- a/QSB/Syncs/RigidbodySync/SectoredRigidbodySync.cs +++ b/QSB/Syncs/RigidbodySync/SectoredRigidbodySync.cs @@ -10,20 +10,19 @@ namespace QSB.Syncs.RigidbodySync { public QSBSector ReferenceSector { get; set; } public SectorSync.SectorSync SectorSync { get; private set; } - public static List SectoredNetworkTransformList = new List(); public abstract TargetType Type { get; } public override void Start() { SectorSync = gameObject.AddComponent(); - SectoredNetworkTransformList.Add(this); + QSBSectorManager.Instance.SectoredSyncs.Add((ISectoredSync)this); base.Start(); } protected override void OnDestroy() { base.OnDestroy(); - SectoredNetworkTransformList.Remove(this); + QSBSectorManager.Instance.SectoredSyncs.Remove((ISectoredSync)this); if (SectorSync != null) { Destroy(SectorSync); diff --git a/QSB/Syncs/RigidbodySync/UnparentedBaseRigidbodySync.cs b/QSB/Syncs/RigidbodySync/UnparentedBaseRigidbodySync.cs index 4698e410..56dd0d33 100644 --- a/QSB/Syncs/RigidbodySync/UnparentedBaseRigidbodySync.cs +++ b/QSB/Syncs/RigidbodySync/UnparentedBaseRigidbodySync.cs @@ -177,8 +177,8 @@ namespace QSB.Syncs.RigidbodySync return; } - AttachedObject.SetPosition(targetPos); - AttachedObject.SetRotation(targetRot); + AttachedObject.transform.position = targetPos; + AttachedObject.transform.rotation = targetRot; AttachedObject.SetVelocity(ReferenceTransform.GetAttachedOWRigidbody().GetVelocity() + _velocity); AttachedObject.SetAngularVelocity(ReferenceTransform.GetAttachedOWRigidbody().GetAngularVelocity() + _angularVelocity); } @@ -220,6 +220,9 @@ namespace QSB.Syncs.RigidbodySync return false; } + public float GetVelocityChangeMagnitude() + => (_velocity - _prevVelocity).magnitude; + private void OnRenderObject() { if (!QSBCore.WorldObjectsReady || !QSBCore.DebugMode || !QSBCore.ShowLinesInDebug || !IsReady) diff --git a/QSB/Syncs/TransformSync/SectoredTransformSync.cs b/QSB/Syncs/TransformSync/SectoredTransformSync.cs index 7a2214fe..3aeae708 100644 --- a/QSB/Syncs/TransformSync/SectoredTransformSync.cs +++ b/QSB/Syncs/TransformSync/SectoredTransformSync.cs @@ -11,20 +11,19 @@ namespace QSB.Syncs.TransformSync { public QSBSector ReferenceSector { get; set; } public SectorSync.SectorSync SectorSync { get; private set; } - public static List SectoredNetworkTransformList = new List(); public abstract TargetType Type { get; } public override void Start() { SectorSync = gameObject.AddComponent(); - SectoredNetworkTransformList.Add(this); + QSBSectorManager.Instance.SectoredSyncs.Add((ISectoredSync)this); base.Start(); } protected override void OnDestroy() { base.OnDestroy(); - SectoredNetworkTransformList.Remove(this); + QSBSectorManager.Instance.SectoredSyncs.Remove((ISectoredSync)this); if (SectorSync != null) { Destroy(SectorSync);