From a371c71415ce303e1f775e4764e3e4ce3d0f3b78 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 10 Nov 2021 21:59:32 -0800 Subject: [PATCH] dont process events if world objects arent ready yet lol --- QSB/MeteorSync/Events/MeteorImpactEvent.cs | 5 +++++ QSB/MeteorSync/Events/MeteorLaunchEvent.cs | 5 +++++ QSB/MeteorSync/Events/MeteorResyncEvent.cs | 8 ++++++++ QSB/MeteorSync/MeteorManager.cs | 4 ++-- QSB/MeteorSync/Patches/MeteorClientPatches.cs | 6 ------ QSB/MeteorSync/TransformSync/MeteorTransformSync.cs | 2 +- QSB/MeteorSync/WorldObjects/QSBMeteor.cs | 5 ++--- QSB/MeteorSync/WorldObjects/QSBMeteorLauncher.cs | 3 +-- 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/QSB/MeteorSync/Events/MeteorImpactEvent.cs b/QSB/MeteorSync/Events/MeteorImpactEvent.cs index 6cb3d19a..8e5e62e9 100644 --- a/QSB/MeteorSync/Events/MeteorImpactEvent.cs +++ b/QSB/MeteorSync/Events/MeteorImpactEvent.cs @@ -29,6 +29,11 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, MeteorImpactMessage message) { + if (!MeteorManager.MeteorsReady) + { + return; + } + var qsbMeteor = QSBWorldSync.GetWorldFromId(message.ObjectId); qsbMeteor.Impact(message.Position, message.RelativeVelocity, message.Damage); } diff --git a/QSB/MeteorSync/Events/MeteorLaunchEvent.cs b/QSB/MeteorSync/Events/MeteorLaunchEvent.cs index a6d418f6..a64ac4f7 100644 --- a/QSB/MeteorSync/Events/MeteorLaunchEvent.cs +++ b/QSB/MeteorSync/Events/MeteorLaunchEvent.cs @@ -26,6 +26,11 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, BoolWorldObjectMessage message) { + if (!WorldObjectManager.AllReady) + { + return; + } + var qsbMeteorLauncher = QSBWorldSync.GetWorldFromId(message.ObjectId); qsbMeteorLauncher.LaunchMeteor(message.State); } diff --git a/QSB/MeteorSync/Events/MeteorResyncEvent.cs b/QSB/MeteorSync/Events/MeteorResyncEvent.cs index 3e530df8..77effbbe 100644 --- a/QSB/MeteorSync/Events/MeteorResyncEvent.cs +++ b/QSB/MeteorSync/Events/MeteorResyncEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.MeteorSync.WorldObjects; +using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; using EventType = QSB.Events.EventType; @@ -28,8 +29,15 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, WorldObjectMessage message) { + if (!MeteorManager.MeteorsReady) + { + return; + } + var qsbMeteor = QSBWorldSync.GetWorldFromId(message.ObjectId); // todo + + DebugLog.DebugWrite($"{qsbMeteor.LogName} - resync requested"); } } } diff --git a/QSB/MeteorSync/MeteorManager.cs b/QSB/MeteorSync/MeteorManager.cs index e4f9cc64..d1c74f3e 100644 --- a/QSB/MeteorSync/MeteorManager.cs +++ b/QSB/MeteorSync/MeteorManager.cs @@ -6,7 +6,7 @@ namespace QSB.MeteorSync /// we have to do this fake bs public class MeteorManager : WorldObjectManager { - public new static bool AllReady; + public static bool MeteorsReady; protected override void RebuildWorldObjects(OWScene scene) { @@ -15,7 +15,7 @@ namespace QSB.MeteorSync QSBCore.UnityEvents.FireInNUpdates(() => { QSBWorldSync.Init(); - AllReady = true; + MeteorsReady = true; }, 10); } } diff --git a/QSB/MeteorSync/Patches/MeteorClientPatches.cs b/QSB/MeteorSync/Patches/MeteorClientPatches.cs index 78b0bda1..eccec173 100644 --- a/QSB/MeteorSync/Patches/MeteorClientPatches.cs +++ b/QSB/MeteorSync/Patches/MeteorClientPatches.cs @@ -1,6 +1,5 @@ using HarmonyLib; using OWML.Common; -using QSB.Events; using QSB.MeteorSync.WorldObjects; using QSB.Patches; using QSB.Player; @@ -73,11 +72,6 @@ namespace QSB.MeteorSync.Patches GameObject hitObject, Vector3 impactPoint, Vector3 impactVel) { var qsbMeteor = QSBWorldSync.GetWorldFromUnity(__instance); - if (hitObject == null) - { - DebugLog.DebugWrite($"{QSBPlayerManager.LocalPlayerId} {qsbMeteor.ObjectId} - oh no! hit obj is null (for now)", MessageType.Error); - return false; - } var componentInParent = hitObject.GetComponentInParent(); if (componentInParent != null) diff --git a/QSB/MeteorSync/TransformSync/MeteorTransformSync.cs b/QSB/MeteorSync/TransformSync/MeteorTransformSync.cs index fa3fb56c..7eed807d 100644 --- a/QSB/MeteorSync/TransformSync/MeteorTransformSync.cs +++ b/QSB/MeteorSync/TransformSync/MeteorTransformSync.cs @@ -7,7 +7,7 @@ namespace QSB.MeteorSync.TransformSync { public class MeteorTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => MeteorManager.AllReady; + public override bool IsReady => MeteorManager.MeteorsReady; public override bool UseInterpolation => true; private QSBMeteor _qsbMeteor; diff --git a/QSB/MeteorSync/WorldObjects/QSBMeteor.cs b/QSB/MeteorSync/WorldObjects/QSBMeteor.cs index ce7dc57f..2b23439a 100644 --- a/QSB/MeteorSync/WorldObjects/QSBMeteor.cs +++ b/QSB/MeteorSync/WorldObjects/QSBMeteor.cs @@ -1,5 +1,4 @@ using QSB.MeteorSync.TransformSync; -using QSB.Player; using QSB.Utility; using QSB.WorldSync; using QuantumUNET; @@ -45,7 +44,7 @@ namespace QSB.MeteorSync.WorldObjects QNetworkServer.Destroy(TransformSync.gameObject); } - MeteorManager.AllReady = false; + MeteorManager.MeteorsReady = false; } @@ -58,7 +57,7 @@ namespace QSB.MeteorSync.WorldObjects Damage = damage; // todo get object - AttachedObject.Impact(null, position, relativeVelocity); + // AttachedObject.Impact(null, position, relativeVelocity); } } } diff --git a/QSB/MeteorSync/WorldObjects/QSBMeteorLauncher.cs b/QSB/MeteorSync/WorldObjects/QSBMeteorLauncher.cs index fc9539f9..917ed772 100644 --- a/QSB/MeteorSync/WorldObjects/QSBMeteorLauncher.cs +++ b/QSB/MeteorSync/WorldObjects/QSBMeteorLauncher.cs @@ -1,5 +1,4 @@ -using QSB.Player; -using QSB.Utility; +using QSB.Utility; using QSB.WorldSync; namespace QSB.MeteorSync.WorldObjects