From c760fe2c41778bef296d9b5696d1ce41031d4364 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Thu, 2 Dec 2021 00:42:24 -0800 Subject: [PATCH 1/5] add support for delayed readiness in WorldObject and WorldObjectManager (also slightly optimize qsbworldsync) --- .../TransformSync/AnglerTransformSync.cs | 2 +- QSB/Anglerfish/WorldObjects/QSBAngler.cs | 16 ++++-- .../TransformSync/JellyfishTransformSync.cs | 2 +- .../WorldObjects/QSBJellyfish.cs | 16 ++++-- QSB/MeteorSync/Events/FragmentDamageEvent.cs | 2 +- QSB/MeteorSync/Events/FragmentResyncEvent.cs | 2 +- QSB/MeteorSync/Events/MeteorLaunchEvent.cs | 2 +- QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs | 2 +- .../Events/MeteorSpecialImpactEvent.cs | 2 +- QSB/MeteorSync/MeteorManager.cs | 6 +-- QSB/MeteorSync/Patches/MeteorClientPatches.cs | 2 +- QSB/MeteorSync/Patches/MeteorServerPatches.cs | 4 +- .../QSBMultiStateQuantumObject.cs | 25 +++++---- QSB/Syncs/SyncBase.cs | 2 +- QSB/WorldSync/IWorldObject.cs | 1 - QSB/WorldSync/QSBWorldSync.cs | 50 ++++++++--------- QSB/WorldSync/WorldObject.cs | 7 ++- QSB/WorldSync/WorldObjectManager.cs | 54 +++++++++++++------ 18 files changed, 116 insertions(+), 81 deletions(-) diff --git a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs index 3ed36de3..d37921ac 100644 --- a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs +++ b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs @@ -9,7 +9,7 @@ namespace QSB.Anglerfish.TransformSync { public class AnglerTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => QSBCore.WorldObjectsReady; + public override bool IsReady => WorldObjectManager.AllAdded; public override bool UseInterpolation => false; private QSBAngler _qsbAngler; diff --git a/QSB/Anglerfish/WorldObjects/QSBAngler.cs b/QSB/Anglerfish/WorldObjects/QSBAngler.cs index d9dc3642..dbf06475 100644 --- a/QSB/Anglerfish/WorldObjects/QSBAngler.cs +++ b/QSB/Anglerfish/WorldObjects/QSBAngler.cs @@ -22,13 +22,21 @@ namespace QSB.Anglerfish.WorldObjects if (QSBCore.IsHost) { QNetworkServer.Spawn(Object.Instantiate(QSBNetworkManager.Instance.AnglerPrefab)); - QSBCore.UnityEvents.RunWhen(() => TransformSync, () => - TransformSync.NetIdentity.RegisterAuthQueue()); } - // for when you host/connect mid-game + StartDelayedReady(); QSBCore.UnityEvents.RunWhen(() => TransformSync, () => - TransformSync.NetIdentity.FireAuthQueue(!AttachedObject._anglerBody.IsSuspended())); + { + FinishDelayedReady(); + + if (QSBCore.IsHost) + { + TransformSync.NetIdentity.RegisterAuthQueue(); + } + + // for when you host/connect mid-game + TransformSync.NetIdentity.FireAuthQueue(!AttachedObject._anglerBody.IsSuspended()); + }); } public override void OnRemoval() diff --git a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs index b83e0426..1237bf68 100644 --- a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs +++ b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs @@ -11,7 +11,7 @@ namespace QSB.JellyfishSync.TransformSync { public class JellyfishTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => QSBCore.WorldObjectsReady; + public override bool IsReady => WorldObjectManager.AllAdded; public override bool UseInterpolation => false; private QSBJellyfish _qsbJellyfish; diff --git a/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs b/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs index 6598b811..53f801c1 100644 --- a/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs +++ b/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs @@ -20,13 +20,21 @@ namespace QSB.JellyfishSync.WorldObjects if (QSBCore.IsHost) { QNetworkServer.Spawn(Object.Instantiate(QSBNetworkManager.Instance.JellyfishPrefab)); - QSBCore.UnityEvents.RunWhen(() => TransformSync, () => - TransformSync.NetIdentity.RegisterAuthQueue()); } - // for when you host/connect mid-game + StartDelayedReady(); QSBCore.UnityEvents.RunWhen(() => TransformSync, () => - TransformSync.NetIdentity.FireAuthQueue(!AttachedObject._jellyfishBody.IsSuspended())); + { + FinishDelayedReady(); + + if (QSBCore.IsHost) + { + TransformSync.NetIdentity.RegisterAuthQueue(); + } + + // for when you host/connect mid-game + TransformSync.NetIdentity.FireAuthQueue(!AttachedObject._jellyfishBody.IsSuspended()); + }); } public override void OnRemoval() diff --git a/QSB/MeteorSync/Events/FragmentDamageEvent.cs b/QSB/MeteorSync/Events/FragmentDamageEvent.cs index 0924e835..cf79912d 100644 --- a/QSB/MeteorSync/Events/FragmentDamageEvent.cs +++ b/QSB/MeteorSync/Events/FragmentDamageEvent.cs @@ -23,7 +23,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, FragmentDamageMessage message) { - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return; } diff --git a/QSB/MeteorSync/Events/FragmentResyncEvent.cs b/QSB/MeteorSync/Events/FragmentResyncEvent.cs index f5897208..4f13d5f7 100644 --- a/QSB/MeteorSync/Events/FragmentResyncEvent.cs +++ b/QSB/MeteorSync/Events/FragmentResyncEvent.cs @@ -48,7 +48,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, FragmentResyncMessage msg) { - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return; } diff --git a/QSB/MeteorSync/Events/MeteorLaunchEvent.cs b/QSB/MeteorSync/Events/MeteorLaunchEvent.cs index a35715be..b34fee9e 100644 --- a/QSB/MeteorSync/Events/MeteorLaunchEvent.cs +++ b/QSB/MeteorSync/Events/MeteorLaunchEvent.cs @@ -24,7 +24,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, MeteorLaunchMessage message) { - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return; } diff --git a/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs b/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs index ca500a5e..7acd34f4 100644 --- a/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs +++ b/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs @@ -22,7 +22,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, WorldObjectMessage message) { - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return; } diff --git a/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs b/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs index 6f2c2801..c445ee53 100644 --- a/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs +++ b/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs @@ -22,7 +22,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, WorldObjectMessage message) { - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return; } diff --git a/QSB/MeteorSync/MeteorManager.cs b/QSB/MeteorSync/MeteorManager.cs index 4d8594d6..b3b26bcb 100644 --- a/QSB/MeteorSync/MeteorManager.cs +++ b/QSB/MeteorSync/MeteorManager.cs @@ -6,21 +6,19 @@ namespace QSB.MeteorSync { public class MeteorManager : WorldObjectManager { - public static bool Ready => AllReady && _ready; - private static bool _ready; public static WhiteHoleVolume WhiteHoleVolume; protected override void RebuildWorldObjects(OWScene scene) { - _ready = false; // wait for all late initializers (which includes meteor launchers) to finish + StartDelayedReady(); QSBCore.UnityEvents.RunWhen(() => LateInitializerManager.s_lateInitializers.Count == 0, () => { + FinishDelayedReady(); WhiteHoleVolume = QSBWorldSync.GetUnityObjects().First(); QSBWorldSync.Init(); QSBWorldSync.Init(); QSBWorldSync.Init(); - _ready = true; }); } } diff --git a/QSB/MeteorSync/Patches/MeteorClientPatches.cs b/QSB/MeteorSync/Patches/MeteorClientPatches.cs index fd4272e5..184499d4 100644 --- a/QSB/MeteorSync/Patches/MeteorClientPatches.cs +++ b/QSB/MeteorSync/Patches/MeteorClientPatches.cs @@ -148,7 +148,7 @@ namespace QSB.MeteorSync.Patches { return true; } - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return true; } diff --git a/QSB/MeteorSync/Patches/MeteorServerPatches.cs b/QSB/MeteorSync/Patches/MeteorServerPatches.cs index 272f397d..f6272e50 100644 --- a/QSB/MeteorSync/Patches/MeteorServerPatches.cs +++ b/QSB/MeteorSync/Patches/MeteorServerPatches.cs @@ -15,7 +15,7 @@ namespace QSB.MeteorSync.Patches [HarmonyPatch(typeof(MeteorLauncher), nameof(MeteorLauncher.FixedUpdate))] public static bool FixedUpdate(MeteorLauncher __instance) { - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return true; } @@ -202,7 +202,7 @@ namespace QSB.MeteorSync.Patches { return true; } - if (!MeteorManager.Ready) + if (!QSBCore.WorldObjectsReady) { return true; } diff --git a/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs b/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs index f565af2c..6459b5f6 100644 --- a/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs +++ b/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs @@ -1,7 +1,7 @@ -using QSB.Utility; -using QSB.WorldSync; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using QSB.Utility; +using QSB.WorldSync; using UnityEngine.UI; namespace QSB.QuantumSync.WorldObjects @@ -32,16 +32,19 @@ namespace QSB.QuantumSync.WorldObjects } base.Init(attachedObject, id); - } - public override void PostInit() - { - QuantumStates = AttachedObject._states.ToList().Select(x => QSBWorldSync.GetWorldFromUnity(x)).ToList(); - - if (QuantumStates.Any(x => x == null)) + StartDelayedReady(); + QSBCore.UnityEvents.RunWhen(() => WorldObjectManager.AllAdded, () => { - DebugLog.ToConsole($"Error - {AttachedObject.name} has one or more null QSBQuantumStates assigned!", OWML.Common.MessageType.Error); - } + FinishDelayedReady(); + + QuantumStates = AttachedObject._states.Select(QSBWorldSync.GetWorldFromUnity).ToList(); + + if (QuantumStates.Any(x => x == null)) + { + DebugLog.ToConsole($"Error - {AttachedObject.name} has one or more null QSBQuantumStates assigned!", OWML.Common.MessageType.Error); + } + }); } public void ChangeState(int newStateIndex) diff --git a/QSB/Syncs/SyncBase.cs b/QSB/Syncs/SyncBase.cs index edb48a94..5cfa7727 100644 --- a/QSB/Syncs/SyncBase.cs +++ b/QSB/Syncs/SyncBase.cs @@ -76,7 +76,7 @@ namespace QSB.Syncs && Player.IsReady && NetId.Value != uint.MaxValue && NetId.Value != 0U - && WorldObjectManager.AllReady; + && WorldObjectManager.AllAdded; public abstract bool IsReady { get; } public abstract bool UseInterpolation { get; } public abstract bool IgnoreDisabledAttachedObject { get; } diff --git a/QSB/WorldSync/IWorldObject.cs b/QSB/WorldSync/IWorldObject.cs index 37ce7d53..ba993075 100644 --- a/QSB/WorldSync/IWorldObject.cs +++ b/QSB/WorldSync/IWorldObject.cs @@ -7,7 +7,6 @@ namespace QSB.WorldSync int ObjectId { get; } string Name { get; } - void PostInit(); void OnRemoval(); MonoBehaviour ReturnObject(); } diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 7f28ddb5..d465d5bb 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -1,20 +1,20 @@ -using OWML.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using OWML.Common; using QSB.OrbSync.TransformSync; using QSB.OrbSync.WorldObjects; using QSB.Utility; -using System; -using System.Collections.Generic; -using System.Linq; using UnityEngine; namespace QSB.WorldSync { public static class QSBWorldSync { - public static List OldOrbList { get; set; } = new List(); - public static List OldDialogueTrees { get; set; } = new List(); - public static Dictionary DialogueConditions { get; } = new Dictionary(); - public static List ShipLogFacts { get; } = new List(); + public static List OldOrbList { get; set; } = new(); + public static List OldDialogueTrees { get; set; } = new(); + public static Dictionary DialogueConditions { get; } = new(); + public static List ShipLogFacts { get; } = new(); private static readonly List WorldObjects = new(); private static readonly Dictionary WorldObjectsToUnityObjects = new(); @@ -24,18 +24,19 @@ namespace QSB.WorldSync public static TWorldObject GetWorldFromId(int id) { - if (id < 0 || id >= GetWorldObjects().Count()) + var worldObjects = GetWorldObjects().ToList(); + if (id < 0 || id >= worldObjects.Count) { - DebugLog.ToConsole($"Warning - Tried to find {typeof(TWorldObject).Name} id {id}. Count is {GetWorldObjects().Count()}.", MessageType.Warning); + DebugLog.ToConsole($"Warning - Tried to find {typeof(TWorldObject).Name} id {id}. Count is {worldObjects.Count}.", MessageType.Warning); return default; } - return GetWorldObjects().ToList()[id]; + return worldObjects[id]; } public static IWorldObject GetWorldFromUnity(MonoBehaviour unityObject) { - if (!WorldObjectManager.AllReady) + if (!WorldObjectManager.AllAdded) { return default; } @@ -52,14 +53,12 @@ namespace QSB.WorldSync return default; } - if (!WorldObjectsToUnityObjects.ContainsKey(unityObject)) + if (!WorldObjectsToUnityObjects.TryGetValue(unityObject, out var returnObject)) { DebugLog.ToConsole($"Error - WorldObjectsToUnityObjects does not contain \"{unityObject.name}\"! TUnityObject:{unityObject.GetType().Name}", MessageType.Error); return default; } - var returnObject = WorldObjectsToUnityObjects[unityObject]; - if (returnObject == null) { DebugLog.ToConsole($"Error - World object for unity object {unityObject.name} is null! TUnityObject:{unityObject.GetType().Name}", MessageType.Error); @@ -72,7 +71,7 @@ namespace QSB.WorldSync public static TWorldObject GetWorldFromUnity(MonoBehaviour unityObject) where TWorldObject : IWorldObject { - if (!WorldObjectManager.AllReady) + if (!WorldObjectManager.AllAdded) { return default; } @@ -89,21 +88,19 @@ namespace QSB.WorldSync return default; } - if (!WorldObjectsToUnityObjects.ContainsKey(unityObject)) + if (!WorldObjectsToUnityObjects.TryGetValue(unityObject, out var returnObject)) { DebugLog.ToConsole($"Error - WorldObjectsToUnityObjects does not contain \"{unityObject.name}\"! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{unityObject.GetType().Name}", MessageType.Error); return default; } - var returnObject = (TWorldObject)WorldObjectsToUnityObjects[unityObject]; - if (returnObject == null) { DebugLog.ToConsole($"Error - World object for unity object {unityObject.name} is null! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{unityObject.GetType().Name}", MessageType.Error); return default; } - return returnObject; + return (TWorldObject)returnObject; } public static int GetIdFromUnity(MonoBehaviour unityObject) @@ -115,7 +112,7 @@ namespace QSB.WorldSync var index = GetWorldObjects().ToList().IndexOf(typeSubset); if (index == -1) { - DebugLog.ToConsole($"Warning - {(typeSubset as IWorldObject).Name} doesn't exist in list of {typeof(TTypeSubset).Name} !", MessageType.Warning); + DebugLog.ToConsole($"Warning - {((IWorldObject)typeSubset).Name} doesn't exist in list of {typeof(TTypeSubset).Name} !", MessageType.Warning); } return index; @@ -123,21 +120,16 @@ namespace QSB.WorldSync public static void RemoveWorldObjects() { - if (WorldObjects == null || WorldObjects.Count == 0) + if (WorldObjects.Count == 0) { - DebugLog.ToConsole($"Warning - Trying to remove WorldObjects of type {typeof(TWorldObject).Name}, but there are no WorldObjects!"); + DebugLog.ToConsole($"Warning - Trying to remove WorldObjects of type {typeof(TWorldObject).Name}, but there are no WorldObjects!", MessageType.Warning); + return; } var itemsToRemove = WorldObjects.Where(x => x is TWorldObject); foreach (var item in itemsToRemove) { - if (item is null) - { - DebugLog.ToConsole($"Error - Trying to remove a null WorldObject of type {typeof(TWorldObject).Name}.", MessageType.Error); - continue; - } - try { WorldObjectsToUnityObjects.Remove(item.ReturnObject()); diff --git a/QSB/WorldSync/WorldObject.cs b/QSB/WorldSync/WorldObject.cs index 680c4e27..0d05a26e 100644 --- a/QSB/WorldSync/WorldObject.cs +++ b/QSB/WorldSync/WorldObject.cs @@ -12,8 +12,13 @@ namespace QSB.WorldSync public string LogName => $"{QSBPlayerManager.LocalPlayerId}.{ObjectId}:{GetType().Name}"; public abstract void Init(T attachedObject, int id); - public virtual void PostInit() { } public virtual void OnRemoval() { } public MonoBehaviour ReturnObject() => AttachedObject; + + /// indicates that this won't become ready immediately + protected void StartDelayedReady() => WorldObjectManager._numObjectsReadying++; + + /// indicates that this is now ready + protected void FinishDelayedReady() => WorldObjectManager._numObjectsReadying--; } } diff --git a/QSB/WorldSync/WorldObjectManager.cs b/QSB/WorldSync/WorldObjectManager.cs index 1372d883..8e28c994 100644 --- a/QSB/WorldSync/WorldObjectManager.cs +++ b/QSB/WorldSync/WorldObjectManager.cs @@ -1,7 +1,9 @@ -using QSB.Player; -using QSB.Utility; -using System; +using System; using System.Collections.Generic; +using System.Diagnostics; +using OWML.Common; +using QSB.Player; +using QSB.Utility; using UnityEngine; namespace QSB.WorldSync @@ -10,7 +12,7 @@ namespace QSB.WorldSync { private static readonly List _managers = new(); - // BUG : this gets set to true even if the objects aren't technically ready (i.e. they wait for something else) + public static bool AllAdded { get; private set; } public static bool AllReady { get; private set; } public virtual void Awake() @@ -25,9 +27,17 @@ namespace QSB.WorldSync _managers.Remove(this); } - public static void SetNotReady() => AllReady = false; + public static void SetNotReady() + { + AllAdded = false; + AllReady = false; + } - private void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool inUniverse) => AllReady = false; + private void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool inUniverse) + { + AllAdded = false; + AllReady = false; + } public static void Rebuild(OWScene scene) { @@ -56,6 +66,10 @@ namespace QSB.WorldSync private static void DoRebuild(OWScene scene) { + _numManagersReadying = 0; + _numObjectsReadying = 0; + AllAdded = false; + AllReady = false; foreach (var manager in _managers) { try @@ -68,19 +82,27 @@ namespace QSB.WorldSync } } - QSBCore.UnityEvents.FireInNUpdates(DoPostInit, 1); - } - - private static void DoPostInit() - { - AllReady = true; - var allWorldObjects = QSBWorldSync.GetWorldObjects(); - foreach (var worldObject in allWorldObjects) + QSBCore.UnityEvents.RunWhen(() => _numManagersReadying == 0, () => { - worldObject.PostInit(); - } + AllAdded = true; + DebugLog.DebugWrite("World Objects added.", MessageType.Success); + QSBCore.UnityEvents.RunWhen(() => _numObjectsReadying == 0, () => + { + AllReady = true; + DebugLog.DebugWrite("World Objects ready.", MessageType.Success); + }); + }); } protected abstract void RebuildWorldObjects(OWScene scene); + + private static uint _numManagersReadying; + internal static uint _numObjectsReadying; + + /// indicates that this won't become ready immediately + protected void StartDelayedReady() => _numManagersReadying++; + + /// indicates that this is now ready + protected void FinishDelayedReady() => _numManagersReadying--; } } From 14382018742a600a83c73e6b72d9bf2da8cdceed Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Thu, 2 Dec 2021 02:16:43 -0800 Subject: [PATCH 2/5] bubba --- QSB/WorldSync/WorldObjectManager.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/QSB/WorldSync/WorldObjectManager.cs b/QSB/WorldSync/WorldObjectManager.cs index 8e28c994..26907478 100644 --- a/QSB/WorldSync/WorldObjectManager.cs +++ b/QSB/WorldSync/WorldObjectManager.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using OWML.Common; using QSB.Player; using QSB.Utility; From 436b3ed9a0691dadbcc19df152cff51ba68bc6af Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Thu, 2 Dec 2021 02:37:13 -0800 Subject: [PATCH 3/5] bubba 2 --- QSB/Anglerfish/TransformSync/AnglerTransformSync.cs | 2 +- QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs | 2 +- QSB/QSBCore.cs | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs index d37921ac..77833149 100644 --- a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs +++ b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs @@ -9,7 +9,7 @@ namespace QSB.Anglerfish.TransformSync { public class AnglerTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => WorldObjectManager.AllAdded; + public override bool IsReady => QSBCore.WorldObjectsAdded; public override bool UseInterpolation => false; private QSBAngler _qsbAngler; diff --git a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs index 1237bf68..f01fd131 100644 --- a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs +++ b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs @@ -11,7 +11,7 @@ namespace QSB.JellyfishSync.TransformSync { public class JellyfishTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => WorldObjectManager.AllAdded; + public override bool IsReady => QSBCore.WorldObjectsAdded; public override bool UseInterpolation => false; private QSBJellyfish _qsbJellyfish; diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 93dd0944..d9ab3b66 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -72,6 +72,7 @@ namespace QSB public static AssetBundle InstrumentAssetBundle { get; private set; } public static AssetBundle ConversationAssetBundle { get; private set; } public static AssetBundle DebugAssetBundle { get; private set; } + public static bool WorldObjectsAdded => WorldObjectManager.AllAdded && IsInMultiplayer && PlayerTransformSync.LocalInstance != null; public static bool WorldObjectsReady => WorldObjectManager.AllReady && IsInMultiplayer && PlayerTransformSync.LocalInstance != null; public static bool IsHost => QNetworkServer.active; public static bool IsInMultiplayer => QNetworkManager.singleton.isNetworkActive; From 914a05916d993afb03b89aeb5b2d814511446cc3 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Thu, 2 Dec 2021 02:39:47 -0800 Subject: [PATCH 4/5] removed world object bools from qsbcore since they're duplicates --- QSB/Anglerfish/Events/AnglerChangeStateEvent.cs | 2 +- QSB/Anglerfish/Patches/AnglerPatches.cs | 6 +++--- QSB/Anglerfish/TransformSync/AnglerTransformSync.cs | 6 +++--- QSB/Animation/Player/Events/AnimationTriggerEvent.cs | 3 ++- QSB/Animation/Player/Events/ChangeAnimTypeEvent.cs | 3 ++- QSB/Animation/Player/Events/PlayerSuitEvent.cs | 3 ++- .../Player/Thrusters/RemoteThrusterFlameController.cs | 3 ++- QSB/AuthoritySync/AuthorityQueueEvent.cs | 3 ++- QSB/ConversationSync/Events/ConversationEvent.cs | 2 +- QSB/ConversationSync/Events/ConversationStartEndEvent.cs | 2 +- QSB/GeyserSync/Events/GeyserEvent.cs | 2 +- QSB/JellyfishSync/Events/JellyfishRisingEvent.cs | 2 +- QSB/JellyfishSync/Patches/JellyfishPatches.cs | 4 ++-- QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs | 8 ++++---- QSB/LogSync/Events/RevealFactEvent.cs | 2 +- QSB/MeteorSync/Events/FragmentDamageEvent.cs | 2 +- QSB/MeteorSync/Events/FragmentResyncEvent.cs | 2 +- QSB/MeteorSync/Events/MeteorLaunchEvent.cs | 2 +- QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs | 2 +- QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs | 2 +- QSB/MeteorSync/Patches/MeteorClientPatches.cs | 2 +- QSB/MeteorSync/Patches/MeteorServerPatches.cs | 4 ++-- QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs | 2 +- QSB/OrbSync/WorldObjects/QSBOrbSlot.cs | 2 +- QSB/Player/TransformSync/PlayerTransformSync.cs | 2 +- QSB/QSBCore.cs | 2 -- QSB/QuantumSync/Events/MoonStateChangeEvent.cs | 3 ++- QSB/QuantumSync/Events/MultiStateChangeEvent.cs | 2 +- QSB/QuantumSync/Events/QuantumShuffleEvent.cs | 2 +- QSB/QuantumSync/Events/SocketStateChangeEvent.cs | 2 +- QSB/QuantumSync/QuantumManager.cs | 2 +- QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs | 4 ++-- QSB/RoastingSync/Events/EnterExitRoastingEvent.cs | 2 +- QSB/RoastingSync/Events/MarshmallowEventEvent.cs | 2 +- QSB/ShipSync/Patches/ShipPatches.cs | 7 ++++--- QSB/Syncs/Sectored/BaseSectoredSync.cs | 2 +- QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs | 3 ++- QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs | 3 ++- QSB/Syncs/SyncBase.cs | 2 +- .../Unsectored/Rigidbodies/UnsectoredRigidbodySync.cs | 3 ++- .../Unsectored/Transforms/UnsectoredTransformSync.cs | 3 ++- QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs | 5 +++-- .../TranslationSync/Events/SetAsTranslatedEvent.cs | 2 +- QSB/Utility/CustomRelativisticParticleSystem.cs | 3 ++- QSB/Utility/DebugGUI.cs | 4 ++-- 45 files changed, 71 insertions(+), 60 deletions(-) diff --git a/QSB/Anglerfish/Events/AnglerChangeStateEvent.cs b/QSB/Anglerfish/Events/AnglerChangeStateEvent.cs index f1fb0ab1..e1982b0e 100644 --- a/QSB/Anglerfish/Events/AnglerChangeStateEvent.cs +++ b/QSB/Anglerfish/Events/AnglerChangeStateEvent.cs @@ -26,7 +26,7 @@ namespace QSB.Anglerfish.Events public override void OnReceiveRemote(bool isHost, AnglerChangeStateMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/Anglerfish/Patches/AnglerPatches.cs b/QSB/Anglerfish/Patches/AnglerPatches.cs index d12b1ac8..d668edfa 100644 --- a/QSB/Anglerfish/Patches/AnglerPatches.cs +++ b/QSB/Anglerfish/Patches/AnglerPatches.cs @@ -32,7 +32,7 @@ namespace QSB.Anglerfish.Patches [HarmonyPatch(typeof(AnglerfishController), nameof(AnglerfishController.OnSectorOccupantsUpdated))] public static bool OnSectorOccupantsUpdated(AnglerfishController __instance) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } @@ -77,7 +77,7 @@ namespace QSB.Anglerfish.Patches [HarmonyPatch(typeof(AnglerfishController), nameof(AnglerfishController.UpdateState))] public static bool UpdateState(AnglerfishController __instance) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } @@ -172,7 +172,7 @@ namespace QSB.Anglerfish.Patches [HarmonyPatch(typeof(AnglerfishController), nameof(AnglerfishController.UpdateMovement))] public static bool UpdateMovement(AnglerfishController __instance) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } diff --git a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs index 77833149..abeda8c0 100644 --- a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs +++ b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs @@ -9,7 +9,7 @@ namespace QSB.Anglerfish.TransformSync { public class AnglerTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => QSBCore.WorldObjectsAdded; + public override bool IsReady => WorldObjectManager.AllAdded; public override bool UseInterpolation => false; private QSBAngler _qsbAngler; @@ -47,7 +47,7 @@ namespace QSB.Anglerfish.TransformSync { base.DeserializeTransform(reader, initialState); - if (!QSBCore.WorldObjectsReady || HasAuthority) + if (!WorldObjectManager.AllReady || HasAuthority) { return; } @@ -73,7 +73,7 @@ namespace QSB.Anglerfish.TransformSync protected override void OnRenderObject() { - if (!QSBCore.WorldObjectsReady + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug || !IsReady || ReferenceTransform == null diff --git a/QSB/Animation/Player/Events/AnimationTriggerEvent.cs b/QSB/Animation/Player/Events/AnimationTriggerEvent.cs index fd2653a2..a24f9e64 100644 --- a/QSB/Animation/Player/Events/AnimationTriggerEvent.cs +++ b/QSB/Animation/Player/Events/AnimationTriggerEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Player; +using QSB.WorldSync; namespace QSB.Animation.Player.Events { @@ -20,7 +21,7 @@ namespace QSB.Animation.Player.Events public override void OnReceiveRemote(bool server, AnimationTriggerMessage message) { var animationSync = QSBPlayerManager.GetSyncObject(message.AttachedNetId); - if (!QSBCore.WorldObjectsReady || animationSync == null) + if (!WorldObjectManager.AllReady || animationSync == null) { return; } diff --git a/QSB/Animation/Player/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Player/Events/ChangeAnimTypeEvent.cs index 7e6e5457..1d984e96 100644 --- a/QSB/Animation/Player/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Player/Events/ChangeAnimTypeEvent.cs @@ -2,6 +2,7 @@ using QSB.Instruments; using QSB.Messaging; using QSB.Player; +using QSB.WorldSync; namespace QSB.Animation.Player.Events { @@ -20,7 +21,7 @@ namespace QSB.Animation.Player.Events public override void OnReceiveRemote(bool server, EnumMessage message) { - if (!QSBCore.WorldObjectsReady || !QSBPlayerManager.GetPlayer(message.AboutId).IsReady) + if (!WorldObjectManager.AllReady || !QSBPlayerManager.GetPlayer(message.AboutId).IsReady) { return; } diff --git a/QSB/Animation/Player/Events/PlayerSuitEvent.cs b/QSB/Animation/Player/Events/PlayerSuitEvent.cs index dcc5738b..7c5f920f 100644 --- a/QSB/Animation/Player/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Player/Events/PlayerSuitEvent.cs @@ -1,6 +1,7 @@ using QSB.Events; using QSB.Messaging; using QSB.Player; +using QSB.WorldSync; namespace QSB.Animation.Player.Events { @@ -32,7 +33,7 @@ namespace QSB.Animation.Player.Events var player = QSBPlayerManager.GetPlayer(message.AboutId); player.SuitedUp = message.ToggleValue; - if (!QSBCore.WorldObjectsReady || !player.IsReady) + if (!WorldObjectManager.AllReady || !player.IsReady) { return; } diff --git a/QSB/Animation/Player/Thrusters/RemoteThrusterFlameController.cs b/QSB/Animation/Player/Thrusters/RemoteThrusterFlameController.cs index 956373f3..5b3298b6 100644 --- a/QSB/Animation/Player/Thrusters/RemoteThrusterFlameController.cs +++ b/QSB/Animation/Player/Thrusters/RemoteThrusterFlameController.cs @@ -1,4 +1,5 @@ using QSB.Player; +using QSB.WorldSync; using UnityEngine; namespace QSB.Animation.Player.Thrusters @@ -85,7 +86,7 @@ namespace QSB.Animation.Player.Thrusters private void OnRenderObject() { - if (!QSBCore.WorldObjectsReady || !QSBCore.ShowLinesInDebug) + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug) { return; } diff --git a/QSB/AuthoritySync/AuthorityQueueEvent.cs b/QSB/AuthoritySync/AuthorityQueueEvent.cs index 8b553996..6705d094 100644 --- a/QSB/AuthoritySync/AuthorityQueueEvent.cs +++ b/QSB/AuthoritySync/AuthorityQueueEvent.cs @@ -1,4 +1,5 @@ using QSB.Events; +using QSB.WorldSync; using QuantumUNET.Components; namespace QSB.AuthoritySync @@ -26,7 +27,7 @@ namespace QSB.AuthoritySync private static void OnReceive(AuthorityQueueMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index fb3eee7f..b1448bf6 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -22,7 +22,7 @@ namespace QSB.ConversationSync.Events public override void OnReceiveRemote(bool server, ConversationMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 763aaad1..e62ded18 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -29,7 +29,7 @@ namespace QSB.ConversationSync.Events return; } - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 4b1c7553..d111eb21 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -21,7 +21,7 @@ namespace QSB.GeyserSync.Events public override void OnReceiveRemote(bool isHost, BoolWorldObjectMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/JellyfishSync/Events/JellyfishRisingEvent.cs b/QSB/JellyfishSync/Events/JellyfishRisingEvent.cs index 35e535c3..fc1127a9 100644 --- a/QSB/JellyfishSync/Events/JellyfishRisingEvent.cs +++ b/QSB/JellyfishSync/Events/JellyfishRisingEvent.cs @@ -23,7 +23,7 @@ namespace QSB.JellyfishSync.Events public override void OnReceiveRemote(bool isHost, BoolWorldObjectMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/JellyfishSync/Patches/JellyfishPatches.cs b/QSB/JellyfishSync/Patches/JellyfishPatches.cs index 73865bb9..1a6c332c 100644 --- a/QSB/JellyfishSync/Patches/JellyfishPatches.cs +++ b/QSB/JellyfishSync/Patches/JellyfishPatches.cs @@ -15,7 +15,7 @@ namespace QSB.JellyfishSync.Patches [HarmonyPatch(typeof(JellyfishController), nameof(JellyfishController.OnSectorOccupantsUpdated))] public static bool OnSectorOccupantsUpdated(JellyfishController __instance) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } @@ -42,7 +42,7 @@ namespace QSB.JellyfishSync.Patches [HarmonyPatch(typeof(JellyfishController), nameof(JellyfishController.FixedUpdate))] public static bool FixedUpdate(JellyfishController __instance) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } diff --git a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs index f01fd131..ef6e7ccd 100644 --- a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs +++ b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs @@ -11,7 +11,7 @@ namespace QSB.JellyfishSync.TransformSync { public class JellyfishTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => QSBCore.WorldObjectsAdded; + public override bool IsReady => WorldObjectManager.AllAdded; public override bool UseInterpolation => false; private QSBJellyfish _qsbJellyfish; @@ -47,7 +47,7 @@ namespace QSB.JellyfishSync.TransformSync { base.SerializeTransform(writer, initialState); - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { writer.Write(false); return; @@ -63,7 +63,7 @@ namespace QSB.JellyfishSync.TransformSync { base.DeserializeTransform(reader, initialState); - if (!QSBCore.WorldObjectsReady || HasAuthority) + if (!WorldObjectManager.AllReady || HasAuthority) { reader.ReadBoolean(); return; @@ -142,7 +142,7 @@ namespace QSB.JellyfishSync.TransformSync protected override void OnRenderObject() { - if (!QSBCore.WorldObjectsReady + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug || !IsReady || ReferenceTransform == null diff --git a/QSB/LogSync/Events/RevealFactEvent.cs b/QSB/LogSync/Events/RevealFactEvent.cs index 2f02f778..c2fd4cd3 100644 --- a/QSB/LogSync/Events/RevealFactEvent.cs +++ b/QSB/LogSync/Events/RevealFactEvent.cs @@ -33,7 +33,7 @@ namespace QSB.LogSync.Events QSBWorldSync.AddFactReveal(message.FactId, message.SaveGame, message.ShowNotification); } - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/MeteorSync/Events/FragmentDamageEvent.cs b/QSB/MeteorSync/Events/FragmentDamageEvent.cs index cf79912d..2e9d2065 100644 --- a/QSB/MeteorSync/Events/FragmentDamageEvent.cs +++ b/QSB/MeteorSync/Events/FragmentDamageEvent.cs @@ -23,7 +23,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, FragmentDamageMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/MeteorSync/Events/FragmentResyncEvent.cs b/QSB/MeteorSync/Events/FragmentResyncEvent.cs index 4f13d5f7..e2c5eeae 100644 --- a/QSB/MeteorSync/Events/FragmentResyncEvent.cs +++ b/QSB/MeteorSync/Events/FragmentResyncEvent.cs @@ -48,7 +48,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, FragmentResyncMessage msg) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/MeteorSync/Events/MeteorLaunchEvent.cs b/QSB/MeteorSync/Events/MeteorLaunchEvent.cs index b34fee9e..0a712a8f 100644 --- a/QSB/MeteorSync/Events/MeteorLaunchEvent.cs +++ b/QSB/MeteorSync/Events/MeteorLaunchEvent.cs @@ -24,7 +24,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, MeteorLaunchMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs b/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs index 7acd34f4..b20d573d 100644 --- a/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs +++ b/QSB/MeteorSync/Events/MeteorPreLaunchEvent.cs @@ -22,7 +22,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, WorldObjectMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs b/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs index c445ee53..ce4cbbf1 100644 --- a/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs +++ b/QSB/MeteorSync/Events/MeteorSpecialImpactEvent.cs @@ -22,7 +22,7 @@ namespace QSB.MeteorSync.Events public override void OnReceiveRemote(bool isHost, WorldObjectMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/MeteorSync/Patches/MeteorClientPatches.cs b/QSB/MeteorSync/Patches/MeteorClientPatches.cs index 184499d4..7b9f0531 100644 --- a/QSB/MeteorSync/Patches/MeteorClientPatches.cs +++ b/QSB/MeteorSync/Patches/MeteorClientPatches.cs @@ -148,7 +148,7 @@ namespace QSB.MeteorSync.Patches { return true; } - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } diff --git a/QSB/MeteorSync/Patches/MeteorServerPatches.cs b/QSB/MeteorSync/Patches/MeteorServerPatches.cs index f6272e50..e6a9b981 100644 --- a/QSB/MeteorSync/Patches/MeteorServerPatches.cs +++ b/QSB/MeteorSync/Patches/MeteorServerPatches.cs @@ -15,7 +15,7 @@ namespace QSB.MeteorSync.Patches [HarmonyPatch(typeof(MeteorLauncher), nameof(MeteorLauncher.FixedUpdate))] public static bool FixedUpdate(MeteorLauncher __instance) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } @@ -202,7 +202,7 @@ namespace QSB.MeteorSync.Patches { return true; } - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return true; } diff --git a/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs b/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs index f955aeb4..5f227f70 100644 --- a/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs @@ -74,7 +74,7 @@ namespace QSB.OrbSync.TransformSync protected override Component InitRemoteTransform() => GetTransform(); protected override float DistanceLeeway => 1f; - public override bool IsReady => QSBCore.WorldObjectsReady; + public override bool IsReady => WorldObjectManager.AllReady; public override bool UseInterpolation => false; } } diff --git a/QSB/OrbSync/WorldObjects/QSBOrbSlot.cs b/QSB/OrbSync/WorldObjects/QSBOrbSlot.cs index 0252b5c6..90f64311 100644 --- a/QSB/OrbSync/WorldObjects/QSBOrbSlot.cs +++ b/QSB/OrbSync/WorldObjects/QSBOrbSlot.cs @@ -20,7 +20,7 @@ namespace QSB.OrbSync.WorldObjects public void HandleEvent(bool state, int orbId) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/Player/TransformSync/PlayerTransformSync.cs b/QSB/Player/TransformSync/PlayerTransformSync.cs index 174eb779..c586146e 100644 --- a/QSB/Player/TransformSync/PlayerTransformSync.cs +++ b/QSB/Player/TransformSync/PlayerTransformSync.cs @@ -249,7 +249,7 @@ namespace QSB.Player.TransformSync { base.OnRenderObject(); - if (!QSBCore.WorldObjectsReady + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug || !IsReady || ReferenceTransform == null) diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index d9ab3b66..746cddda 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -72,8 +72,6 @@ namespace QSB public static AssetBundle InstrumentAssetBundle { get; private set; } public static AssetBundle ConversationAssetBundle { get; private set; } public static AssetBundle DebugAssetBundle { get; private set; } - public static bool WorldObjectsAdded => WorldObjectManager.AllAdded && IsInMultiplayer && PlayerTransformSync.LocalInstance != null; - public static bool WorldObjectsReady => WorldObjectManager.AllReady && IsInMultiplayer && PlayerTransformSync.LocalInstance != null; public static bool IsHost => QNetworkServer.active; public static bool IsInMultiplayer => QNetworkManager.singleton.isNetworkActive; public static string QSBVersion => Helper.Manifest.Version; diff --git a/QSB/QuantumSync/Events/MoonStateChangeEvent.cs b/QSB/QuantumSync/Events/MoonStateChangeEvent.cs index 155ac11f..e9795445 100644 --- a/QSB/QuantumSync/Events/MoonStateChangeEvent.cs +++ b/QSB/QuantumSync/Events/MoonStateChangeEvent.cs @@ -2,6 +2,7 @@ using QSB.Events; using System.Linq; using System.Reflection; +using QSB.WorldSync; using UnityEngine; namespace QSB.QuantumSync.Events @@ -23,7 +24,7 @@ namespace QSB.QuantumSync.Events public override void OnReceiveRemote(bool server, MoonStateChangeMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/QuantumSync/Events/MultiStateChangeEvent.cs b/QSB/QuantumSync/Events/MultiStateChangeEvent.cs index 2f80648e..74968b7c 100644 --- a/QSB/QuantumSync/Events/MultiStateChangeEvent.cs +++ b/QSB/QuantumSync/Events/MultiStateChangeEvent.cs @@ -33,7 +33,7 @@ namespace QSB.QuantumSync.Events public override void OnReceiveRemote(bool server, MultiStateChangeMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/QuantumSync/Events/QuantumShuffleEvent.cs b/QSB/QuantumSync/Events/QuantumShuffleEvent.cs index da449c44..ccd2e136 100644 --- a/QSB/QuantumSync/Events/QuantumShuffleEvent.cs +++ b/QSB/QuantumSync/Events/QuantumShuffleEvent.cs @@ -20,7 +20,7 @@ namespace QSB.QuantumSync.Events public override void OnReceiveRemote(bool server, QuantumShuffleMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/QuantumSync/Events/SocketStateChangeEvent.cs b/QSB/QuantumSync/Events/SocketStateChangeEvent.cs index 13cebd31..31c67551 100644 --- a/QSB/QuantumSync/Events/SocketStateChangeEvent.cs +++ b/QSB/QuantumSync/Events/SocketStateChangeEvent.cs @@ -24,7 +24,7 @@ namespace QSB.QuantumSync.Events public override void OnReceiveRemote(bool server, SocketStateChangeMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index 7436452d..1bed0a8e 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -67,7 +67,7 @@ namespace QSB.QuantumSync public void OnRenderObject() { - if (!QSBCore.WorldObjectsReady || !QSBCore.ShowLinesInDebug) + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug) { return; } diff --git a/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs b/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs index e29b2835..9ccc2dd0 100644 --- a/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs +++ b/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs @@ -136,7 +136,7 @@ namespace QSB.QuantumSync.WorldObjects private void OnEnable(Shape s) { IsEnabled = true; - if (!QSBCore.WorldObjectsReady && !QSBCore.IsHost) + if (!WorldObjectManager.AllReady && !QSBCore.IsHost) { return; } @@ -165,7 +165,7 @@ namespace QSB.QuantumSync.WorldObjects } IsEnabled = false; - if (!QSBCore.WorldObjectsReady && !QSBCore.IsHost) + if (!WorldObjectManager.AllReady && !QSBCore.IsHost) { return; } diff --git a/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs b/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs index 87d3c3f0..e0cc1f6a 100644 --- a/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs +++ b/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs @@ -42,7 +42,7 @@ namespace QSB.RoastingSync.Events public override void OnReceiveRemote(bool server, BoolWorldObjectMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/RoastingSync/Events/MarshmallowEventEvent.cs b/QSB/RoastingSync/Events/MarshmallowEventEvent.cs index f11dfcae..7fca7d2f 100644 --- a/QSB/RoastingSync/Events/MarshmallowEventEvent.cs +++ b/QSB/RoastingSync/Events/MarshmallowEventEvent.cs @@ -24,7 +24,7 @@ namespace QSB.RoastingSync.Events public override void OnReceiveRemote(bool server, EnumMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/ShipSync/Patches/ShipPatches.cs b/QSB/ShipSync/Patches/ShipPatches.cs index 2bc90fa0..cabbc0ca 100644 --- a/QSB/ShipSync/Patches/ShipPatches.cs +++ b/QSB/ShipSync/Patches/ShipPatches.cs @@ -4,6 +4,7 @@ using QSB.Events; using QSB.Patches; using QSB.Utility; using System; +using QSB.WorldSync; using UnityEngine; namespace QSB.ShipSync.Patches @@ -62,7 +63,7 @@ namespace QSB.ShipSync.Patches public static bool InteractZone_UpdateInteractVolume(InteractZone __instance) { /* Angle for interaction with the ship hatch - * + * * \ 80° / - If in ship * \ / * \ / @@ -70,10 +71,10 @@ namespace QSB.ShipSync.Patches * / \ * / \ * / 280° \ - If not in ship - * + * */ - if (!QSBCore.WorldObjectsReady || __instance != ShipManager.Instance.HatchInteractZone) + if (!WorldObjectManager.AllReady || __instance != ShipManager.Instance.HatchInteractZone) { return true; } diff --git a/QSB/Syncs/Sectored/BaseSectoredSync.cs b/QSB/Syncs/Sectored/BaseSectoredSync.cs index c25423c7..f4fa6398 100644 --- a/QSB/Syncs/Sectored/BaseSectoredSync.cs +++ b/QSB/Syncs/Sectored/BaseSectoredSync.cs @@ -138,7 +138,7 @@ namespace QSB.Syncs.Sectored public override void DeserializeTransform(QNetworkReader reader, bool initialState) { int sectorId; - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { sectorId = reader.ReadInt32(); if (initialState && sectorId != -1) diff --git a/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs b/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs index a676c5d6..bcc785d4 100644 --- a/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs +++ b/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.Utility; +using QSB.WorldSync; using QuantumUNET.Transport; using UnityEngine; @@ -61,7 +62,7 @@ namespace QSB.Syncs.Sectored.Rigidbodies { base.DeserializeTransform(reader, initialState); - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { reader.ReadVector3(); DeserializeRotation(reader); diff --git a/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs b/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs index d25e5ccd..9459ac77 100644 --- a/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs +++ b/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.Utility; +using QSB.WorldSync; using QuantumUNET.Transport; using UnityEngine; @@ -31,7 +32,7 @@ namespace QSB.Syncs.Sectored.Transforms { base.DeserializeTransform(reader, initialState); - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { reader.ReadVector3(); DeserializeRotation(reader); diff --git a/QSB/Syncs/SyncBase.cs b/QSB/Syncs/SyncBase.cs index 5cfa7727..1e38e11a 100644 --- a/QSB/Syncs/SyncBase.cs +++ b/QSB/Syncs/SyncBase.cs @@ -298,7 +298,7 @@ namespace QSB.Syncs protected virtual void OnRenderObject() { - if (!QSBCore.WorldObjectsReady + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug || !IsReady || ReferenceTransform == null) diff --git a/QSB/Syncs/Unsectored/Rigidbodies/UnsectoredRigidbodySync.cs b/QSB/Syncs/Unsectored/Rigidbodies/UnsectoredRigidbodySync.cs index 71cb667c..af6b41fd 100644 --- a/QSB/Syncs/Unsectored/Rigidbodies/UnsectoredRigidbodySync.cs +++ b/QSB/Syncs/Unsectored/Rigidbodies/UnsectoredRigidbodySync.cs @@ -1,4 +1,5 @@ using QSB.Utility; +using QSB.WorldSync; using QuantumUNET.Transport; using UnityEngine; @@ -55,7 +56,7 @@ namespace QSB.Syncs.Unsectored.Rigidbodies public override void DeserializeTransform(QNetworkReader reader, bool initialState) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { reader.ReadVector3(); DeserializeRotation(reader); diff --git a/QSB/Syncs/Unsectored/Transforms/UnsectoredTransformSync.cs b/QSB/Syncs/Unsectored/Transforms/UnsectoredTransformSync.cs index 2111b6fc..799c04d2 100644 --- a/QSB/Syncs/Unsectored/Transforms/UnsectoredTransformSync.cs +++ b/QSB/Syncs/Unsectored/Transforms/UnsectoredTransformSync.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.Utility; +using QSB.WorldSync; using QuantumUNET.Transport; using UnityEngine; @@ -27,7 +28,7 @@ namespace QSB.Syncs.Unsectored.Transforms public override void DeserializeTransform(QNetworkReader reader, bool initialState) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { reader.ReadVector3(); DeserializeRotation(reader); diff --git a/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs b/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs index e4d0b9f1..37c2ccef 100644 --- a/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs +++ b/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QSB.WorldSync; +using UnityEngine; namespace QSB.Tools.TranslatorTool { @@ -76,7 +77,7 @@ namespace QSB.Tools.TranslatorTool private void OnRenderObject() { - if (!QSBCore.WorldObjectsReady || !QSBCore.ShowLinesInDebug) + if (!WorldObjectManager.AllReady || !QSBCore.ShowLinesInDebug) { return; } diff --git a/QSB/Tools/TranslatorTool/TranslationSync/Events/SetAsTranslatedEvent.cs b/QSB/Tools/TranslatorTool/TranslationSync/Events/SetAsTranslatedEvent.cs index 910042f0..a097d084 100644 --- a/QSB/Tools/TranslatorTool/TranslationSync/Events/SetAsTranslatedEvent.cs +++ b/QSB/Tools/TranslatorTool/TranslationSync/Events/SetAsTranslatedEvent.cs @@ -21,7 +21,7 @@ namespace QSB.Tools.TranslatorTool.TranslationSync.Events public override void OnReceiveRemote(bool server, SetAsTranslatedMessage message) { - if (!QSBCore.WorldObjectsReady) + if (!WorldObjectManager.AllReady) { return; } diff --git a/QSB/Utility/CustomRelativisticParticleSystem.cs b/QSB/Utility/CustomRelativisticParticleSystem.cs index ce04f48d..8ac35981 100644 --- a/QSB/Utility/CustomRelativisticParticleSystem.cs +++ b/QSB/Utility/CustomRelativisticParticleSystem.cs @@ -1,4 +1,5 @@ using QSB.Player; +using QSB.WorldSync; using UnityEngine; namespace QSB.Utility @@ -61,7 +62,7 @@ namespace QSB.Utility private void FixedUpdate() { - if (!QSBCore.WorldObjectsReady || !_isReady) + if (!WorldObjectManager.AllReady || !_isReady) { return; } diff --git a/QSB/Utility/DebugGUI.cs b/QSB/Utility/DebugGUI.cs index 488533fe..351c19a4 100644 --- a/QSB/Utility/DebugGUI.cs +++ b/QSB/Utility/DebugGUI.cs @@ -85,7 +85,7 @@ namespace QSB.Utility #region Column1 - Server data WriteLine(1, $"FPS : {Mathf.Round(1f / Time.smoothDeltaTime)}"); - WriteLine(1, $"HasWokenUp : {QSBCore.WorldObjectsReady}"); + WriteLine(1, $"HasWokenUp : {WorldObjectManager.AllReady}"); if (WakeUpSync.LocalInstance != null) { WriteLine(1, $"Server State : {ServerStateManager.Instance.GetServerState()}"); @@ -130,7 +130,7 @@ namespace QSB.Utility WriteLine(2, $"Ready : {player.IsReady}"); WriteLine(2, $"Suited Up : {player.SuitedUp}"); - if (player.IsReady && QSBCore.WorldObjectsReady) + if (player.IsReady && WorldObjectManager.AllReady) { var networkTransform = player.TransformSync; var referenceSector = networkTransform.ReferenceSector; From 9cca7273f6afcdba228ac6b38f2f4211c50d9a34 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Thu, 2 Dec 2021 00:42:24 -0800 Subject: [PATCH 5/5] removed GetWorldFromUnity alladded no-warning checks since nothing else does that. (this causes a bunch of HARMLESS WorldObjectsToUnityObjects errors but idc) --- QSB/WorldSync/QSBWorldSync.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index d465d5bb..3c9b0ff0 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -36,11 +36,6 @@ namespace QSB.WorldSync public static IWorldObject GetWorldFromUnity(MonoBehaviour unityObject) { - if (!WorldObjectManager.AllAdded) - { - return default; - } - if (unityObject == null) { DebugLog.ToConsole($"Error - Trying to run GetWorldFromUnity with a null unity object! TUnityObject:NULL", MessageType.Error); @@ -71,11 +66,6 @@ namespace QSB.WorldSync public static TWorldObject GetWorldFromUnity(MonoBehaviour unityObject) where TWorldObject : IWorldObject { - if (!WorldObjectManager.AllAdded) - { - return default; - } - if (unityObject == null) { DebugLog.ToConsole($"Error - Trying to run GetWorldFromUnity with a null unity object! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:NULL", MessageType.Error);