diff --git a/QSB/Anglerfish/Messages/AnglerChangeStateMessage.cs b/QSB/Anglerfish/Messages/AnglerDataMessage.cs similarity index 85% rename from QSB/Anglerfish/Messages/AnglerChangeStateMessage.cs rename to QSB/Anglerfish/Messages/AnglerDataMessage.cs index 02295add..38615142 100644 --- a/QSB/Anglerfish/Messages/AnglerChangeStateMessage.cs +++ b/QSB/Anglerfish/Messages/AnglerDataMessage.cs @@ -6,12 +6,15 @@ using UnityEngine; namespace QSB.Anglerfish.Messages { - public class AnglerChangeStateMessage : QSBEnumWorldObjectMessage + /// + /// angler state, target transform, and local disturbance pos + /// + public class AnglerDataMessage : QSBEnumWorldObjectMessage { private uint TargetId; private Vector3 LocalDisturbancePos; - public AnglerChangeStateMessage(QSBAngler qsbAngler) + public AnglerDataMessage(QSBAngler qsbAngler) { Value = qsbAngler.AttachedObject._currentState; TargetId = TargetToId(qsbAngler.TargetTransform); diff --git a/QSB/Anglerfish/Patches/AnglerPatches.cs b/QSB/Anglerfish/Patches/AnglerPatches.cs index 7f7abfb4..2ac3c575 100644 --- a/QSB/Anglerfish/Patches/AnglerPatches.cs +++ b/QSB/Anglerfish/Patches/AnglerPatches.cs @@ -39,7 +39,8 @@ namespace QSB.Anglerfish.Patches if (qsbAngler.TargetTransform != null && sectorDetector.GetAttachedOWRigidbody().transform == qsbAngler.TargetTransform) { qsbAngler.TargetTransform = null; - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + __instance.ChangeState(AnglerfishController.AnglerState.Lurking); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); } return false; @@ -62,7 +63,7 @@ namespace QSB.Anglerfish.Patches if ((__instance._brambleBody.transform.TransformPoint(__instance._localDisturbancePos) - __instance._anglerBody.GetPosition()).sqrMagnitude < __instance._arrivalDistance * __instance._arrivalDistance) { __instance.ChangeState(AnglerfishController.AnglerState.Lurking); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } @@ -71,7 +72,7 @@ namespace QSB.Anglerfish.Patches if (qsbAngler.TargetTransform == null) { __instance.ChangeState(AnglerfishController.AnglerState.Lurking); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } @@ -79,7 +80,7 @@ namespace QSB.Anglerfish.Patches { qsbAngler.TargetTransform = null; __instance.ChangeState(AnglerfishController.AnglerState.Lurking); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } @@ -90,7 +91,7 @@ namespace QSB.Anglerfish.Patches if (qsbAngler.TargetTransform == null) { __instance.ChangeState(AnglerfishController.AnglerState.Lurking); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } @@ -124,7 +125,8 @@ namespace QSB.Anglerfish.Patches else { qsbAngler.TargetTransform = null; - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + __instance.ChangeState(AnglerfishController.AnglerState.Lurking); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); } break; @@ -135,12 +137,12 @@ namespace QSB.Anglerfish.Patches if (qsbAngler.TargetTransform != null) { __instance.ChangeState(AnglerfishController.AnglerState.Chasing); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } __instance.ChangeState(AnglerfishController.AnglerState.Lurking); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); } break; @@ -252,7 +254,7 @@ namespace QSB.Anglerfish.Patches { qsbAngler.TargetTransform = attachedOWRigidbody.transform; __instance.ChangeState(AnglerfishController.AnglerState.Chasing); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } @@ -281,7 +283,7 @@ namespace QSB.Anglerfish.Patches __instance.ChangeState(AnglerfishController.AnglerState.Chasing); } - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); return false; } } @@ -293,7 +295,7 @@ namespace QSB.Anglerfish.Patches __instance.ChangeState(AnglerfishController.AnglerState.Investigating); } - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); } return false; @@ -321,7 +323,7 @@ namespace QSB.Anglerfish.Patches qsbAngler.TargetTransform = caughtBody.transform; __instance._consumeStartTime = Time.time; __instance.ChangeState(AnglerfishController.AnglerState.Consuming); - qsbAngler.SendMessage(new AnglerChangeStateMessage(qsbAngler)); + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); } return false; diff --git a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs index a073503f..c92be663 100644 --- a/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs +++ b/QSB/Anglerfish/TransformSync/AnglerTransformSync.cs @@ -19,16 +19,16 @@ namespace QSB.Anglerfish.TransformSync protected override OWRigidbody InitAttachedRigidbody() => _qsbAngler.AttachedObject._anglerBody; - public override void Start() + public override void OnStartClient() { _instances.Add(this); - base.Start(); + base.OnStartClient(); } - protected override void OnDestroy() + public override void OnStopClient() { _instances.Remove(this); - base.OnDestroy(); + base.OnStopClient(); if (QSBCore.IsHost) { diff --git a/QSB/JellyfishSync/Messages/JellyfishRisingMessage.cs b/QSB/JellyfishSync/Messages/JellyfishRisingMessage.cs index 01d60b8e..c571cf4a 100644 --- a/QSB/JellyfishSync/Messages/JellyfishRisingMessage.cs +++ b/QSB/JellyfishSync/Messages/JellyfishRisingMessage.cs @@ -7,7 +7,6 @@ namespace QSB.JellyfishSync.Messages { public JellyfishRisingMessage(bool isRising) => Value = isRising; - public override void OnReceiveRemote() => WorldObject.IsRising = Value; - + public override void OnReceiveRemote() => WorldObject.SetIsRising(Value); } } diff --git a/QSB/JellyfishSync/Patches/JellyfishPatches.cs b/QSB/JellyfishSync/Patches/JellyfishPatches.cs index 61eacaea..a4dfeb07 100644 --- a/QSB/JellyfishSync/Patches/JellyfishPatches.cs +++ b/QSB/JellyfishSync/Patches/JellyfishPatches.cs @@ -20,17 +20,16 @@ namespace QSB.JellyfishSync.Patches return true; } - var qsbJellyfish = __instance.GetWorldObject(); - var sqrMagnitude = (__instance._jellyfishBody.GetPosition() - __instance._planetBody.GetPosition()).sqrMagnitude; - if (qsbJellyfish.IsRising) + if (__instance._isRising) { __instance._jellyfishBody.AddAcceleration(__instance.transform.up * __instance._upwardsAcceleration); if (sqrMagnitude > __instance._upperLimit * __instance._upperLimit) { - qsbJellyfish.IsRising = false; - - qsbJellyfish.SendMessage(new JellyfishRisingMessage(qsbJellyfish.IsRising)); + __instance._isRising = false; + __instance._attractiveFluidVolume.SetVolumeActivation(true); + __instance.GetWorldObject().SendMessage(new JellyfishRisingMessage(false)); + return false; } } else @@ -38,8 +37,9 @@ namespace QSB.JellyfishSync.Patches __instance._jellyfishBody.AddAcceleration(-__instance.transform.up * __instance._downwardsAcceleration); if (sqrMagnitude < __instance._lowerLimit * __instance._lowerLimit) { - qsbJellyfish.IsRising = true; - qsbJellyfish.SendMessage(new JellyfishRisingMessage(qsbJellyfish.IsRising)); + __instance._isRising = true; + __instance._attractiveFluidVolume.SetVolumeActivation(false); + __instance.GetWorldObject().SendMessage(new JellyfishRisingMessage(true)); } } diff --git a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs index d53591e7..dde234a9 100644 --- a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs +++ b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs @@ -1,5 +1,4 @@ -using Mirror; -using QSB.AuthoritySync; +using QSB.AuthoritySync; using QSB.JellyfishSync.WorldObjects; using QSB.Syncs.Unsectored.Rigidbodies; using QSB.Utility; @@ -21,16 +20,16 @@ namespace QSB.JellyfishSync.TransformSync protected override OWRigidbody InitAttachedRigidbody() => _qsbJellyfish.AttachedObject._jellyfishBody; - public override void Start() + public override void OnStartClient() { _instances.Add(this); - base.Start(); + base.OnStartClient(); } - protected override void OnDestroy() + public override void OnStopClient() { _instances.Remove(this); - base.OnDestroy(); + base.OnStopClient(); if (QSBCore.IsHost) { @@ -65,36 +64,9 @@ namespace QSB.JellyfishSync.TransformSync private void OnUnsuspend(OWRigidbody suspendedBody) => netIdentity.SendAuthQueueMessage(AuthQueueAction.Add); private void OnSuspend(OWRigidbody suspendedBody) => netIdentity.SendAuthQueueMessage(AuthQueueAction.Remove); - private bool _isRising; - - protected override void Serialize(NetworkWriter writer, bool initialState) - { - base.Serialize(writer, initialState); - - writer.Write(_isRising); - } - - protected override void Deserialize(NetworkReader reader, bool initialState) - { - base.Deserialize(reader, initialState); - - _isRising = reader.ReadBool(); - } - - protected override void GetFromAttached() - { - base.GetFromAttached(); - - _qsbJellyfish.Align = true; - _isRising = _qsbJellyfish.IsRising; - } - /// replacement using SetPosition/Rotation instead of Move protected override void ApplyToAttached() { - _qsbJellyfish.Align = false; - _qsbJellyfish.IsRising = _isRising; - var pos = ReferenceTransform.FromRelPos(transform.position); AttachedRigidbody.SetPosition(pos); AttachedRigidbody.SetRotation(ReferenceTransform.FromRelRot(transform.rotation)); diff --git a/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs b/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs index fc3130ef..1691da86 100644 --- a/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs +++ b/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs @@ -32,24 +32,15 @@ namespace QSB.JellyfishSync.WorldObjects } } - public bool IsRising + public void SetIsRising(bool value) { - get => AttachedObject._isRising; - set + if (AttachedObject._isRising == value) { - if (AttachedObject._isRising == value) - { - return; - } - - AttachedObject._isRising = value; - AttachedObject._attractiveFluidVolume.SetVolumeActivation(!value); + return; } - } - public bool Align - { - set => _alignWithTargetBody.enabled = value; + AttachedObject._isRising = value; + AttachedObject._attractiveFluidVolume.SetVolumeActivation(!value); } } } diff --git a/QSB/Menus/MenuManager.cs b/QSB/Menus/MenuManager.cs index b82f0c0d..44fbe907 100644 --- a/QSB/Menus/MenuManager.cs +++ b/QSB/Menus/MenuManager.cs @@ -267,7 +267,7 @@ namespace QSB.Menus if (QSBCore.IsHost) { - SetButtonActive(ResumeGameButton, StandaloneProfileManager.SharedInstance.currentProfileGameSave.loopCount > 1); + QSBCore.UnityEvents.RunWhen(PlayerData.IsLoaded, () => SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1)); SetButtonActive(NewGameButton, true); } else @@ -279,7 +279,7 @@ namespace QSB.Menus else { SetButtonActive(ClientButton, true); - SetButtonActive(ResumeGameButton, StandaloneProfileManager.SharedInstance.currentProfileGameSave.loopCount > 1); + QSBCore.UnityEvents.RunWhen(PlayerData.IsLoaded, () => SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1)); SetButtonActive(NewGameButton, true); } @@ -389,7 +389,7 @@ namespace QSB.Menus { KickReason.QSBVersionNotMatching => "Server refused connection as QSB version does not match.", KickReason.GameVersionNotMatching => "Server refused connection as Outer Wilds version does not match.", - KickReason.GamePlatformNotMatching => "Server refused connection as Outer Wilds platform does not match. (Steam/Epic)", + KickReason.GamePlatformNotMatching => "Server refused connection as Outer Wilds platform does not match. (Steam/Epic/Xbox)", KickReason.DLCNotMatching => "Server refused connection as DLC installation state does not match.", KickReason.InEye => "Server refused connection as game has progressed too far.", KickReason.None => "Kicked from server. No reason given.", @@ -433,7 +433,7 @@ namespace QSB.Menus SetButtonActive(ClientButton, true); SetButtonActive(QuitButton, true); SetButtonActive(HostButton, true); - SetButtonActive(ResumeGameButton, StandaloneProfileManager.SharedInstance.currentProfileGameSave.loopCount > 1); + SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1); SetButtonActive(NewGameButton, true); } } diff --git a/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs b/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs index 17f36aab..84b47634 100644 --- a/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/OrbSync/TransformSync/NomaiOrbTransformSync.cs @@ -22,16 +22,16 @@ namespace QSB.OrbSync.TransformSync private QSBOrb _qsbOrb; private static readonly List _instances = new(); - public override void Start() + public override void OnStartClient() { _instances.Add(this); - base.Start(); + base.OnStartClient(); } - protected override void OnDestroy() + public override void OnStopClient() { _instances.Remove(this); - base.OnDestroy(); + base.OnStopClient(); if (QSBCore.IsHost) { diff --git a/QSB/Player/GamePlatform.cs b/QSB/Player/GamePlatform.cs index 0b3c8f52..6fab0005 100644 --- a/QSB/Player/GamePlatform.cs +++ b/QSB/Player/GamePlatform.cs @@ -3,6 +3,7 @@ public enum GamePlatform { Steam, - Epic + Epic, + Xbox } } diff --git a/QSB/Player/Messages/RequestStateResyncMessage.cs b/QSB/Player/Messages/RequestStateResyncMessage.cs index deb3362b..15619a66 100644 --- a/QSB/Player/Messages/RequestStateResyncMessage.cs +++ b/QSB/Player/Messages/RequestStateResyncMessage.cs @@ -1,9 +1,13 @@ using OWML.Common; +using QSB.Anglerfish.Messages; +using QSB.Anglerfish.WorldObjects; using QSB.CampfireSync.Messages; using QSB.CampfireSync.WorldObjects; using QSB.ClientServerStateSync; using QSB.ClientServerStateSync.Messages; using QSB.ConversationSync.Messages; +using QSB.JellyfishSync.Messages; +using QSB.JellyfishSync.WorldObjects; using QSB.LogSync.Messages; using QSB.Messaging; using QSB.MeteorSync.Messages; @@ -148,6 +152,26 @@ namespace QSB.Player.Messages qsbOrb.SendMessage(new OrbDragMessage(qsbOrb.AttachedObject._isBeingDragged) { To = From }); qsbOrb.SendMessage(new OrbSlotMessage(qsbOrb.AttachedObject._slots.IndexOf(qsbOrb.AttachedObject._occupiedSlot)) { To = From }); } + + foreach (var qsbJellyfish in QSBWorldSync.GetWorldObjects()) + { + if (!qsbJellyfish.TransformSync.hasAuthority) + { + continue; + } + + qsbJellyfish.SendMessage(new JellyfishRisingMessage(qsbJellyfish.AttachedObject._isRising)); + } + + foreach (var qsbAngler in QSBWorldSync.GetWorldObjects()) + { + if (!qsbAngler.TransformSync.hasAuthority) + { + continue; + } + + qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler)); + } } } } diff --git a/QSB/Player/TransformSync/PlayerTransformSync.cs b/QSB/Player/TransformSync/PlayerTransformSync.cs index 546c04df..28175bef 100644 --- a/QSB/Player/TransformSync/PlayerTransformSync.cs +++ b/QSB/Player/TransformSync/PlayerTransformSync.cs @@ -43,53 +43,44 @@ namespace QSB.Player.TransformSync private Transform GetStickPivot() => QSBWorldSync.GetUnityObjects().First().transform.Find("Stick_Root/Stick_Pivot"); - public override void OnStartLocalPlayer() - => LocalInstance = this; - - public override void Start() + public override void OnStartClient() { var player = new PlayerInfo(this); QSBPlayerManager.PlayerList.SafeAdd(player); - base.Start(); + base.OnStartClient(); QSBPlayerManager.OnAddPlayer?.Invoke(Player); DebugLog.DebugWrite($"Create Player : id<{Player.PlayerId}>", MessageType.Info); } + public override void OnStartLocalPlayer() => LocalInstance = this; + protected override void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse) { - if (!hasAuthority) - { - base.OnSceneLoaded(oldScene, newScene, isInUniverse); - } - - if (isInUniverse && !IsInitialized) - { - Player.IsReady = false; - new PlayerReadyMessage(false).Send(); - } - - if (!isInUniverse) - { - Player.IsReady = false; - new PlayerReadyMessage(false).Send(); - } - base.OnSceneLoaded(oldScene, newScene, isInUniverse); + + if (isLocalPlayer) + { + Player.IsReady = false; + new PlayerReadyMessage(false).Send(); + } } protected override void Init() { base.Init(); - Player.IsReady = true; - new PlayerReadyMessage(true).Send(); + if (isLocalPlayer) + { + Player.IsReady = true; + new PlayerReadyMessage(true).Send(); + } } - protected override void OnDestroy() + public override void OnStopClient() { // TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player QSBPlayerManager.OnRemovePlayer?.Invoke(Player); - base.OnDestroy(); + base.OnStopClient(); Player.HudMarker?.Remove(); QSBPlayerManager.PlayerList.Remove(Player); DebugLog.DebugWrite($"Remove Player : id<{Player.PlayerId}>", MessageType.Info); diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index f6af8c46..1c23afb0 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -1,21 +1,23 @@ using Mirror; using OWML.Common; using OWML.ModHelper; -using OWML.ModHelper.Input; using QSB.EyeOfTheUniverse.GalaxyMap; using QSB.EyeOfTheUniverse.MaskSync; using QSB.Inputs; using QSB.Menus; using QSB.Patches; using QSB.Player; +using QSB.QuantumSync; using QSB.RespawnSync; using QSB.SatelliteSync; using QSB.StatueSync; using QSB.TimeSync; using QSB.Utility; using QSB.WorldSync; +using System; using System.Linq; using UnityEngine; +using UnityEngine.InputSystem; /* Copyright (C) 2020 - 2021 @@ -59,13 +61,11 @@ namespace QSB public static bool IsInMultiplayer => QSBNetworkManager.singleton.isNetworkActive; public static string QSBVersion => Helper.Manifest.Version; public static string GameVersion => Application.version; - public static GamePlatform Platform => typeof(Achievements).Assembly.GetTypes().Any(x => x.Name == "EpicEntitlementRetriever") - ? GamePlatform.Epic - : GamePlatform.Steam; + public static GamePlatform Platform { get; private set; } public static bool DLCInstalled => EntitlementsManager.IsDlcOwned() == EntitlementsManager.AsyncOwnershipStatus.Owned; public static IMenuAPI MenuApi { get; private set; } - private static DebugSettings DebugSettings { get; set; } = new DebugSettings(); + private static DebugSettings DebugSettings { get; set; } = new(); public void Awake() { @@ -79,6 +79,23 @@ namespace QSB Helper = ModHelper; DebugLog.ToConsole($"* Start of QSB version {QSBVersion} - authored by {Helper.Manifest.Author}", MessageType.Info); + switch (EntitlementsManager.instance._entitlementRetriever.GetType().Name) + { + case "EpicEntitlementRetriever": + Platform = GamePlatform.Epic; + break; + case "SteamEntitlementRetriever": + Platform = GamePlatform.Steam; + break; + case "MSStoreEntitlementRetriever": + Platform = GamePlatform.Xbox; + break; + case var other: + DebugLog.ToConsole($"Cannot get game platform (entitlement retriever name = {other})\nTell a QSB Dev!", MessageType.Error); + enabled = false; + return; + } + MenuApi = ModHelper.Interaction.GetModApi("_nebula.MenuFramework"); NetworkAssetBundle = Helper.Assets.LoadBundle("AssetBundles/network"); @@ -87,7 +104,7 @@ namespace QSB DebugAssetBundle = Helper.Assets.LoadBundle("AssetBundles/debug"); TextAssetsBundle = Helper.Assets.LoadBundle("AssetBundles/textassets"); - DebugSettings = ModHelper.Storage.Load("debugsettings.json"); + DebugSettings = Helper.Storage.Load("debugsettings.json"); if (DebugSettings == null) { @@ -139,6 +156,21 @@ namespace QSB { DefaultServerIP = config.GetSettingsValue("defaultServerIP"); } + + private void Update() + { + if (Keyboard.current[Key.Q].isPressed && Keyboard.current[Key.D].wasPressedThisFrame) + { + DebugSettings.DebugMode = !DebugSettings.DebugMode; + + GetComponent().enabled = DebugMode; + GetComponent().enabled = DebugMode; + QuantumManager.UpdateFromDebugSetting(); + DebugCameraSettings.UpdateFromDebugSetting(); + + DebugLog.ToConsole($"DEBUG MODE = {DebugMode}"); + } + } } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 9a49afbb..52035422 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -15,7 +15,6 @@ using QSB.Patches; using QSB.Player; using QSB.Player.Messages; using QSB.Player.TransformSync; -using QSB.PoolSync; using QSB.ShipSync.TransformSync; using QSB.TimeSync; using QSB.Tools.ProbeTool.TransformSync; @@ -72,7 +71,7 @@ namespace QSB base.Awake(); - PlayerName = GetPlayerName(); + InitPlayerName(); playerPrefab = QSBCore.NetworkAssetBundle.LoadAsset("Assets/Prefabs/NETWORK_Player_Body.prefab"); playerPrefab.GetRequiredComponent().SetValue("m_AssetId", 1.ToGuid().ToString("N")); @@ -98,21 +97,29 @@ namespace QSB ConfigureNetworkManager(); } - private string GetPlayerName() + private void InitPlayerName() { - try + QSBCore.UnityEvents.RunWhen(PlayerData.IsLoaded, () => { - var profileManager = StandaloneProfileManager.SharedInstance; - profileManager.Initialize(); - var profile = profileManager._currentProfile; - var profileName = profile.profileName; - return profileName; - } - catch (Exception ex) - { - DebugLog.ToConsole($"Error - Exception when getting player name : {ex}", MessageType.Error); - return "Player"; - } + try + { + var titleScreenManager = FindObjectOfType(); + var profileManager = titleScreenManager._profileManager; + if (profileManager.GetType().Name == "MSStoreProfileManager") + { + PlayerName = (string)profileManager.GetType().GetProperty("userDisplayName").GetValue(profileManager); + } + else + { + PlayerName = StandaloneProfileManager.SharedInstance.currentProfile.profileName; + } + } + catch (Exception ex) + { + DebugLog.ToConsole($"Error - Exception when getting player name : {ex}", MessageType.Error); + PlayerName = "Player"; + } + }); } /// create a new network prefab from the network object prefab template. diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index f5967332..fff9367b 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -35,6 +35,8 @@ namespace QSB.QuantumSync { Shrine = QSBWorldSync.GetUnityObjects().First(); } + + UpdateFromDebugSetting(); } public void PlayerLeave(PlayerInfo player) @@ -121,5 +123,82 @@ namespace QSB.QuantumSync var worldObj = obj.GetWorldObject(); return QSBPlayerManager.PlayerList.Where(x => x.EntangledObject == worldObj); } + + #region debug shapes + + private static GameObject _debugSphere, _debugCube, _debugCapsule; + + private class DebugShape : MonoBehaviour { } + + public static void UpdateFromDebugSetting() + { + if (QSBCore.ShowQuantumVisibilityObjects) + { + if (_debugSphere == null) + { + _debugSphere = QSBCore.DebugAssetBundle.LoadAsset("Assets/Prefabs/Sphere.prefab"); + } + + if (_debugCube == null) + { + _debugCube = QSBCore.DebugAssetBundle.LoadAsset("Assets/Prefabs/Cube.prefab"); + } + + if (_debugCapsule == null) + { + _debugCapsule = QSBCore.DebugAssetBundle.LoadAsset("Assets/Prefabs/Capsule.prefab"); + } + + foreach (var quantumObject in QSBWorldSync.GetWorldObjects()) + { + foreach (var shape in quantumObject.GetAttachedShapes()) + { + if (shape is BoxShape boxShape) + { + var newCube = Instantiate(_debugCube); + newCube.transform.parent = shape.transform; + newCube.transform.localPosition = Vector3.zero; + newCube.transform.localRotation = Quaternion.Euler(0, 0, 0); + newCube.transform.localScale = boxShape.size; + newCube.AddComponent(); + } + else if (shape is SphereShape sphereShape) + { + var newSphere = Instantiate(_debugSphere); + newSphere.transform.parent = shape.transform; + newSphere.transform.localPosition = Vector3.zero; + newSphere.transform.localRotation = Quaternion.Euler(0, 0, 0); + newSphere.transform.localScale = Vector3.one * (sphereShape.radius * 2); + newSphere.AddComponent(); + } + else if (shape is CapsuleShape capsuleShape) + { + var newCapsule = Instantiate(_debugCapsule); + newCapsule.transform.parent = shape.transform; + newCapsule.transform.localPosition = Vector3.zero; + newCapsule.transform.localRotation = Quaternion.Euler(0, 0, 0); + newCapsule.transform.localScale = new Vector3(capsuleShape.radius * 2, capsuleShape.height, capsuleShape.radius * 2); + newCapsule.AddComponent(); + } + } + } + } + else + { + foreach (var quantumObject in QSBWorldSync.GetWorldObjects()) + { + foreach (var shape in quantumObject.GetAttachedShapes()) + { + var debugShape = shape.GetComponentInChildren(); + if (debugShape) + { + Destroy(debugShape.gameObject); + } + } + } + } + } + + #endregion } -} \ No newline at end of file +} diff --git a/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs b/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs index 66c4b9a8..01cf5a7c 100644 --- a/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs +++ b/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs @@ -38,57 +38,6 @@ namespace QSB.QuantumSync.WorldObjects public override void Init() { - if (QSBCore.ShowQuantumVisibilityObjects) - { - var debugBundle = QSBCore.DebugAssetBundle; - var sphere = debugBundle.LoadAsset("Assets/Prefabs/Sphere.prefab"); - var cube = debugBundle.LoadAsset("Assets/Prefabs/Cube.prefab"); - var capsule = debugBundle.LoadAsset("Assets/Prefabs/Capsule.prefab"); - - if (cube == null) - { - DebugLog.DebugWrite($"CUBE IS NULL"); - } - - if (sphere == null) - { - DebugLog.DebugWrite($"SPHERE IS NULL"); - } - - if (capsule == null) - { - DebugLog.DebugWrite($"CAPSULE IS NULL"); - } - - foreach (var shape in GetAttachedShapes()) - { - if (shape is BoxShape boxShape) - { - var newCube = Object.Instantiate(cube); - newCube.transform.parent = shape.transform; - newCube.transform.localPosition = Vector3.zero; - newCube.transform.localRotation = Quaternion.Euler(0, 0, 0); - newCube.transform.localScale = boxShape.size; - } - else if (shape is SphereShape sphereShape) - { - var newSphere = Object.Instantiate(sphere); - newSphere.transform.parent = shape.transform; - newSphere.transform.localPosition = Vector3.zero; - newSphere.transform.localRotation = Quaternion.Euler(0, 0, 0); - newSphere.transform.localScale = Vector3.one * (sphereShape.radius * 2); - } - else if (shape is CapsuleShape capsuleShape) - { - var newCapsule = Object.Instantiate(capsule); - newCapsule.transform.parent = shape.transform; - newCapsule.transform.localPosition = Vector3.zero; - newCapsule.transform.localRotation = Quaternion.Euler(0, 0, 0); - newCapsule.transform.localScale = new Vector3(capsuleShape.radius * 2, capsuleShape.height, capsuleShape.radius * 2); - } - } - } - StartDelayedReady(); QSBCore.UnityEvents.FireInNUpdates(LateInit, 5); } diff --git a/QSB/SaveSync/Messages/GameStateMessage.cs b/QSB/SaveSync/Messages/GameStateMessage.cs index 102c6573..2c0988dd 100644 --- a/QSB/SaveSync/Messages/GameStateMessage.cs +++ b/QSB/SaveSync/Messages/GameStateMessage.cs @@ -22,7 +22,7 @@ namespace QSB.SaveSync.Messages public GameStateMessage(uint toId) { To = toId; - var gameSave = StandaloneProfileManager.SharedInstance.currentProfileGameSave; + var gameSave = PlayerData._currentGameSave; WarpedToTheEye = gameSave.warpedToTheEye; SecondsRemainingOnWarp = gameSave.secondsRemainingOnWarp; LaunchCodesGiven = PlayerData.KnowsLaunchCodes(); @@ -89,7 +89,7 @@ namespace QSB.SaveSync.Messages PlayerData.ResetGame(); - var gameSave = StandaloneProfileManager.SharedInstance.currentProfileGameSave; + var gameSave = PlayerData._currentGameSave; gameSave.loopCount = LoopCount; gameSave.knownFrequencies = KnownFrequencies; gameSave.knownSignals = KnownSignals; diff --git a/QSB/SaveSync/Messages/RequestGameStateMessage.cs b/QSB/SaveSync/Messages/RequestGameStateMessage.cs index e8427a1f..c0223096 100644 --- a/QSB/SaveSync/Messages/RequestGameStateMessage.cs +++ b/QSB/SaveSync/Messages/RequestGameStateMessage.cs @@ -16,7 +16,7 @@ namespace QSB.SaveSync.Messages { new GameStateMessage(From).Send(); - var gameSave = StandaloneProfileManager.SharedInstance.currentProfileGameSave; + var gameSave = PlayerData._currentGameSave; var factSaves = gameSave.shipLogFactSaves; foreach (var item in factSaves) diff --git a/QSB/ShipSync/TransformSync/ShipTransformSync.cs b/QSB/ShipSync/TransformSync/ShipTransformSync.cs index 9876dbc2..770110b7 100644 --- a/QSB/ShipSync/TransformSync/ShipTransformSync.cs +++ b/QSB/ShipSync/TransformSync/ShipTransformSync.cs @@ -15,9 +15,9 @@ namespace QSB.ShipSync.TransformSync protected override bool IsReady => Locator.GetShipBody() != null; - public override void Start() + public override void OnStartClient() { - base.Start(); + base.OnStartClient(); LocalInstance = this; } @@ -31,8 +31,7 @@ namespace QSB.ShipSync.TransformSync protected override void ApplyToAttached() { ApplyToSector(); - - if (ReferenceTransform == null || transform.position == Vector3.zero) + if (!ReferenceTransform) { return; } diff --git a/QSB/Syncs/Sectored/BaseSectoredSync.cs b/QSB/Syncs/Sectored/BaseSectoredSync.cs index 37daa440..1c55d4ed 100644 --- a/QSB/Syncs/Sectored/BaseSectoredSync.cs +++ b/QSB/Syncs/Sectored/BaseSectoredSync.cs @@ -14,16 +14,16 @@ namespace QSB.Syncs.Sectored private int _sectorId = -1; - public override void Start() + public override void OnStartClient() { SectorSync = gameObject.AddComponent(); QSBSectorManager.Instance.TransformSyncs.Add(this); - base.Start(); + base.OnStartClient(); } - protected override void OnDestroy() + public override void OnStopClient() { - base.OnDestroy(); + base.OnStopClient(); QSBSectorManager.Instance.TransformSyncs.Remove(this); Destroy(SectorSync); } @@ -48,14 +48,7 @@ namespace QSB.Syncs.Sectored protected void GetFromSector() { - if (ReferenceSector != null) - { - _sectorId = ReferenceSector.ObjectId; - } - else - { - _sectorId = -1; - } + _sectorId = ReferenceSector?.ObjectId ?? -1; } protected void ApplyToSector() diff --git a/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs b/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs index 9c806564..c41d1bef 100644 --- a/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs +++ b/QSB/Syncs/Sectored/Rigidbodies/SectoredRigidbodySync.cs @@ -50,28 +50,21 @@ namespace QSB.Syncs.Sectored.Rigidbodies protected override void GetFromAttached() { GetFromSector(); + if (!ReferenceTransform) + { + return; + } - if (ReferenceTransform != null) - { - transform.position = ReferenceTransform.ToRelPos(AttachedRigidbody.GetPosition()); - transform.rotation = ReferenceTransform.ToRelRot(AttachedRigidbody.GetRotation()); - _relativeVelocity = ReferenceTransform.GetAttachedOWRigidbody().ToRelVel(AttachedRigidbody.GetVelocity(), AttachedRigidbody.GetPosition()); - _relativeAngularVelocity = ReferenceTransform.GetAttachedOWRigidbody().ToRelAngVel(AttachedRigidbody.GetAngularVelocity()); - } - else - { - transform.position = Vector3.zero; - transform.rotation = Quaternion.identity; - _relativeVelocity = Vector3.zero; - _relativeAngularVelocity = Vector3.zero; - } + transform.position = ReferenceTransform.ToRelPos(AttachedRigidbody.GetPosition()); + transform.rotation = ReferenceTransform.ToRelRot(AttachedRigidbody.GetRotation()); + _relativeVelocity = ReferenceTransform.GetAttachedOWRigidbody().ToRelVel(AttachedRigidbody.GetVelocity(), AttachedRigidbody.GetPosition()); + _relativeAngularVelocity = ReferenceTransform.GetAttachedOWRigidbody().ToRelAngVel(AttachedRigidbody.GetAngularVelocity()); } protected override void ApplyToAttached() { ApplyToSector(); - - if (ReferenceTransform == null || transform.position == Vector3.zero) + if (!ReferenceTransform) { return; } diff --git a/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs b/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs index c6fe7eb4..0f296acb 100644 --- a/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs +++ b/QSB/Syncs/Sectored/Transforms/SectoredTransformSync.cs @@ -1,5 +1,4 @@ -using Mirror; -using QSB.Utility; +using QSB.Utility; using UnityEngine; namespace QSB.Syncs.Sectored.Transforms @@ -12,36 +11,22 @@ namespace QSB.Syncs.Sectored.Transforms protected override Transform InitAttachedTransform() => hasAuthority ? InitLocalTransform() : InitRemoteTransform(); - protected override void Deserialize(NetworkReader reader, bool initialState) - { - base.Deserialize(reader, initialState); - - if (transform.position == Vector3.zero) - { - } - } - protected override void GetFromAttached() { GetFromSector(); + if (!ReferenceTransform) + { + return; + } - if (ReferenceTransform != null) - { - transform.position = ReferenceTransform.ToRelPos(AttachedTransform.position); - transform.rotation = ReferenceTransform.ToRelRot(AttachedTransform.rotation); - } - else - { - transform.position = Vector3.zero; - transform.rotation = Quaternion.identity; - } + transform.position = ReferenceTransform.ToRelPos(AttachedTransform.position); + transform.rotation = ReferenceTransform.ToRelRot(AttachedTransform.rotation); } protected override void ApplyToAttached() { ApplyToSector(); - - if (ReferenceTransform == null || transform.position == Vector3.zero) + if (!ReferenceTransform) { return; } diff --git a/QSB/Syncs/SyncBase.cs b/QSB/Syncs/SyncBase.cs index 0c14aaeb..390b95c3 100644 --- a/QSB/Syncs/SyncBase.cs +++ b/QSB/Syncs/SyncBase.cs @@ -1,7 +1,6 @@ using Mirror; using OWML.Common; using QSB.Player; -using QSB.Player.TransformSync; using QSB.Utility; using QSB.WorldSync; using System; @@ -26,9 +25,9 @@ namespace QSB.Syncs { if (_player == null) { - DebugLog.ToConsole("Error - trying to get SyncBase.Player before Start has been called! " + DebugLog.ToConsole($"Error - trying to get SyncBase.Player for {netId} before Start has been called! " + "this really should not be happening!\n" - + $"{Environment.StackTrace}", + + Environment.StackTrace, MessageType.Error); } @@ -54,7 +53,12 @@ namespace QSB.Syncs if (IsPlayerObject) { - if (!Player.IsReady && this is not PlayerTransformSync) + if (_player == null) + { + return false; + } + + if (!isLocalPlayer && !Player.IsReady) { return false; } @@ -66,7 +70,6 @@ namespace QSB.Syncs protected abstract bool IsReady { get; } protected abstract bool UseInterpolation { get; } - protected virtual bool AllowDisabledAttachedObject => false; protected abstract bool AllowNullReferenceTransform { get; } protected virtual bool IsPlayerObject => false; protected virtual bool OnlyApplyOnDeserialize => false; @@ -88,7 +91,7 @@ namespace QSB.Syncs protected abstract void GetFromAttached(); protected abstract void ApplyToAttached(); - public virtual void Start() + public override void OnStartClient() { if (IsPlayerObject) { @@ -103,7 +106,7 @@ namespace QSB.Syncs QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } - protected virtual void OnDestroy() + public override void OnStopClient() { if (IsPlayerObject && !hasAuthority && AttachedTransform != null) { @@ -169,12 +172,11 @@ namespace QSB.Syncs if (AttachedTransform == null) { - DebugLog.ToConsole($"Warning - AttachedObject {LogName} is null.", MessageType.Warning); - IsInitialized = false; + DebugLog.ToConsole($"Error - AttachedObject {LogName} is null!", MessageType.Error); return; } - if (!AttachedTransform.gameObject.activeInHierarchy && !AllowDisabledAttachedObject) + if (!AttachedTransform.gameObject.activeInHierarchy) { return; } @@ -185,16 +187,16 @@ namespace QSB.Syncs return; } - if (ReferenceTransform != null && ReferenceTransform.position == Vector3.zero && ReferenceTransform != Locator.GetRootTransform()) - { - DebugLog.ToConsole($"Warning - {LogName}'s ReferenceTransform is at (0,0,0). ReferenceTransform:{ReferenceTransform.name}, AttachedObject:{AttachedTransform.name}", MessageType.Warning); - } - if (ReferenceTransform == Locator.GetRootTransform()) { return; } + if (ReferenceTransform != null && ReferenceTransform.position == Vector3.zero) + { + DebugLog.ToConsole($"Warning - {LogName}'s ReferenceTransform is at (0,0,0). ReferenceTransform:{ReferenceTransform.name}, AttachedObject:{AttachedTransform.name}", MessageType.Warning); + } + if (UseInterpolation) { SmoothPosition = SmartSmoothDamp(SmoothPosition, transform.position); diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 8bb8b663..c6e96e45 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -121,7 +121,7 @@ namespace QSB.TimeSync } else { - if (!QSBCore.SkipTitleScreen) + if (!QSBCore.AvoidTimeSync) { WakeUpOrSleep(); } diff --git a/QSB/Tools/ProbeLauncherTool/ProbeLauncherManager.cs b/QSB/Tools/ProbeLauncherTool/ProbeLauncherManager.cs index 7417773e..2005f1f8 100644 --- a/QSB/Tools/ProbeLauncherTool/ProbeLauncherManager.cs +++ b/QSB/Tools/ProbeLauncherTool/ProbeLauncherManager.cs @@ -1,5 +1,6 @@ using QSB.Tools.ProbeLauncherTool.WorldObjects; using QSB.WorldSync; +using System.Linq; namespace QSB.Tools.ProbeLauncherTool { @@ -8,6 +9,12 @@ namespace QSB.Tools.ProbeLauncherTool public override WorldObjectType WorldObjectType => WorldObjectType.Both; public override void BuildWorldObjects(OWScene scene) - => QSBWorldSync.Init(typeof(PlayerProbeLauncher)); + { + QSBWorldSync.Init(typeof(PlayerProbeLauncher)); + QSBWorldSync.Init(new[] + { + QSBWorldSync.GetUnityObjects().First().GetShipProbeLauncher() + }); + } } } \ No newline at end of file diff --git a/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs b/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs index 1c533f73..e61516d3 100644 --- a/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs +++ b/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs @@ -11,7 +11,6 @@ namespace QSB.Tools.ProbeTool.TransformSync { protected override float DistanceLeeway => 10f; protected override bool UseInterpolation => true; - protected override bool AllowDisabledAttachedObject => true; protected override bool IsPlayerObject => true; public static PlayerProbeSync LocalInstance { get; private set; } @@ -63,37 +62,6 @@ namespace QSB.Tools.ProbeTool.TransformSync return body; } - protected override void GetFromAttached() - { - if (AttachedTransform.gameObject.activeInHierarchy) - { - base.GetFromAttached(); - return; - } - - var probeOWRigidbody = Locator.GetProbe().GetOWRigidbody(); - if (probeOWRigidbody == null) - { - DebugLog.ToConsole($"Warning - Could not find OWRigidbody of local probe.", MessageType.Warning); - } - - var probeLauncher = Player.LocalProbeLauncher; - // TODO : make this sync to the *active* probe launcher's _launcherTransform - var launcherTransform = probeLauncher._launcherTransform; - probeOWRigidbody.SetPosition(launcherTransform.position); - probeOWRigidbody.SetRotation(launcherTransform.rotation); - - base.GetFromAttached(); - - var currentReferenceSector = ReferenceSector; - var playerReferenceSector = Player.TransformSync.ReferenceSector; - - if (currentReferenceSector != playerReferenceSector) - { - SetReferenceSector(playerReferenceSector); - } - } - protected override bool IsReady => AttachedTransform != null || Locator.GetProbe() != null; } } diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 4b6608d0..d1b59e55 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -31,16 +31,15 @@ namespace QSB.Utility private void DamageShipElectricalSystem() => ShipManager.Instance.ShipElectricalComponent.SetDamaged(true); - private void Awake() - { - if (!QSBCore.DebugMode) - { - Destroy(this); - } - } + private void Awake() => enabled = QSBCore.DebugMode; public void Update() { + if (!Keyboard.current[Key.Q].isPressed) + { + return; + } + /* * 1 - Warp to first non local player * 2 - Set time flowing @@ -51,7 +50,7 @@ namespace QSB.Utility * 7 - Warp to vessel * 8 - Place warp core into vessel * 9 - Load eye scene - * 0 - + * 0 - Die */ if (Keyboard.current[Key.Numpad1].wasPressedThisFrame) @@ -115,6 +114,11 @@ namespace QSB.Utility LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite); } } + + if (Keyboard.current[Key.Numpad0].wasPressedThisFrame) + { + Locator.GetDeathManager().KillPlayer(DeathType.Default); + } } } } diff --git a/QSB/Utility/DebugCameraSettings.cs b/QSB/Utility/DebugCameraSettings.cs index d3f86e1f..30776767 100644 --- a/QSB/Utility/DebugCameraSettings.cs +++ b/QSB/Utility/DebugCameraSettings.cs @@ -4,16 +4,29 @@ namespace QSB.Utility { internal class DebugCameraSettings : MonoBehaviour { - void Start() + public static void UpdateFromDebugSetting() { if (QSBCore.GreySkybox) { QSBSceneManager.OnSceneLoaded += OnSceneLoaded; Camera.main.backgroundColor = Color.gray; } + else + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + Camera.main.backgroundColor = _origColor; + } } - private void OnSceneLoaded(OWScene arg1, OWScene arg2, bool arg3) + private static Color _origColor; + + private void Start() + { + _origColor = Camera.main.backgroundColor; + UpdateFromDebugSetting(); + } + + private static void OnSceneLoaded(OWScene arg1, OWScene arg2, bool arg3) => Camera.main.backgroundColor = Color.gray; } } diff --git a/QSB/Utility/DebugGUI.cs b/QSB/Utility/DebugGUI.cs index ba9b73ec..b8ed780d 100644 --- a/QSB/Utility/DebugGUI.cs +++ b/QSB/Utility/DebugGUI.cs @@ -32,11 +32,7 @@ namespace QSB.Utility private void Awake() { - if (!QSBCore.DebugMode) - { - Destroy(this); - return; - } + enabled = QSBCore.DebugMode; guiGUIStyle.fontSize = 9; } diff --git a/QSB/Utility/QSBNetworkBehaviour.cs b/QSB/Utility/QSBNetworkBehaviour.cs index 696a18ee..72f5a9ca 100644 --- a/QSB/Utility/QSBNetworkBehaviour.cs +++ b/QSB/Utility/QSBNetworkBehaviour.cs @@ -12,20 +12,19 @@ namespace QSB.Utility public sealed override bool OnSerialize(NetworkWriter writer, bool initialState) { - var changed = base.OnSerialize(writer, initialState); - if (initialState && isServer) + if (initialState) { Serialize(writer, true); UpdatePrevData(); + return true; } - return changed; + return false; } public sealed override void OnDeserialize(NetworkReader reader, bool initialState) { - base.OnDeserialize(reader, initialState); - if (initialState && !isServer) + if (initialState) { UpdatePrevData(); Deserialize(reader, true); diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 02bd4d51..b563c939 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -26,8 +26,6 @@ namespace QSB.WorldSync public static void BuildWorldObjects(OWScene scene) { - GameInit(); - if (PlayerTransformSync.LocalInstance == null) { DebugLog.ToConsole($"Warning - Tried to build WorldObjects when LocalPlayer is not ready! Building when ready...", MessageType.Warning); @@ -35,6 +33,8 @@ namespace QSB.WorldSync return; } + GameInit(); + DoBuild(scene); } @@ -57,7 +57,7 @@ namespace QSB.WorldSync } catch (Exception ex) { - DebugLog.ToConsole($"Exception - Exception when trying to build WorldObjects of manager {manager.GetType().Name} : {ex.Message} Stacktrace :\r\n{ex.StackTrace}", MessageType.Error); + DebugLog.ToConsole($"Exception - Exception when trying to build WorldObjects of manager {manager.GetType().Name} : {ex}", MessageType.Error); } } @@ -78,6 +78,11 @@ namespace QSB.WorldSync public static void RemoveWorldObjects() { + if (!AllObjectsReady) + { + return; + } + GameReset(); AllObjectsAdded = false; @@ -91,7 +96,7 @@ namespace QSB.WorldSync } catch (Exception e) { - DebugLog.ToConsole($"Error - Exception in OnRemoval() for {item.GetType()}. Message : {e.Message}, Stack trace : {e.StackTrace}", MessageType.Error); + DebugLog.ToConsole($"Error - Exception in OnRemoval() for {item.GetType()}. {e}", MessageType.Error); } } diff --git a/QSB/WorldSync/WorldObject.cs b/QSB/WorldSync/WorldObject.cs index bff9a4c9..082cf670 100644 --- a/QSB/WorldSync/WorldObject.cs +++ b/QSB/WorldSync/WorldObject.cs @@ -1,5 +1,4 @@ -using QSB.Player; -using UnityEngine; +using UnityEngine; namespace QSB.WorldSync { @@ -9,7 +8,7 @@ namespace QSB.WorldSync public int ObjectId { get; init; } public T AttachedObject { get; init; } public string Name => AttachedObject == null ? "" : AttachedObject.name; - public string LogName => $"{QSBPlayerManager.LocalPlayerId}.{ObjectId}:{GetType().Name} ({Name})"; + public string LogName => $"{ObjectId}:{GetType().Name} ({Name})"; public virtual void Init() { } public virtual void OnRemoval() { } diff --git a/QSB/debugsettings.json b/QSB/debugsettings.json index b26280ff..ce6eeea8 100644 --- a/QSB/debugsettings.json +++ b/QSB/debugsettings.json @@ -1,8 +1,8 @@ { - "debugMode": true, - "drawLines": true, - "showQuantumVisibilityObjects": true, - "showDebugLabels": true, + "debugMode": false, + "drawLines": false, + "showQuantumVisibilityObjects": false, + "showDebugLabels": false, "avoidTimeSync": false, "skipTitleScreen": true, "greySkybox": true