From 3c0cdcb0763ac126ca73c6335fbc5840d91a79ee Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Mon, 13 Dec 2021 21:52:59 -0800 Subject: [PATCH] simplify, handle edge cases --- QSB/OrbSync/Events/OrbUserEvent.cs | 4 ++-- QSB/OrbSync/Patches/OrbPatches.cs | 4 ++-- QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs | 12 +++++------- QSB/QSBNetworkManager.cs | 1 + QSB/ShipSync/TransformSync/ShipTransformSync.cs | 1 - 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 870facac..548e6c0f 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -57,7 +57,7 @@ namespace QSB.OrbSync.Events } orbSync.enabled = true; - if (!isLocal) + if (!isLocal && !orbSync.Orb._isBeingDragged) { orbSync.Orb._isBeingDragged = true; orbSync.Orb._interactibleCollider.enabled = false; @@ -69,7 +69,7 @@ namespace QSB.OrbSync.Events } else { - if (!isLocal) + if (!isLocal && orbSync.Orb._isBeingDragged) { orbSync.Orb._isBeingDragged = false; orbSync.Orb._interactibleCollider.enabled = true; diff --git a/QSB/OrbSync/Patches/OrbPatches.cs b/QSB/OrbSync/Patches/OrbPatches.cs index 1c9b20c8..dc6f1da9 100644 --- a/QSB/OrbSync/Patches/OrbPatches.cs +++ b/QSB/OrbSync/Patches/OrbPatches.cs @@ -25,12 +25,12 @@ namespace QSB.OrbSync.Patches } } - [HarmonyPostfix] + [HarmonyPrefix] [HarmonyPatch(typeof(NomaiInterfaceOrb), nameof(NomaiInterfaceOrb.CancelDrag))] public static void NomaiInterfaceOrb_CancelDrag(NomaiInterfaceOrb __instance) { var index = OrbManager.Orbs.IndexOf(__instance); - if (index != -1) + if (index != -1 && __instance._isBeingDragged) { QSBEventManager.FireEvent(EventNames.QSBOrbUser, index, false); } diff --git a/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs b/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs index ef3c6734..a995db36 100644 --- a/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs @@ -76,14 +76,13 @@ namespace QSB.OrbSync.TransformSync protected override bool UpdateTransform() { - if (!base.UpdateTransform()) + if (HasAuthority) { - return false; + transform.position = ReferenceTransform.ToRelPos(AttachedObject.position); } - - if (!HasAuthority) + else { - Orb.SetTargetPosition(AttachedObject.position); + Orb.SetTargetPosition(ReferenceTransform.FromRelPos(transform.position)); } return true; @@ -92,8 +91,7 @@ namespace QSB.OrbSync.TransformSync protected override Transform InitLocalTransform() => GetTransform(); protected override Transform InitRemoteTransform() => GetTransform(); - protected override float DistanceLeeway => 1f; public override bool IsReady => WorldObjectManager.AllObjectsReady; - public override bool UseInterpolation => true; + public override bool UseInterpolation => false; } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index d3b68fbb..a9246d4d 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -246,6 +246,7 @@ namespace QSB if (identity.ClientAuthorityOwner == conn) { identity.SetAuthority(QSBPlayerManager.LocalPlayerId); + item.Orb.CancelDrag(); } } diff --git a/QSB/ShipSync/TransformSync/ShipTransformSync.cs b/QSB/ShipSync/TransformSync/ShipTransformSync.cs index 64b56128..6e15ffca 100644 --- a/QSB/ShipSync/TransformSync/ShipTransformSync.cs +++ b/QSB/ShipSync/TransformSync/ShipTransformSync.cs @@ -101,6 +101,5 @@ namespace QSB.ShipSync.TransformSync } public override bool UseInterpolation => false; - protected override float DistanceLeeway => 20f; } }